Clang Project

clang_source_code/test/AST/ast-dump-openmp-target-teams-distribute-parallel-for-simd.c
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s
2
3void test_one(int x) {
4#pragma omp target teams distribute parallel for simd
5  for (int i = 0; i < x; i++)
6    ;
7}
8
9void test_two(int x, int y) {
10#pragma omp target teams distribute parallel for simd
11  for (int i = 0; i < x; i++)
12    for (int i = 0; i < y; i++)
13      ;
14}
15
16void test_three(int x, int y) {
17#pragma omp target teams distribute parallel for simd collapse(1)
18  for (int i = 0; i < x; i++)
19    for (int i = 0; i < y; i++)
20      ;
21}
22
23void test_four(int x, int y) {
24#pragma omp target teams distribute parallel for simd collapse(2)
25  for (int i = 0; i < x; i++)
26    for (int i = 0; i < y; i++)
27      ;
28}
29
30void test_five(int x, int y, int z) {
31#pragma omp target teams distribute parallel for simd collapse(2)
32  for (int i = 0; i < x; i++)
33    for (int i = 0; i < y; i++)
34      for (int i = 0; i < z; i++)
35        ;
36}
37
38// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
39// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:3:1, line:7:1> line:3:6 test_one 'void (int)'
40// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
41// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:22, line:7:1>
42// CHECK-NEXT: |   `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:4:9, col:54>
43// CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
44// CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:5:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
45// CHECK-NEXT: |     `-CapturedStmt {{.*}} <col:3, line:6:5>
46// CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
47// CHECK-NEXT: |       | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
48// CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
49// CHECK-NEXT: |       | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
50// CHECK-NEXT: |       | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
51// CHECK-NEXT: |       | | | | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
52// CHECK-NEXT: |       | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
53// CHECK-NEXT: |       | | | | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
54// CHECK-NEXT: |       | | | | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
55// CHECK-NEXT: |       | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
56// CHECK-NEXT: |       | | | | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
57// CHECK-NEXT: |       | | | | | | | | |-<<<NULL>>>
58// CHECK-NEXT: |       | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
59// CHECK-NEXT: |       | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
60// CHECK-NEXT: |       | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
61// CHECK-NEXT: |       | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
62// CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
63// CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
64// CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
65// CHECK-NEXT: |       | | | | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
66// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
67// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
68// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
69// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
70// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
71// CHECK-NEXT: |       | | | | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
72// CHECK-NEXT: |       | | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
73// CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
74// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
75// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
76// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
77// CHECK-NEXT: |       | | | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
78// CHECK-NEXT: |       | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
79// CHECK-NEXT: |       | | | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
80// CHECK-NEXT: |       | | | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
81// CHECK-NEXT: |       | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
82// CHECK-NEXT: |       | | | | |   |-ForStmt {{.*}} <col:3, line:6:5>
83// CHECK-NEXT: |       | | | | |   | |-DeclStmt {{.*}} <line:5:8, col:17>
84// CHECK-NEXT: |       | | | | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
85// CHECK-NEXT: |       | | | | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
86// CHECK-NEXT: |       | | | | |   | |-<<<NULL>>>
87// CHECK-NEXT: |       | | | | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
88// CHECK-NEXT: |       | | | | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
89// CHECK-NEXT: |       | | | | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
90// CHECK-NEXT: |       | | | | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
91// CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
92// CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
93// CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
94// CHECK-NEXT: |       | | | | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
95// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
96// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
97// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
98// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
99// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
100// CHECK-NEXT: |       | | | | |   `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
101// CHECK-NEXT: |       | | | | |     `-IntegerLiteral {{.*}} <col:16> 'int' 0
102// CHECK-NEXT: |       | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
103// CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
104// CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
105// CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
106// CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
107// CHECK-NEXT: |       | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
108// CHECK-NEXT: |       | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
109// CHECK-NEXT: |       | | |   |-CapturedStmt {{.*}} <col:3, line:6:5>
110// CHECK-NEXT: |       | | |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
111// CHECK-NEXT: |       | | |   | | |-ForStmt {{.*}} <line:5:3, line:6:5>
112// CHECK-NEXT: |       | | |   | | | |-DeclStmt {{.*}} <line:5:8, col:17>
113// CHECK-NEXT: |       | | |   | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
114// CHECK-NEXT: |       | | |   | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
115// CHECK-NEXT: |       | | |   | | | |-<<<NULL>>>
116// CHECK-NEXT: |       | | |   | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
117// CHECK-NEXT: |       | | |   | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
118// CHECK-NEXT: |       | | |   | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
119// CHECK-NEXT: |       | | |   | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
120// CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
121// CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
122// CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
123// CHECK-NEXT: |       | | |   | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
124// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
125// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
126// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
127// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
128// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
129// CHECK-NEXT: |       | | |   | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
130// CHECK-NEXT: |       | | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
131// CHECK-NEXT: |       | | |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
132// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
133// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
134// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
135// CHECK-NEXT: |       | | |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
136// CHECK-NEXT: |       | | |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
137// CHECK-NEXT: |       | | |   | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
138// CHECK-NEXT: |       | | |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
139// CHECK-NEXT: |       | | |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
140// CHECK-NEXT: |       | | |     |-ForStmt {{.*}} <col:3, line:6:5>
141// CHECK-NEXT: |       | | |     | |-DeclStmt {{.*}} <line:5:8, col:17>
142// CHECK-NEXT: |       | | |     | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
143// CHECK-NEXT: |       | | |     | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
144// CHECK-NEXT: |       | | |     | |-<<<NULL>>>
145// CHECK-NEXT: |       | | |     | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
146// CHECK-NEXT: |       | | |     | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
147// CHECK-NEXT: |       | | |     | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
148// CHECK-NEXT: |       | | |     | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
149// CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
150// CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
151// CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
152// CHECK-NEXT: |       | | |     | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
153// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
154// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
155// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
156// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
157// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
158// CHECK-NEXT: |       | | |     `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
159// CHECK-NEXT: |       | | |       `-IntegerLiteral {{.*}} <col:16> 'int' 0
160// CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
161// CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
162// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int'
163// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
164// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .privates. 'void *const restrict'
165// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
166// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .task_t. 'void *const'
167// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
168// CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
169// CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
170// CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
171// CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
172// CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
173// CHECK-NEXT: |       |   |-CapturedStmt {{.*}} <col:3, line:6:5>
174// CHECK-NEXT: |       |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
175// CHECK-NEXT: |       |   | | |-CapturedStmt {{.*}} <line:5:3, line:6:5>
176// CHECK-NEXT: |       |   | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
177// CHECK-NEXT: |       |   | | | | |-ForStmt {{.*}} <line:5:3, line:6:5>
178// CHECK-NEXT: |       |   | | | | | |-DeclStmt {{.*}} <line:5:8, col:17>
179// CHECK-NEXT: |       |   | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
180// CHECK-NEXT: |       |   | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
181// CHECK-NEXT: |       |   | | | | | |-<<<NULL>>>
182// CHECK-NEXT: |       |   | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
183// CHECK-NEXT: |       |   | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
184// CHECK-NEXT: |       |   | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
185// CHECK-NEXT: |       |   | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
186// CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
187// CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
188// CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
189// CHECK-NEXT: |       |   | | | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
190// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
191// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
192// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
193// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
194// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
195// CHECK-NEXT: |       |   | | | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
196// CHECK-NEXT: |       |   | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
197// CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
198// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
199// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
200// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
201// CHECK-NEXT: |       |   | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
202// CHECK-NEXT: |       |   | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
203// CHECK-NEXT: |       |   | | | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
204// CHECK-NEXT: |       |   | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
205// CHECK-NEXT: |       |   | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
206// CHECK-NEXT: |       |   | |   |-ForStmt {{.*}} <col:3, line:6:5>
207// CHECK-NEXT: |       |   | |   | |-DeclStmt {{.*}} <line:5:8, col:17>
208// CHECK-NEXT: |       |   | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
209// CHECK-NEXT: |       |   | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
210// CHECK-NEXT: |       |   | |   | |-<<<NULL>>>
211// CHECK-NEXT: |       |   | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
212// CHECK-NEXT: |       |   | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
213// CHECK-NEXT: |       |   | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
214// CHECK-NEXT: |       |   | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
215// CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
216// CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
217// CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
218// CHECK-NEXT: |       |   | |   | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
219// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
220// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
221// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
222// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
223// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
224// CHECK-NEXT: |       |   | |   `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
225// CHECK-NEXT: |       |   | |     `-IntegerLiteral {{.*}} <col:16> 'int' 0
226// CHECK-NEXT: |       |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
227// CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
228// CHECK-NEXT: |       |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
229// CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
230// CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
231// CHECK-NEXT: |       |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
232// CHECK-NEXT: |       |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
233// CHECK-NEXT: |       |     |-CapturedStmt {{.*}} <col:3, line:6:5>
234// CHECK-NEXT: |       |     | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
235// CHECK-NEXT: |       |     | | |-ForStmt {{.*}} <line:5:3, line:6:5>
236// CHECK-NEXT: |       |     | | | |-DeclStmt {{.*}} <line:5:8, col:17>
237// CHECK-NEXT: |       |     | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
238// CHECK-NEXT: |       |     | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
239// CHECK-NEXT: |       |     | | | |-<<<NULL>>>
240// CHECK-NEXT: |       |     | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
241// CHECK-NEXT: |       |     | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
242// CHECK-NEXT: |       |     | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
243// CHECK-NEXT: |       |     | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
244// CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
245// CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
246// CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
247// CHECK-NEXT: |       |     | | | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
248// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
249// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
250// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
251// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
252// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
253// CHECK-NEXT: |       |     | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
254// CHECK-NEXT: |       |     | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
255// CHECK-NEXT: |       |     | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
256// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
257// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
258// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
259// CHECK-NEXT: |       |     |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
260// CHECK-NEXT: |       |     | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
261// CHECK-NEXT: |       |     | `-FieldDecl {{.*}} <line:5:23> col:23 implicit 'int'
262// CHECK-NEXT: |       |     |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
263// CHECK-NEXT: |       |     `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
264// CHECK-NEXT: |       |       |-ForStmt {{.*}} <col:3, line:6:5>
265// CHECK-NEXT: |       |       | |-DeclStmt {{.*}} <line:5:8, col:17>
266// CHECK-NEXT: |       |       | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
267// CHECK-NEXT: |       |       | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
268// CHECK-NEXT: |       |       | |-<<<NULL>>>
269// CHECK-NEXT: |       |       | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
270// CHECK-NEXT: |       |       | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
271// CHECK-NEXT: |       |       | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
272// CHECK-NEXT: |       |       | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
273// CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
274// CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
275// CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
276// CHECK-NEXT: |       |       | `-NullStmt {{.*}} <line:6:5> openmp_structured_block
277// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:4:9> col:9 implicit .global_tid. 'const int *const restrict'
278// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
279// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
280// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
281// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:4:9) *const restrict'
282// CHECK-NEXT: |       |       `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit
283// CHECK-NEXT: |       |         `-IntegerLiteral {{.*}} <col:16> 'int' 0
284// CHECK-NEXT: |       `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
285// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'
286// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
287// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
288// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>
289// CHECK-NEXT: |   `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:10:9, col:54>
290// CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
291// CHECK-NEXT: |     | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
292// CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
293// CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:11:3, line:13:7>
294// CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
295// CHECK-NEXT: |       | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
296// CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
297// CHECK-NEXT: |       | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
298// CHECK-NEXT: |       | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
299// CHECK-NEXT: |       | | | | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
300// CHECK-NEXT: |       | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
301// CHECK-NEXT: |       | | | | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
302// CHECK-NEXT: |       | | | | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
303// CHECK-NEXT: |       | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
304// CHECK-NEXT: |       | | | | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
305// CHECK-NEXT: |       | | | | | | | | |-<<<NULL>>>
306// CHECK-NEXT: |       | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
307// CHECK-NEXT: |       | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
308// CHECK-NEXT: |       | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
309// CHECK-NEXT: |       | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
310// CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
311// CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
312// CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
313// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
314// CHECK-NEXT: |       | | | | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
315// CHECK-NEXT: |       | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
316// CHECK-NEXT: |       | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
317// CHECK-NEXT: |       | | | | | | | |   |-<<<NULL>>>
318// CHECK-NEXT: |       | | | | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
319// CHECK-NEXT: |       | | | | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
320// CHECK-NEXT: |       | | | | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
321// CHECK-NEXT: |       | | | | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
322// CHECK-NEXT: |       | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
323// CHECK-NEXT: |       | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
324// CHECK-NEXT: |       | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
325// CHECK-NEXT: |       | | | | | | | |   `-NullStmt {{.*}} <line:13:7>
326// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
327// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
328// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
329// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
330// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
331// CHECK-NEXT: |       | | | | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
332// CHECK-NEXT: |       | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
333// CHECK-NEXT: |       | | | | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
334// CHECK-NEXT: |       | | | | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
335// CHECK-NEXT: |       | | | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
336// CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
337// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
338// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
339// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
340// CHECK-NEXT: |       | | | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
341// CHECK-NEXT: |       | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
342// CHECK-NEXT: |       | | | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
343// CHECK-NEXT: |       | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
344// CHECK-NEXT: |       | | | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
345// CHECK-NEXT: |       | | | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
346// CHECK-NEXT: |       | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
347// CHECK-NEXT: |       | | | | |   |-ForStmt {{.*}} <line:11:3, line:13:7>
348// CHECK-NEXT: |       | | | | |   | |-DeclStmt {{.*}} <line:11:8, col:17>
349// CHECK-NEXT: |       | | | | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
350// CHECK-NEXT: |       | | | | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
351// CHECK-NEXT: |       | | | | |   | |-<<<NULL>>>
352// CHECK-NEXT: |       | | | | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
353// CHECK-NEXT: |       | | | | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
354// CHECK-NEXT: |       | | | | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
355// CHECK-NEXT: |       | | | | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
356// CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
357// CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
358// CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
359// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
360// CHECK-NEXT: |       | | | | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
361// CHECK-NEXT: |       | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
362// CHECK-NEXT: |       | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
363// CHECK-NEXT: |       | | | | |   |   |-<<<NULL>>>
364// CHECK-NEXT: |       | | | | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
365// CHECK-NEXT: |       | | | | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
366// CHECK-NEXT: |       | | | | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
367// CHECK-NEXT: |       | | | | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
368// CHECK-NEXT: |       | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
369// CHECK-NEXT: |       | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
370// CHECK-NEXT: |       | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
371// CHECK-NEXT: |       | | | | |   |   `-NullStmt {{.*}} <line:13:7>
372// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
373// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
374// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
375// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
376// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
377// CHECK-NEXT: |       | | | | |   |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
378// CHECK-NEXT: |       | | | | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
379// CHECK-NEXT: |       | | | | |   `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
380// CHECK-NEXT: |       | | | | |     `-IntegerLiteral {{.*}} <col:18> 'int' 0
381// CHECK-NEXT: |       | | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
382// CHECK-NEXT: |       | | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
383// CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
384// CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
385// CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
386// CHECK-NEXT: |       | | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
387// CHECK-NEXT: |       | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
388// CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
389// CHECK-NEXT: |       | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
390// CHECK-NEXT: |       | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
391// CHECK-NEXT: |       | | |   |-CapturedStmt {{.*}} <line:11:3, line:13:7>
392// CHECK-NEXT: |       | | |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
393// CHECK-NEXT: |       | | |   | | |-ForStmt {{.*}} <line:11:3, line:13:7>
394// CHECK-NEXT: |       | | |   | | | |-DeclStmt {{.*}} <line:11:8, col:17>
395// CHECK-NEXT: |       | | |   | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
396// CHECK-NEXT: |       | | |   | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
397// CHECK-NEXT: |       | | |   | | | |-<<<NULL>>>
398// CHECK-NEXT: |       | | |   | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
399// CHECK-NEXT: |       | | |   | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
400// CHECK-NEXT: |       | | |   | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
401// CHECK-NEXT: |       | | |   | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
402// CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
403// CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
404// CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
405// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
406// CHECK-NEXT: |       | | |   | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
407// CHECK-NEXT: |       | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
408// CHECK-NEXT: |       | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
409// CHECK-NEXT: |       | | |   | | |   |-<<<NULL>>>
410// CHECK-NEXT: |       | | |   | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
411// CHECK-NEXT: |       | | |   | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
412// CHECK-NEXT: |       | | |   | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
413// CHECK-NEXT: |       | | |   | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
414// CHECK-NEXT: |       | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
415// CHECK-NEXT: |       | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
416// CHECK-NEXT: |       | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
417// CHECK-NEXT: |       | | |   | | |   `-NullStmt {{.*}} <line:13:7>
418// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
419// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
420// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
421// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
422// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
423// CHECK-NEXT: |       | | |   | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
424// CHECK-NEXT: |       | | |   | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
425// CHECK-NEXT: |       | | |   | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
426// CHECK-NEXT: |       | | |   | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
427// CHECK-NEXT: |       | | |   | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
428// CHECK-NEXT: |       | | |   | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
429// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
430// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
431// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
432// CHECK-NEXT: |       | | |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
433// CHECK-NEXT: |       | | |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
434// CHECK-NEXT: |       | | |   | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
435// CHECK-NEXT: |       | | |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
436// CHECK-NEXT: |       | | |   | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
437// CHECK-NEXT: |       | | |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
438// CHECK-NEXT: |       | | |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
439// CHECK-NEXT: |       | | |     |-ForStmt {{.*}} <line:11:3, line:13:7>
440// CHECK-NEXT: |       | | |     | |-DeclStmt {{.*}} <line:11:8, col:17>
441// CHECK-NEXT: |       | | |     | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
442// CHECK-NEXT: |       | | |     | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
443// CHECK-NEXT: |       | | |     | |-<<<NULL>>>
444// CHECK-NEXT: |       | | |     | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
445// CHECK-NEXT: |       | | |     | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
446// CHECK-NEXT: |       | | |     | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
447// CHECK-NEXT: |       | | |     | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
448// CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
449// CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
450// CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
451// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
452// CHECK-NEXT: |       | | |     |   |-DeclStmt {{.*}} <line:12:10, col:19>
453// CHECK-NEXT: |       | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
454// CHECK-NEXT: |       | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
455// CHECK-NEXT: |       | | |     |   |-<<<NULL>>>
456// CHECK-NEXT: |       | | |     |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
457// CHECK-NEXT: |       | | |     |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
458// CHECK-NEXT: |       | | |     |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
459// CHECK-NEXT: |       | | |     |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
460// CHECK-NEXT: |       | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
461// CHECK-NEXT: |       | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
462// CHECK-NEXT: |       | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
463// CHECK-NEXT: |       | | |     |   `-NullStmt {{.*}} <line:13:7>
464// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
465// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
466// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
467// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
468// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
469// CHECK-NEXT: |       | | |     |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
470// CHECK-NEXT: |       | | |     | `-IntegerLiteral {{.*}} <col:16> 'int' 0
471// CHECK-NEXT: |       | | |     `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
472// CHECK-NEXT: |       | | |       `-IntegerLiteral {{.*}} <col:18> 'int' 0
473// CHECK-NEXT: |       | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
474// CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
475// CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
476// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int'
477// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
478// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .privates. 'void *const restrict'
479// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
480// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .task_t. 'void *const'
481// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
482// CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
483// CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
484// CHECK-NEXT: |       | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
485// CHECK-NEXT: |       | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
486// CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
487// CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
488// CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
489// CHECK-NEXT: |       |   |-CapturedStmt {{.*}} <line:11:3, line:13:7>
490// CHECK-NEXT: |       |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
491// CHECK-NEXT: |       |   | | |-CapturedStmt {{.*}} <line:11:3, line:13:7>
492// CHECK-NEXT: |       |   | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
493// CHECK-NEXT: |       |   | | | | |-ForStmt {{.*}} <line:11:3, line:13:7>
494// CHECK-NEXT: |       |   | | | | | |-DeclStmt {{.*}} <line:11:8, col:17>
495// CHECK-NEXT: |       |   | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
496// CHECK-NEXT: |       |   | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
497// CHECK-NEXT: |       |   | | | | | |-<<<NULL>>>
498// CHECK-NEXT: |       |   | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
499// CHECK-NEXT: |       |   | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
500// CHECK-NEXT: |       |   | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
501// CHECK-NEXT: |       |   | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
502// CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
503// CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
504// CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
505// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
506// CHECK-NEXT: |       |   | | | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
507// CHECK-NEXT: |       |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
508// CHECK-NEXT: |       |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
509// CHECK-NEXT: |       |   | | | | |   |-<<<NULL>>>
510// CHECK-NEXT: |       |   | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
511// CHECK-NEXT: |       |   | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
512// CHECK-NEXT: |       |   | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
513// CHECK-NEXT: |       |   | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
514// CHECK-NEXT: |       |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
515// CHECK-NEXT: |       |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
516// CHECK-NEXT: |       |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
517// CHECK-NEXT: |       |   | | | | |   `-NullStmt {{.*}} <line:13:7>
518// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
519// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
520// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
521// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
522// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
523// CHECK-NEXT: |       |   | | | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
524// CHECK-NEXT: |       |   | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
525// CHECK-NEXT: |       |   | | | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
526// CHECK-NEXT: |       |   | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
527// CHECK-NEXT: |       |   | | | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
528// CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
529// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
530// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
531// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
532// CHECK-NEXT: |       |   | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
533// CHECK-NEXT: |       |   | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
534// CHECK-NEXT: |       |   | | | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
535// CHECK-NEXT: |       |   | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
536// CHECK-NEXT: |       |   | | | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
537// CHECK-NEXT: |       |   | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
538// CHECK-NEXT: |       |   | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
539// CHECK-NEXT: |       |   | |   |-ForStmt {{.*}} <line:11:3, line:13:7>
540// CHECK-NEXT: |       |   | |   | |-DeclStmt {{.*}} <line:11:8, col:17>
541// CHECK-NEXT: |       |   | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
542// CHECK-NEXT: |       |   | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
543// CHECK-NEXT: |       |   | |   | |-<<<NULL>>>
544// CHECK-NEXT: |       |   | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
545// CHECK-NEXT: |       |   | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
546// CHECK-NEXT: |       |   | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
547// CHECK-NEXT: |       |   | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
548// CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
549// CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
550// CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
551// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
552// CHECK-NEXT: |       |   | |   |   |-DeclStmt {{.*}} <line:12:10, col:19>
553// CHECK-NEXT: |       |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
554// CHECK-NEXT: |       |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
555// CHECK-NEXT: |       |   | |   |   |-<<<NULL>>>
556// CHECK-NEXT: |       |   | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
557// CHECK-NEXT: |       |   | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
558// CHECK-NEXT: |       |   | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
559// CHECK-NEXT: |       |   | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
560// CHECK-NEXT: |       |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
561// CHECK-NEXT: |       |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
562// CHECK-NEXT: |       |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
563// CHECK-NEXT: |       |   | |   |   `-NullStmt {{.*}} <line:13:7>
564// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
565// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
566// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
567// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
568// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
569// CHECK-NEXT: |       |   | |   |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
570// CHECK-NEXT: |       |   | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
571// CHECK-NEXT: |       |   | |   `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
572// CHECK-NEXT: |       |   | |     `-IntegerLiteral {{.*}} <col:18> 'int' 0
573// CHECK-NEXT: |       |   | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
574// CHECK-NEXT: |       |   | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
575// CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
576// CHECK-NEXT: |       |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
577// CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
578// CHECK-NEXT: |       |   | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
579// CHECK-NEXT: |       |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
580// CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
581// CHECK-NEXT: |       |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
582// CHECK-NEXT: |       |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
583// CHECK-NEXT: |       |     |-CapturedStmt {{.*}} <line:11:3, line:13:7>
584// CHECK-NEXT: |       |     | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
585// CHECK-NEXT: |       |     | | |-ForStmt {{.*}} <line:11:3, line:13:7>
586// CHECK-NEXT: |       |     | | | |-DeclStmt {{.*}} <line:11:8, col:17>
587// CHECK-NEXT: |       |     | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
588// CHECK-NEXT: |       |     | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
589// CHECK-NEXT: |       |     | | | |-<<<NULL>>>
590// CHECK-NEXT: |       |     | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
591// CHECK-NEXT: |       |     | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
592// CHECK-NEXT: |       |     | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
593// CHECK-NEXT: |       |     | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
594// CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
595// CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
596// CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
597// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
598// CHECK-NEXT: |       |     | | |   |-DeclStmt {{.*}} <line:12:10, col:19>
599// CHECK-NEXT: |       |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
600// CHECK-NEXT: |       |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
601// CHECK-NEXT: |       |     | | |   |-<<<NULL>>>
602// CHECK-NEXT: |       |     | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
603// CHECK-NEXT: |       |     | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
604// CHECK-NEXT: |       |     | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
605// CHECK-NEXT: |       |     | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
606// CHECK-NEXT: |       |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
607// CHECK-NEXT: |       |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
608// CHECK-NEXT: |       |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
609// CHECK-NEXT: |       |     | | |   `-NullStmt {{.*}} <line:13:7>
610// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
611// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
612// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
613// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
614// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
615// CHECK-NEXT: |       |     | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
616// CHECK-NEXT: |       |     | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
617// CHECK-NEXT: |       |     | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
618// CHECK-NEXT: |       |     | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
619// CHECK-NEXT: |       |     | |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
620// CHECK-NEXT: |       |     | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
621// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
622// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
623// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
624// CHECK-NEXT: |       |     |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
625// CHECK-NEXT: |       |     | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
626// CHECK-NEXT: |       |     | |-FieldDecl {{.*}} <line:11:23> col:23 implicit 'int'
627// CHECK-NEXT: |       |     | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
628// CHECK-NEXT: |       |     | `-FieldDecl {{.*}} <line:12:25> col:25 implicit 'int'
629// CHECK-NEXT: |       |     |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
630// CHECK-NEXT: |       |     `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
631// CHECK-NEXT: |       |       |-ForStmt {{.*}} <line:11:3, line:13:7>
632// CHECK-NEXT: |       |       | |-DeclStmt {{.*}} <line:11:8, col:17>
633// CHECK-NEXT: |       |       | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
634// CHECK-NEXT: |       |       | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
635// CHECK-NEXT: |       |       | |-<<<NULL>>>
636// CHECK-NEXT: |       |       | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
637// CHECK-NEXT: |       |       | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
638// CHECK-NEXT: |       |       | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
639// CHECK-NEXT: |       |       | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
640// CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
641// CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
642// CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
643// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:12:5, line:13:7> openmp_structured_block
644// CHECK-NEXT: |       |       |   |-DeclStmt {{.*}} <line:12:10, col:19>
645// CHECK-NEXT: |       |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
646// CHECK-NEXT: |       |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
647// CHECK-NEXT: |       |       |   |-<<<NULL>>>
648// CHECK-NEXT: |       |       |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
649// CHECK-NEXT: |       |       |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
650// CHECK-NEXT: |       |       |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
651// CHECK-NEXT: |       |       |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
652// CHECK-NEXT: |       |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
653// CHECK-NEXT: |       |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
654// CHECK-NEXT: |       |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
655// CHECK-NEXT: |       |       |   `-NullStmt {{.*}} <line:13:7>
656// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:10:9> col:9 implicit .global_tid. 'const int *const restrict'
657// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
658// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
659// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
660// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:10:9) *const restrict'
661// CHECK-NEXT: |       |       |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit
662// CHECK-NEXT: |       |       | `-IntegerLiteral {{.*}} <col:16> 'int' 0
663// CHECK-NEXT: |       |       `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit
664// CHECK-NEXT: |       |         `-IntegerLiteral {{.*}} <col:18> 'int' 0
665// CHECK-NEXT: |       |-DeclRefExpr {{.*}} <line:11:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
666// CHECK-NEXT: |       `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
667// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'
668// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
669// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
670// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>
671// CHECK-NEXT: |   `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:17:9, col:66>
672// CHECK-NEXT: |     |-OMPCollapseClause {{.*}} <col:55, col:65>
673// CHECK-NEXT: |     | `-ConstantExpr {{.*}} <col:64> 'int'
674// CHECK-NEXT: |     |   `-IntegerLiteral {{.*}} <col:64> 'int' 1
675// CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
676// CHECK-NEXT: |     | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
677// CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
678// CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:18:3, line:20:7>
679// CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
680// CHECK-NEXT: |       | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
681// CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
682// CHECK-NEXT: |       | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
683// CHECK-NEXT: |       | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
684// CHECK-NEXT: |       | | | | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
685// CHECK-NEXT: |       | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
686// CHECK-NEXT: |       | | | | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
687// CHECK-NEXT: |       | | | | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
688// CHECK-NEXT: |       | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
689// CHECK-NEXT: |       | | | | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
690// CHECK-NEXT: |       | | | | | | | | |-<<<NULL>>>
691// CHECK-NEXT: |       | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
692// CHECK-NEXT: |       | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
693// CHECK-NEXT: |       | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
694// CHECK-NEXT: |       | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
695// CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
696// CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
697// CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
698// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
699// CHECK-NEXT: |       | | | | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
700// CHECK-NEXT: |       | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
701// CHECK-NEXT: |       | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
702// CHECK-NEXT: |       | | | | | | | |   |-<<<NULL>>>
703// CHECK-NEXT: |       | | | | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
704// CHECK-NEXT: |       | | | | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
705// CHECK-NEXT: |       | | | | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
706// CHECK-NEXT: |       | | | | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
707// CHECK-NEXT: |       | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
708// CHECK-NEXT: |       | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
709// CHECK-NEXT: |       | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
710// CHECK-NEXT: |       | | | | | | | |   `-NullStmt {{.*}} <line:20:7>
711// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
712// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
713// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
714// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
715// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
716// CHECK-NEXT: |       | | | | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
717// CHECK-NEXT: |       | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
718// CHECK-NEXT: |       | | | | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
719// CHECK-NEXT: |       | | | | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
720// CHECK-NEXT: |       | | | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
721// CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
722// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
723// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
724// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
725// CHECK-NEXT: |       | | | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
726// CHECK-NEXT: |       | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
727// CHECK-NEXT: |       | | | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
728// CHECK-NEXT: |       | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
729// CHECK-NEXT: |       | | | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
730// CHECK-NEXT: |       | | | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
731// CHECK-NEXT: |       | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
732// CHECK-NEXT: |       | | | | |   |-ForStmt {{.*}} <line:18:3, line:20:7>
733// CHECK-NEXT: |       | | | | |   | |-DeclStmt {{.*}} <line:18:8, col:17>
734// CHECK-NEXT: |       | | | | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
735// CHECK-NEXT: |       | | | | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
736// CHECK-NEXT: |       | | | | |   | |-<<<NULL>>>
737// CHECK-NEXT: |       | | | | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
738// CHECK-NEXT: |       | | | | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
739// CHECK-NEXT: |       | | | | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
740// CHECK-NEXT: |       | | | | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
741// CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
742// CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
743// CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
744// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
745// CHECK-NEXT: |       | | | | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
746// CHECK-NEXT: |       | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
747// CHECK-NEXT: |       | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
748// CHECK-NEXT: |       | | | | |   |   |-<<<NULL>>>
749// CHECK-NEXT: |       | | | | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
750// CHECK-NEXT: |       | | | | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
751// CHECK-NEXT: |       | | | | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
752// CHECK-NEXT: |       | | | | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
753// CHECK-NEXT: |       | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
754// CHECK-NEXT: |       | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
755// CHECK-NEXT: |       | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
756// CHECK-NEXT: |       | | | | |   |   `-NullStmt {{.*}} <line:20:7>
757// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
758// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
759// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
760// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
761// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
762// CHECK-NEXT: |       | | | | |   |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
763// CHECK-NEXT: |       | | | | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
764// CHECK-NEXT: |       | | | | |   `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
765// CHECK-NEXT: |       | | | | |     `-IntegerLiteral {{.*}} <col:18> 'int' 0
766// CHECK-NEXT: |       | | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
767// CHECK-NEXT: |       | | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
768// CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
769// CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
770// CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
771// CHECK-NEXT: |       | | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
772// CHECK-NEXT: |       | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
773// CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
774// CHECK-NEXT: |       | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
775// CHECK-NEXT: |       | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
776// CHECK-NEXT: |       | | |   |-CapturedStmt {{.*}} <line:18:3, line:20:7>
777// CHECK-NEXT: |       | | |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
778// CHECK-NEXT: |       | | |   | | |-ForStmt {{.*}} <line:18:3, line:20:7>
779// CHECK-NEXT: |       | | |   | | | |-DeclStmt {{.*}} <line:18:8, col:17>
780// CHECK-NEXT: |       | | |   | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
781// CHECK-NEXT: |       | | |   | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
782// CHECK-NEXT: |       | | |   | | | |-<<<NULL>>>
783// CHECK-NEXT: |       | | |   | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
784// CHECK-NEXT: |       | | |   | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
785// CHECK-NEXT: |       | | |   | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
786// CHECK-NEXT: |       | | |   | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
787// CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
788// CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
789// CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
790// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
791// CHECK-NEXT: |       | | |   | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
792// CHECK-NEXT: |       | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
793// CHECK-NEXT: |       | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
794// CHECK-NEXT: |       | | |   | | |   |-<<<NULL>>>
795// CHECK-NEXT: |       | | |   | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
796// CHECK-NEXT: |       | | |   | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
797// CHECK-NEXT: |       | | |   | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
798// CHECK-NEXT: |       | | |   | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
799// CHECK-NEXT: |       | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
800// CHECK-NEXT: |       | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
801// CHECK-NEXT: |       | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
802// CHECK-NEXT: |       | | |   | | |   `-NullStmt {{.*}} <line:20:7>
803// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
804// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
805// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
806// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
807// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
808// CHECK-NEXT: |       | | |   | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
809// CHECK-NEXT: |       | | |   | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
810// CHECK-NEXT: |       | | |   | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
811// CHECK-NEXT: |       | | |   | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
812// CHECK-NEXT: |       | | |   | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
813// CHECK-NEXT: |       | | |   | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
814// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
815// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
816// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
817// CHECK-NEXT: |       | | |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
818// CHECK-NEXT: |       | | |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
819// CHECK-NEXT: |       | | |   | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
820// CHECK-NEXT: |       | | |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
821// CHECK-NEXT: |       | | |   | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
822// CHECK-NEXT: |       | | |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
823// CHECK-NEXT: |       | | |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
824// CHECK-NEXT: |       | | |     |-ForStmt {{.*}} <line:18:3, line:20:7>
825// CHECK-NEXT: |       | | |     | |-DeclStmt {{.*}} <line:18:8, col:17>
826// CHECK-NEXT: |       | | |     | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
827// CHECK-NEXT: |       | | |     | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
828// CHECK-NEXT: |       | | |     | |-<<<NULL>>>
829// CHECK-NEXT: |       | | |     | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
830// CHECK-NEXT: |       | | |     | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
831// CHECK-NEXT: |       | | |     | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
832// CHECK-NEXT: |       | | |     | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
833// CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
834// CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
835// CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
836// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
837// CHECK-NEXT: |       | | |     |   |-DeclStmt {{.*}} <line:19:10, col:19>
838// CHECK-NEXT: |       | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
839// CHECK-NEXT: |       | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
840// CHECK-NEXT: |       | | |     |   |-<<<NULL>>>
841// CHECK-NEXT: |       | | |     |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
842// CHECK-NEXT: |       | | |     |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
843// CHECK-NEXT: |       | | |     |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
844// CHECK-NEXT: |       | | |     |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
845// CHECK-NEXT: |       | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
846// CHECK-NEXT: |       | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
847// CHECK-NEXT: |       | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
848// CHECK-NEXT: |       | | |     |   `-NullStmt {{.*}} <line:20:7>
849// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
850// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
851// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
852// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
853// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
854// CHECK-NEXT: |       | | |     |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
855// CHECK-NEXT: |       | | |     | `-IntegerLiteral {{.*}} <col:16> 'int' 0
856// CHECK-NEXT: |       | | |     `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
857// CHECK-NEXT: |       | | |       `-IntegerLiteral {{.*}} <col:18> 'int' 0
858// CHECK-NEXT: |       | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
859// CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
860// CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
861// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int'
862// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
863// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .privates. 'void *const restrict'
864// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
865// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .task_t. 'void *const'
866// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
867// CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
868// CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
869// CHECK-NEXT: |       | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
870// CHECK-NEXT: |       | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
871// CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
872// CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
873// CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
874// CHECK-NEXT: |       |   |-CapturedStmt {{.*}} <line:18:3, line:20:7>
875// CHECK-NEXT: |       |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
876// CHECK-NEXT: |       |   | | |-CapturedStmt {{.*}} <line:18:3, line:20:7>
877// CHECK-NEXT: |       |   | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
878// CHECK-NEXT: |       |   | | | | |-ForStmt {{.*}} <line:18:3, line:20:7>
879// CHECK-NEXT: |       |   | | | | | |-DeclStmt {{.*}} <line:18:8, col:17>
880// CHECK-NEXT: |       |   | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
881// CHECK-NEXT: |       |   | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
882// CHECK-NEXT: |       |   | | | | | |-<<<NULL>>>
883// CHECK-NEXT: |       |   | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
884// CHECK-NEXT: |       |   | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
885// CHECK-NEXT: |       |   | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
886// CHECK-NEXT: |       |   | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
887// CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
888// CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
889// CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
890// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
891// CHECK-NEXT: |       |   | | | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
892// CHECK-NEXT: |       |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
893// CHECK-NEXT: |       |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
894// CHECK-NEXT: |       |   | | | | |   |-<<<NULL>>>
895// CHECK-NEXT: |       |   | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
896// CHECK-NEXT: |       |   | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
897// CHECK-NEXT: |       |   | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
898// CHECK-NEXT: |       |   | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
899// CHECK-NEXT: |       |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
900// CHECK-NEXT: |       |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
901// CHECK-NEXT: |       |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
902// CHECK-NEXT: |       |   | | | | |   `-NullStmt {{.*}} <line:20:7>
903// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
904// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
905// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
906// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
907// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
908// CHECK-NEXT: |       |   | | | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
909// CHECK-NEXT: |       |   | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
910// CHECK-NEXT: |       |   | | | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
911// CHECK-NEXT: |       |   | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
912// CHECK-NEXT: |       |   | | | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
913// CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
914// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
915// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
916// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
917// CHECK-NEXT: |       |   | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
918// CHECK-NEXT: |       |   | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
919// CHECK-NEXT: |       |   | | | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
920// CHECK-NEXT: |       |   | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
921// CHECK-NEXT: |       |   | | | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
922// CHECK-NEXT: |       |   | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
923// CHECK-NEXT: |       |   | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
924// CHECK-NEXT: |       |   | |   |-ForStmt {{.*}} <line:18:3, line:20:7>
925// CHECK-NEXT: |       |   | |   | |-DeclStmt {{.*}} <line:18:8, col:17>
926// CHECK-NEXT: |       |   | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
927// CHECK-NEXT: |       |   | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
928// CHECK-NEXT: |       |   | |   | |-<<<NULL>>>
929// CHECK-NEXT: |       |   | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
930// CHECK-NEXT: |       |   | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
931// CHECK-NEXT: |       |   | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
932// CHECK-NEXT: |       |   | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
933// CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
934// CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
935// CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
936// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
937// CHECK-NEXT: |       |   | |   |   |-DeclStmt {{.*}} <line:19:10, col:19>
938// CHECK-NEXT: |       |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
939// CHECK-NEXT: |       |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
940// CHECK-NEXT: |       |   | |   |   |-<<<NULL>>>
941// CHECK-NEXT: |       |   | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
942// CHECK-NEXT: |       |   | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
943// CHECK-NEXT: |       |   | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
944// CHECK-NEXT: |       |   | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
945// CHECK-NEXT: |       |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
946// CHECK-NEXT: |       |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
947// CHECK-NEXT: |       |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
948// CHECK-NEXT: |       |   | |   |   `-NullStmt {{.*}} <line:20:7>
949// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
950// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
951// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
952// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
953// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
954// CHECK-NEXT: |       |   | |   |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
955// CHECK-NEXT: |       |   | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
956// CHECK-NEXT: |       |   | |   `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
957// CHECK-NEXT: |       |   | |     `-IntegerLiteral {{.*}} <col:18> 'int' 0
958// CHECK-NEXT: |       |   | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
959// CHECK-NEXT: |       |   | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
960// CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
961// CHECK-NEXT: |       |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
962// CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
963// CHECK-NEXT: |       |   | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
964// CHECK-NEXT: |       |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
965// CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
966// CHECK-NEXT: |       |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
967// CHECK-NEXT: |       |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
968// CHECK-NEXT: |       |     |-CapturedStmt {{.*}} <line:18:3, line:20:7>
969// CHECK-NEXT: |       |     | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
970// CHECK-NEXT: |       |     | | |-ForStmt {{.*}} <line:18:3, line:20:7>
971// CHECK-NEXT: |       |     | | | |-DeclStmt {{.*}} <line:18:8, col:17>
972// CHECK-NEXT: |       |     | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
973// CHECK-NEXT: |       |     | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
974// CHECK-NEXT: |       |     | | | |-<<<NULL>>>
975// CHECK-NEXT: |       |     | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
976// CHECK-NEXT: |       |     | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
977// CHECK-NEXT: |       |     | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
978// CHECK-NEXT: |       |     | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
979// CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
980// CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
981// CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
982// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
983// CHECK-NEXT: |       |     | | |   |-DeclStmt {{.*}} <line:19:10, col:19>
984// CHECK-NEXT: |       |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
985// CHECK-NEXT: |       |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
986// CHECK-NEXT: |       |     | | |   |-<<<NULL>>>
987// CHECK-NEXT: |       |     | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
988// CHECK-NEXT: |       |     | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
989// CHECK-NEXT: |       |     | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
990// CHECK-NEXT: |       |     | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
991// CHECK-NEXT: |       |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
992// CHECK-NEXT: |       |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
993// CHECK-NEXT: |       |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
994// CHECK-NEXT: |       |     | | |   `-NullStmt {{.*}} <line:20:7>
995// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
996// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
997// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
998// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
999// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
1000// CHECK-NEXT: |       |     | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
1001// CHECK-NEXT: |       |     | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1002// CHECK-NEXT: |       |     | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
1003// CHECK-NEXT: |       |     | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1004// CHECK-NEXT: |       |     | |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1005// CHECK-NEXT: |       |     | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1006// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
1007// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1008// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
1009// CHECK-NEXT: |       |     |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1010// CHECK-NEXT: |       |     | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1011// CHECK-NEXT: |       |     | |-FieldDecl {{.*}} <line:18:23> col:23 implicit 'int'
1012// CHECK-NEXT: |       |     | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1013// CHECK-NEXT: |       |     | `-FieldDecl {{.*}} <line:19:25> col:25 implicit 'int'
1014// CHECK-NEXT: |       |     |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1015// CHECK-NEXT: |       |     `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1016// CHECK-NEXT: |       |       |-ForStmt {{.*}} <line:18:3, line:20:7>
1017// CHECK-NEXT: |       |       | |-DeclStmt {{.*}} <line:18:8, col:17>
1018// CHECK-NEXT: |       |       | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1019// CHECK-NEXT: |       |       | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1020// CHECK-NEXT: |       |       | |-<<<NULL>>>
1021// CHECK-NEXT: |       |       | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1022// CHECK-NEXT: |       |       | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1023// CHECK-NEXT: |       |       | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1024// CHECK-NEXT: |       |       | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1025// CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1026// CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1027// CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1028// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:19:5, line:20:7> openmp_structured_block
1029// CHECK-NEXT: |       |       |   |-DeclStmt {{.*}} <line:19:10, col:19>
1030// CHECK-NEXT: |       |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1031// CHECK-NEXT: |       |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1032// CHECK-NEXT: |       |       |   |-<<<NULL>>>
1033// CHECK-NEXT: |       |       |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1034// CHECK-NEXT: |       |       |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1035// CHECK-NEXT: |       |       |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1036// CHECK-NEXT: |       |       |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1037// CHECK-NEXT: |       |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1038// CHECK-NEXT: |       |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1039// CHECK-NEXT: |       |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1040// CHECK-NEXT: |       |       |   `-NullStmt {{.*}} <line:20:7>
1041// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:17:9> col:9 implicit .global_tid. 'const int *const restrict'
1042// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1043// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1044// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1045// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:17:9) *const restrict'
1046// CHECK-NEXT: |       |       |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit
1047// CHECK-NEXT: |       |       | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1048// CHECK-NEXT: |       |       `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit
1049// CHECK-NEXT: |       |         `-IntegerLiteral {{.*}} <col:18> 'int' 0
1050// CHECK-NEXT: |       |-DeclRefExpr {{.*}} <line:18:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1051// CHECK-NEXT: |       `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1052// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'
1053// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
1054// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
1055// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>
1056// CHECK-NEXT: |   `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:24:9, col:66>
1057// CHECK-NEXT: |     |-OMPCollapseClause {{.*}} <col:55, col:65>
1058// CHECK-NEXT: |     | `-ConstantExpr {{.*}} <col:64> 'int'
1059// CHECK-NEXT: |     |   `-IntegerLiteral {{.*}} <col:64> 'int' 2
1060// CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
1061// CHECK-NEXT: |     | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1062// CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1063// CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:25:3, line:27:7>
1064// CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1065// CHECK-NEXT: |       | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
1066// CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1067// CHECK-NEXT: |       | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
1068// CHECK-NEXT: |       | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1069// CHECK-NEXT: |       | | | | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
1070// CHECK-NEXT: |       | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1071// CHECK-NEXT: |       | | | | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
1072// CHECK-NEXT: |       | | | | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
1073// CHECK-NEXT: |       | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1074// CHECK-NEXT: |       | | | | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1075// CHECK-NEXT: |       | | | | | | | | |-<<<NULL>>>
1076// CHECK-NEXT: |       | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1077// CHECK-NEXT: |       | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1078// CHECK-NEXT: |       | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1079// CHECK-NEXT: |       | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1080// CHECK-NEXT: |       | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1081// CHECK-NEXT: |       | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1082// CHECK-NEXT: |       | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1083// CHECK-NEXT: |       | | | | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
1084// CHECK-NEXT: |       | | | | | | | |   |-DeclStmt {{.*}} <line:26:10, col:19>
1085// CHECK-NEXT: |       | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1086// CHECK-NEXT: |       | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1087// CHECK-NEXT: |       | | | | | | | |   |-<<<NULL>>>
1088// CHECK-NEXT: |       | | | | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1089// CHECK-NEXT: |       | | | | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1090// CHECK-NEXT: |       | | | | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1091// CHECK-NEXT: |       | | | | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1092// CHECK-NEXT: |       | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1093// CHECK-NEXT: |       | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1094// CHECK-NEXT: |       | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1095// CHECK-NEXT: |       | | | | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1096// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1097// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1098// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1099// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1100// CHECK-NEXT: |       | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1101// CHECK-NEXT: |       | | | | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1102// CHECK-NEXT: |       | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1103// CHECK-NEXT: |       | | | | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1104// CHECK-NEXT: |       | | | | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1105// CHECK-NEXT: |       | | | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1106// CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1107// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1108// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1109// CHECK-NEXT: |       | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1110// CHECK-NEXT: |       | | | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1111// CHECK-NEXT: |       | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1112// CHECK-NEXT: |       | | | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
1113// CHECK-NEXT: |       | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1114// CHECK-NEXT: |       | | | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
1115// CHECK-NEXT: |       | | | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1116// CHECK-NEXT: |       | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1117// CHECK-NEXT: |       | | | | |   |-ForStmt {{.*}} <line:25:3, line:27:7>
1118// CHECK-NEXT: |       | | | | |   | |-DeclStmt {{.*}} <line:25:8, col:17>
1119// CHECK-NEXT: |       | | | | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1120// CHECK-NEXT: |       | | | | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1121// CHECK-NEXT: |       | | | | |   | |-<<<NULL>>>
1122// CHECK-NEXT: |       | | | | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1123// CHECK-NEXT: |       | | | | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1124// CHECK-NEXT: |       | | | | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1125// CHECK-NEXT: |       | | | | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1126// CHECK-NEXT: |       | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1127// CHECK-NEXT: |       | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1128// CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1129// CHECK-NEXT: |       | | | | |   | `-ForStmt {{.*}} <line:26:5, line:27:7>
1130// CHECK-NEXT: |       | | | | |   |   |-DeclStmt {{.*}} <line:26:10, col:19>
1131// CHECK-NEXT: |       | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1132// CHECK-NEXT: |       | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1133// CHECK-NEXT: |       | | | | |   |   |-<<<NULL>>>
1134// CHECK-NEXT: |       | | | | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1135// CHECK-NEXT: |       | | | | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1136// CHECK-NEXT: |       | | | | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1137// CHECK-NEXT: |       | | | | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1138// CHECK-NEXT: |       | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1139// CHECK-NEXT: |       | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1140// CHECK-NEXT: |       | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1141// CHECK-NEXT: |       | | | | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1142// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1143// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1144// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1145// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1146// CHECK-NEXT: |       | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1147// CHECK-NEXT: |       | | | | |   |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1148// CHECK-NEXT: |       | | | | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1149// CHECK-NEXT: |       | | | | |   `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1150// CHECK-NEXT: |       | | | | |     `-IntegerLiteral {{.*}} <col:18> 'int' 0
1151// CHECK-NEXT: |       | | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1152// CHECK-NEXT: |       | | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1153// CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1154// CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1155// CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1156// CHECK-NEXT: |       | | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
1157// CHECK-NEXT: |       | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1158// CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
1159// CHECK-NEXT: |       | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1160// CHECK-NEXT: |       | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1161// CHECK-NEXT: |       | | |   |-CapturedStmt {{.*}} <line:25:3, line:27:7>
1162// CHECK-NEXT: |       | | |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1163// CHECK-NEXT: |       | | |   | | |-ForStmt {{.*}} <line:25:3, line:27:7>
1164// CHECK-NEXT: |       | | |   | | | |-DeclStmt {{.*}} <line:25:8, col:17>
1165// CHECK-NEXT: |       | | |   | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1166// CHECK-NEXT: |       | | |   | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1167// CHECK-NEXT: |       | | |   | | | |-<<<NULL>>>
1168// CHECK-NEXT: |       | | |   | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1169// CHECK-NEXT: |       | | |   | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1170// CHECK-NEXT: |       | | |   | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1171// CHECK-NEXT: |       | | |   | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1172// CHECK-NEXT: |       | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1173// CHECK-NEXT: |       | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1174// CHECK-NEXT: |       | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1175// CHECK-NEXT: |       | | |   | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
1176// CHECK-NEXT: |       | | |   | | |   |-DeclStmt {{.*}} <line:26:10, col:19>
1177// CHECK-NEXT: |       | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1178// CHECK-NEXT: |       | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1179// CHECK-NEXT: |       | | |   | | |   |-<<<NULL>>>
1180// CHECK-NEXT: |       | | |   | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1181// CHECK-NEXT: |       | | |   | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1182// CHECK-NEXT: |       | | |   | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1183// CHECK-NEXT: |       | | |   | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1184// CHECK-NEXT: |       | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1185// CHECK-NEXT: |       | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1186// CHECK-NEXT: |       | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1187// CHECK-NEXT: |       | | |   | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1188// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1189// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1190// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1191// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1192// CHECK-NEXT: |       | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1193// CHECK-NEXT: |       | | |   | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1194// CHECK-NEXT: |       | | |   | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1195// CHECK-NEXT: |       | | |   | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1196// CHECK-NEXT: |       | | |   | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1197// CHECK-NEXT: |       | | |   | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1198// CHECK-NEXT: |       | | |   | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1199// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1200// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1201// CHECK-NEXT: |       | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1202// CHECK-NEXT: |       | | |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1203// CHECK-NEXT: |       | | |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1204// CHECK-NEXT: |       | | |   | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
1205// CHECK-NEXT: |       | | |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1206// CHECK-NEXT: |       | | |   | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
1207// CHECK-NEXT: |       | | |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1208// CHECK-NEXT: |       | | |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1209// CHECK-NEXT: |       | | |     |-ForStmt {{.*}} <line:25:3, line:27:7>
1210// CHECK-NEXT: |       | | |     | |-DeclStmt {{.*}} <line:25:8, col:17>
1211// CHECK-NEXT: |       | | |     | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1212// CHECK-NEXT: |       | | |     | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1213// CHECK-NEXT: |       | | |     | |-<<<NULL>>>
1214// CHECK-NEXT: |       | | |     | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1215// CHECK-NEXT: |       | | |     | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1216// CHECK-NEXT: |       | | |     | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1217// CHECK-NEXT: |       | | |     | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1218// CHECK-NEXT: |       | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1219// CHECK-NEXT: |       | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1220// CHECK-NEXT: |       | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1221// CHECK-NEXT: |       | | |     | `-ForStmt {{.*}} <line:26:5, line:27:7>
1222// CHECK-NEXT: |       | | |     |   |-DeclStmt {{.*}} <line:26:10, col:19>
1223// CHECK-NEXT: |       | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1224// CHECK-NEXT: |       | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1225// CHECK-NEXT: |       | | |     |   |-<<<NULL>>>
1226// CHECK-NEXT: |       | | |     |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1227// CHECK-NEXT: |       | | |     |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1228// CHECK-NEXT: |       | | |     |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1229// CHECK-NEXT: |       | | |     |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1230// CHECK-NEXT: |       | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1231// CHECK-NEXT: |       | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1232// CHECK-NEXT: |       | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1233// CHECK-NEXT: |       | | |     |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1234// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1235// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1236// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1237// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1238// CHECK-NEXT: |       | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1239// CHECK-NEXT: |       | | |     |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1240// CHECK-NEXT: |       | | |     | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1241// CHECK-NEXT: |       | | |     `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1242// CHECK-NEXT: |       | | |       `-IntegerLiteral {{.*}} <col:18> 'int' 0
1243// CHECK-NEXT: |       | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1244// CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1245// CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
1246// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int'
1247// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
1248// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .privates. 'void *const restrict'
1249// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
1250// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .task_t. 'void *const'
1251// CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1252// CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1253// CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1254// CHECK-NEXT: |       | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
1255// CHECK-NEXT: |       | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1256// CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
1257// CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1258// CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1259// CHECK-NEXT: |       |   |-CapturedStmt {{.*}} <line:25:3, line:27:7>
1260// CHECK-NEXT: |       |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1261// CHECK-NEXT: |       |   | | |-CapturedStmt {{.*}} <line:25:3, line:27:7>
1262// CHECK-NEXT: |       |   | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1263// CHECK-NEXT: |       |   | | | | |-ForStmt {{.*}} <line:25:3, line:27:7>
1264// CHECK-NEXT: |       |   | | | | | |-DeclStmt {{.*}} <line:25:8, col:17>
1265// CHECK-NEXT: |       |   | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1266// CHECK-NEXT: |       |   | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1267// CHECK-NEXT: |       |   | | | | | |-<<<NULL>>>
1268// CHECK-NEXT: |       |   | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1269// CHECK-NEXT: |       |   | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1270// CHECK-NEXT: |       |   | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1271// CHECK-NEXT: |       |   | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1272// CHECK-NEXT: |       |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1273// CHECK-NEXT: |       |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1274// CHECK-NEXT: |       |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1275// CHECK-NEXT: |       |   | | | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
1276// CHECK-NEXT: |       |   | | | | |   |-DeclStmt {{.*}} <line:26:10, col:19>
1277// CHECK-NEXT: |       |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1278// CHECK-NEXT: |       |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1279// CHECK-NEXT: |       |   | | | | |   |-<<<NULL>>>
1280// CHECK-NEXT: |       |   | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1281// CHECK-NEXT: |       |   | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1282// CHECK-NEXT: |       |   | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1283// CHECK-NEXT: |       |   | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1284// CHECK-NEXT: |       |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1285// CHECK-NEXT: |       |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1286// CHECK-NEXT: |       |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1287// CHECK-NEXT: |       |   | | | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1288// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1289// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1290// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1291// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1292// CHECK-NEXT: |       |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1293// CHECK-NEXT: |       |   | | | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1294// CHECK-NEXT: |       |   | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1295// CHECK-NEXT: |       |   | | | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1296// CHECK-NEXT: |       |   | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1297// CHECK-NEXT: |       |   | | | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1298// CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1299// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1300// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1301// CHECK-NEXT: |       |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1302// CHECK-NEXT: |       |   | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1303// CHECK-NEXT: |       |   | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1304// CHECK-NEXT: |       |   | | | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
1305// CHECK-NEXT: |       |   | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1306// CHECK-NEXT: |       |   | | | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
1307// CHECK-NEXT: |       |   | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1308// CHECK-NEXT: |       |   | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1309// CHECK-NEXT: |       |   | |   |-ForStmt {{.*}} <line:25:3, line:27:7>
1310// CHECK-NEXT: |       |   | |   | |-DeclStmt {{.*}} <line:25:8, col:17>
1311// CHECK-NEXT: |       |   | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1312// CHECK-NEXT: |       |   | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1313// CHECK-NEXT: |       |   | |   | |-<<<NULL>>>
1314// CHECK-NEXT: |       |   | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1315// CHECK-NEXT: |       |   | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1316// CHECK-NEXT: |       |   | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1317// CHECK-NEXT: |       |   | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1318// CHECK-NEXT: |       |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1319// CHECK-NEXT: |       |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1320// CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1321// CHECK-NEXT: |       |   | |   | `-ForStmt {{.*}} <line:26:5, line:27:7>
1322// CHECK-NEXT: |       |   | |   |   |-DeclStmt {{.*}} <line:26:10, col:19>
1323// CHECK-NEXT: |       |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1324// CHECK-NEXT: |       |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1325// CHECK-NEXT: |       |   | |   |   |-<<<NULL>>>
1326// CHECK-NEXT: |       |   | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1327// CHECK-NEXT: |       |   | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1328// CHECK-NEXT: |       |   | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1329// CHECK-NEXT: |       |   | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1330// CHECK-NEXT: |       |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1331// CHECK-NEXT: |       |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1332// CHECK-NEXT: |       |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1333// CHECK-NEXT: |       |   | |   |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1334// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1335// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1336// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1337// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1338// CHECK-NEXT: |       |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1339// CHECK-NEXT: |       |   | |   |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1340// CHECK-NEXT: |       |   | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1341// CHECK-NEXT: |       |   | |   `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1342// CHECK-NEXT: |       |   | |     `-IntegerLiteral {{.*}} <col:18> 'int' 0
1343// CHECK-NEXT: |       |   | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1344// CHECK-NEXT: |       |   | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1345// CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1346// CHECK-NEXT: |       |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1347// CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1348// CHECK-NEXT: |       |   | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
1349// CHECK-NEXT: |       |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1350// CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
1351// CHECK-NEXT: |       |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1352// CHECK-NEXT: |       |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1353// CHECK-NEXT: |       |     |-CapturedStmt {{.*}} <line:25:3, line:27:7>
1354// CHECK-NEXT: |       |     | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1355// CHECK-NEXT: |       |     | | |-ForStmt {{.*}} <line:25:3, line:27:7>
1356// CHECK-NEXT: |       |     | | | |-DeclStmt {{.*}} <line:25:8, col:17>
1357// CHECK-NEXT: |       |     | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1358// CHECK-NEXT: |       |     | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1359// CHECK-NEXT: |       |     | | | |-<<<NULL>>>
1360// CHECK-NEXT: |       |     | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1361// CHECK-NEXT: |       |     | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1362// CHECK-NEXT: |       |     | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1363// CHECK-NEXT: |       |     | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1364// CHECK-NEXT: |       |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1365// CHECK-NEXT: |       |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1366// CHECK-NEXT: |       |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1367// CHECK-NEXT: |       |     | | | `-ForStmt {{.*}} <line:26:5, line:27:7>
1368// CHECK-NEXT: |       |     | | |   |-DeclStmt {{.*}} <line:26:10, col:19>
1369// CHECK-NEXT: |       |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1370// CHECK-NEXT: |       |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1371// CHECK-NEXT: |       |     | | |   |-<<<NULL>>>
1372// CHECK-NEXT: |       |     | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1373// CHECK-NEXT: |       |     | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1374// CHECK-NEXT: |       |     | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1375// CHECK-NEXT: |       |     | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1376// CHECK-NEXT: |       |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1377// CHECK-NEXT: |       |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1378// CHECK-NEXT: |       |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1379// CHECK-NEXT: |       |     | | |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1380// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1381// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1382// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1383// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1384// CHECK-NEXT: |       |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1385// CHECK-NEXT: |       |     | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1386// CHECK-NEXT: |       |     | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1387// CHECK-NEXT: |       |     | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1388// CHECK-NEXT: |       |     | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1389// CHECK-NEXT: |       |     | |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1390// CHECK-NEXT: |       |     | `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1391// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1392// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1393// CHECK-NEXT: |       |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1394// CHECK-NEXT: |       |     |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1395// CHECK-NEXT: |       |     | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1396// CHECK-NEXT: |       |     | |-FieldDecl {{.*}} <line:25:23> col:23 implicit 'int'
1397// CHECK-NEXT: |       |     | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1398// CHECK-NEXT: |       |     | `-FieldDecl {{.*}} <line:26:25> col:25 implicit 'int'
1399// CHECK-NEXT: |       |     |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1400// CHECK-NEXT: |       |     `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1401// CHECK-NEXT: |       |       |-ForStmt {{.*}} <line:25:3, line:27:7>
1402// CHECK-NEXT: |       |       | |-DeclStmt {{.*}} <line:25:8, col:17>
1403// CHECK-NEXT: |       |       | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1404// CHECK-NEXT: |       |       | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1405// CHECK-NEXT: |       |       | |-<<<NULL>>>
1406// CHECK-NEXT: |       |       | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1407// CHECK-NEXT: |       |       | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1408// CHECK-NEXT: |       |       | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1409// CHECK-NEXT: |       |       | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1410// CHECK-NEXT: |       |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1411// CHECK-NEXT: |       |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1412// CHECK-NEXT: |       |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1413// CHECK-NEXT: |       |       | `-ForStmt {{.*}} <line:26:5, line:27:7>
1414// CHECK-NEXT: |       |       |   |-DeclStmt {{.*}} <line:26:10, col:19>
1415// CHECK-NEXT: |       |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1416// CHECK-NEXT: |       |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1417// CHECK-NEXT: |       |       |   |-<<<NULL>>>
1418// CHECK-NEXT: |       |       |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1419// CHECK-NEXT: |       |       |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1420// CHECK-NEXT: |       |       |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1421// CHECK-NEXT: |       |       |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1422// CHECK-NEXT: |       |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1423// CHECK-NEXT: |       |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1424// CHECK-NEXT: |       |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1425// CHECK-NEXT: |       |       |   `-NullStmt {{.*}} <line:27:7> openmp_structured_block
1426// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <line:24:9> col:9 implicit .global_tid. 'const int *const restrict'
1427// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1428// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1429// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1430// CHECK-NEXT: |       |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:24:9) *const restrict'
1431// CHECK-NEXT: |       |       |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit
1432// CHECK-NEXT: |       |       | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1433// CHECK-NEXT: |       |       `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit
1434// CHECK-NEXT: |       |         `-IntegerLiteral {{.*}} <col:18> 'int' 0
1435// CHECK-NEXT: |       |-DeclRefExpr {{.*}} <line:25:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1436// CHECK-NEXT: |       `-DeclRefExpr {{.*}} <line:26:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1437// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'
1438// CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
1439// CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
1440// CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
1441// CHECK-NEXT:   `-CompoundStmt {{.*}} <col:37, line:36:1>
1442// CHECK-NEXT:     `-OMPTargetTeamsDistributeParallelForSimdDirective {{.*}} <line:31:9, col:66>
1443// CHECK-NEXT:       |-OMPCollapseClause {{.*}} <col:55, col:65>
1444// CHECK-NEXT:       | `-ConstantExpr {{.*}} <col:64> 'int'
1445// CHECK-NEXT:       |   `-IntegerLiteral {{.*}} <col:64> 'int' 2
1446// CHECK-NEXT:       |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
1447// CHECK-NEXT:       | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1448// CHECK-NEXT:       | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1449// CHECK-NEXT:       | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1450// CHECK-NEXT:       `-CapturedStmt {{.*}} <line:32:3, line:35:9>
1451// CHECK-NEXT:         |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1452// CHECK-NEXT:         | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
1453// CHECK-NEXT:         | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1454// CHECK-NEXT:         | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
1455// CHECK-NEXT:         | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1456// CHECK-NEXT:         | | | | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
1457// CHECK-NEXT:         | | | | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1458// CHECK-NEXT:         | | | | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
1459// CHECK-NEXT:         | | | | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
1460// CHECK-NEXT:         | | | | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1461// CHECK-NEXT:         | | | | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1462// CHECK-NEXT:         | | | | | | | | |-<<<NULL>>>
1463// CHECK-NEXT:         | | | | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1464// CHECK-NEXT:         | | | | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1465// CHECK-NEXT:         | | | | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1466// CHECK-NEXT:         | | | | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1467// CHECK-NEXT:         | | | | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1468// CHECK-NEXT:         | | | | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1469// CHECK-NEXT:         | | | | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1470// CHECK-NEXT:         | | | | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
1471// CHECK-NEXT:         | | | | | | | |   |-DeclStmt {{.*}} <line:33:10, col:19>
1472// CHECK-NEXT:         | | | | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1473// CHECK-NEXT:         | | | | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1474// CHECK-NEXT:         | | | | | | | |   |-<<<NULL>>>
1475// CHECK-NEXT:         | | | | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1476// CHECK-NEXT:         | | | | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1477// CHECK-NEXT:         | | | | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1478// CHECK-NEXT:         | | | | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1479// CHECK-NEXT:         | | | | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1480// CHECK-NEXT:         | | | | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1481// CHECK-NEXT:         | | | | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1482// CHECK-NEXT:         | | | | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1483// CHECK-NEXT:         | | | | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
1484// CHECK-NEXT:         | | | | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1485// CHECK-NEXT:         | | | | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1486// CHECK-NEXT:         | | | | | | | |     |-<<<NULL>>>
1487// CHECK-NEXT:         | | | | | | | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1488// CHECK-NEXT:         | | | | | | | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1489// CHECK-NEXT:         | | | | | | | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1490// CHECK-NEXT:         | | | | | | | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1491// CHECK-NEXT:         | | | | | | | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1492// CHECK-NEXT:         | | | | | | | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1493// CHECK-NEXT:         | | | | | | | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1494// CHECK-NEXT:         | | | | | | | |     `-NullStmt {{.*}} <line:35:9>
1495// CHECK-NEXT:         | | | | | | | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1496// CHECK-NEXT:         | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1497// CHECK-NEXT:         | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1498// CHECK-NEXT:         | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1499// CHECK-NEXT:         | | | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1500// CHECK-NEXT:         | | | | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1501// CHECK-NEXT:         | | | | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1502// CHECK-NEXT:         | | | | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1503// CHECK-NEXT:         | | | | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1504// CHECK-NEXT:         | | | | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1505// CHECK-NEXT:         | | | | | | |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1506// CHECK-NEXT:         | | | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1507// CHECK-NEXT:         | | | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1508// CHECK-NEXT:         | | | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1509// CHECK-NEXT:         | | | | | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1510// CHECK-NEXT:         | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1511// CHECK-NEXT:         | | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1512// CHECK-NEXT:         | | | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1513// CHECK-NEXT:         | | | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1514// CHECK-NEXT:         | | | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
1515// CHECK-NEXT:         | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1516// CHECK-NEXT:         | | | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
1517// CHECK-NEXT:         | | | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1518// CHECK-NEXT:         | | | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
1519// CHECK-NEXT:         | | | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1520// CHECK-NEXT:         | | | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1521// CHECK-NEXT:         | | | | |   |-ForStmt {{.*}} <line:32:3, line:35:9>
1522// CHECK-NEXT:         | | | | |   | |-DeclStmt {{.*}} <line:32:8, col:17>
1523// CHECK-NEXT:         | | | | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1524// CHECK-NEXT:         | | | | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1525// CHECK-NEXT:         | | | | |   | |-<<<NULL>>>
1526// CHECK-NEXT:         | | | | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1527// CHECK-NEXT:         | | | | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1528// CHECK-NEXT:         | | | | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1529// CHECK-NEXT:         | | | | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1530// CHECK-NEXT:         | | | | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1531// CHECK-NEXT:         | | | | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1532// CHECK-NEXT:         | | | | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1533// CHECK-NEXT:         | | | | |   | `-ForStmt {{.*}} <line:33:5, line:35:9>
1534// CHECK-NEXT:         | | | | |   |   |-DeclStmt {{.*}} <line:33:10, col:19>
1535// CHECK-NEXT:         | | | | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1536// CHECK-NEXT:         | | | | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1537// CHECK-NEXT:         | | | | |   |   |-<<<NULL>>>
1538// CHECK-NEXT:         | | | | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1539// CHECK-NEXT:         | | | | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1540// CHECK-NEXT:         | | | | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1541// CHECK-NEXT:         | | | | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1542// CHECK-NEXT:         | | | | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1543// CHECK-NEXT:         | | | | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1544// CHECK-NEXT:         | | | | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1545// CHECK-NEXT:         | | | | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1546// CHECK-NEXT:         | | | | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
1547// CHECK-NEXT:         | | | | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1548// CHECK-NEXT:         | | | | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1549// CHECK-NEXT:         | | | | |   |     |-<<<NULL>>>
1550// CHECK-NEXT:         | | | | |   |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1551// CHECK-NEXT:         | | | | |   |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1552// CHECK-NEXT:         | | | | |   |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1553// CHECK-NEXT:         | | | | |   |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1554// CHECK-NEXT:         | | | | |   |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1555// CHECK-NEXT:         | | | | |   |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1556// CHECK-NEXT:         | | | | |   |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1557// CHECK-NEXT:         | | | | |   |     `-NullStmt {{.*}} <line:35:9>
1558// CHECK-NEXT:         | | | | |   |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1559// CHECK-NEXT:         | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1560// CHECK-NEXT:         | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1561// CHECK-NEXT:         | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1562// CHECK-NEXT:         | | | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1563// CHECK-NEXT:         | | | | |   |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1564// CHECK-NEXT:         | | | | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1565// CHECK-NEXT:         | | | | |   |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1566// CHECK-NEXT:         | | | | |   | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1567// CHECK-NEXT:         | | | | |   `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1568// CHECK-NEXT:         | | | | |     `-IntegerLiteral {{.*}} <col:20> 'int' 0
1569// CHECK-NEXT:         | | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1570// CHECK-NEXT:         | | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1571// CHECK-NEXT:         | | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1572// CHECK-NEXT:         | | | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1573// CHECK-NEXT:         | | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1574// CHECK-NEXT:         | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1575// CHECK-NEXT:         | | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
1576// CHECK-NEXT:         | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1577// CHECK-NEXT:         | | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
1578// CHECK-NEXT:         | | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1579// CHECK-NEXT:         | | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
1580// CHECK-NEXT:         | | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1581// CHECK-NEXT:         | | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1582// CHECK-NEXT:         | | |   |-CapturedStmt {{.*}} <line:32:3, line:35:9>
1583// CHECK-NEXT:         | | |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1584// CHECK-NEXT:         | | |   | | |-ForStmt {{.*}} <line:32:3, line:35:9>
1585// CHECK-NEXT:         | | |   | | | |-DeclStmt {{.*}} <line:32:8, col:17>
1586// CHECK-NEXT:         | | |   | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1587// CHECK-NEXT:         | | |   | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1588// CHECK-NEXT:         | | |   | | | |-<<<NULL>>>
1589// CHECK-NEXT:         | | |   | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1590// CHECK-NEXT:         | | |   | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1591// CHECK-NEXT:         | | |   | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1592// CHECK-NEXT:         | | |   | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1593// CHECK-NEXT:         | | |   | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1594// CHECK-NEXT:         | | |   | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1595// CHECK-NEXT:         | | |   | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1596// CHECK-NEXT:         | | |   | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
1597// CHECK-NEXT:         | | |   | | |   |-DeclStmt {{.*}} <line:33:10, col:19>
1598// CHECK-NEXT:         | | |   | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1599// CHECK-NEXT:         | | |   | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1600// CHECK-NEXT:         | | |   | | |   |-<<<NULL>>>
1601// CHECK-NEXT:         | | |   | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1602// CHECK-NEXT:         | | |   | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1603// CHECK-NEXT:         | | |   | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1604// CHECK-NEXT:         | | |   | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1605// CHECK-NEXT:         | | |   | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1606// CHECK-NEXT:         | | |   | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1607// CHECK-NEXT:         | | |   | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1608// CHECK-NEXT:         | | |   | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1609// CHECK-NEXT:         | | |   | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
1610// CHECK-NEXT:         | | |   | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1611// CHECK-NEXT:         | | |   | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1612// CHECK-NEXT:         | | |   | | |     |-<<<NULL>>>
1613// CHECK-NEXT:         | | |   | | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1614// CHECK-NEXT:         | | |   | | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1615// CHECK-NEXT:         | | |   | | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1616// CHECK-NEXT:         | | |   | | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1617// CHECK-NEXT:         | | |   | | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1618// CHECK-NEXT:         | | |   | | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1619// CHECK-NEXT:         | | |   | | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1620// CHECK-NEXT:         | | |   | | |     `-NullStmt {{.*}} <line:35:9>
1621// CHECK-NEXT:         | | |   | | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1622// CHECK-NEXT:         | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1623// CHECK-NEXT:         | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1624// CHECK-NEXT:         | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1625// CHECK-NEXT:         | | |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1626// CHECK-NEXT:         | | |   | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1627// CHECK-NEXT:         | | |   | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1628// CHECK-NEXT:         | | |   | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1629// CHECK-NEXT:         | | |   | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1630// CHECK-NEXT:         | | |   | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1631// CHECK-NEXT:         | | |   | |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1632// CHECK-NEXT:         | | |   | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1633// CHECK-NEXT:         | | |   | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1634// CHECK-NEXT:         | | |   | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1635// CHECK-NEXT:         | | |   |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1636// CHECK-NEXT:         | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1637// CHECK-NEXT:         | | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1638// CHECK-NEXT:         | | |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1639// CHECK-NEXT:         | | |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1640// CHECK-NEXT:         | | |   | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
1641// CHECK-NEXT:         | | |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1642// CHECK-NEXT:         | | |   | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
1643// CHECK-NEXT:         | | |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1644// CHECK-NEXT:         | | |   | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
1645// CHECK-NEXT:         | | |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1646// CHECK-NEXT:         | | |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1647// CHECK-NEXT:         | | |     |-ForStmt {{.*}} <line:32:3, line:35:9>
1648// CHECK-NEXT:         | | |     | |-DeclStmt {{.*}} <line:32:8, col:17>
1649// CHECK-NEXT:         | | |     | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1650// CHECK-NEXT:         | | |     | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1651// CHECK-NEXT:         | | |     | |-<<<NULL>>>
1652// CHECK-NEXT:         | | |     | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1653// CHECK-NEXT:         | | |     | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1654// CHECK-NEXT:         | | |     | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1655// CHECK-NEXT:         | | |     | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1656// CHECK-NEXT:         | | |     | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1657// CHECK-NEXT:         | | |     | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1658// CHECK-NEXT:         | | |     | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1659// CHECK-NEXT:         | | |     | `-ForStmt {{.*}} <line:33:5, line:35:9>
1660// CHECK-NEXT:         | | |     |   |-DeclStmt {{.*}} <line:33:10, col:19>
1661// CHECK-NEXT:         | | |     |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1662// CHECK-NEXT:         | | |     |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1663// CHECK-NEXT:         | | |     |   |-<<<NULL>>>
1664// CHECK-NEXT:         | | |     |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1665// CHECK-NEXT:         | | |     |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1666// CHECK-NEXT:         | | |     |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1667// CHECK-NEXT:         | | |     |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1668// CHECK-NEXT:         | | |     |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1669// CHECK-NEXT:         | | |     |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1670// CHECK-NEXT:         | | |     |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1671// CHECK-NEXT:         | | |     |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1672// CHECK-NEXT:         | | |     |     |-DeclStmt {{.*}} <line:34:12, col:21>
1673// CHECK-NEXT:         | | |     |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1674// CHECK-NEXT:         | | |     |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1675// CHECK-NEXT:         | | |     |     |-<<<NULL>>>
1676// CHECK-NEXT:         | | |     |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1677// CHECK-NEXT:         | | |     |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1678// CHECK-NEXT:         | | |     |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1679// CHECK-NEXT:         | | |     |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1680// CHECK-NEXT:         | | |     |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1681// CHECK-NEXT:         | | |     |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1682// CHECK-NEXT:         | | |     |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1683// CHECK-NEXT:         | | |     |     `-NullStmt {{.*}} <line:35:9>
1684// CHECK-NEXT:         | | |     |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1685// CHECK-NEXT:         | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1686// CHECK-NEXT:         | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1687// CHECK-NEXT:         | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1688// CHECK-NEXT:         | | |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1689// CHECK-NEXT:         | | |     |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1690// CHECK-NEXT:         | | |     | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1691// CHECK-NEXT:         | | |     |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1692// CHECK-NEXT:         | | |     | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1693// CHECK-NEXT:         | | |     `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1694// CHECK-NEXT:         | | |       `-IntegerLiteral {{.*}} <col:20> 'int' 0
1695// CHECK-NEXT:         | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1696// CHECK-NEXT:         | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1697// CHECK-NEXT:         | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1698// CHECK-NEXT:         | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
1699// CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int'
1700// CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .part_id. 'const int *const restrict'
1701// CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .privates. 'void *const restrict'
1702// CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
1703// CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .task_t. 'void *const'
1704// CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1705// CHECK-NEXT:         | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1706// CHECK-NEXT:         | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1707// CHECK-NEXT:         | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
1708// CHECK-NEXT:         | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1709// CHECK-NEXT:         | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
1710// CHECK-NEXT:         | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1711// CHECK-NEXT:         | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
1712// CHECK-NEXT:         | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1713// CHECK-NEXT:         | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1714// CHECK-NEXT:         |   |-CapturedStmt {{.*}} <line:32:3, line:35:9>
1715// CHECK-NEXT:         |   | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1716// CHECK-NEXT:         |   | | |-CapturedStmt {{.*}} <line:32:3, line:35:9>
1717// CHECK-NEXT:         |   | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1718// CHECK-NEXT:         |   | | | | |-ForStmt {{.*}} <line:32:3, line:35:9>
1719// CHECK-NEXT:         |   | | | | | |-DeclStmt {{.*}} <line:32:8, col:17>
1720// CHECK-NEXT:         |   | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1721// CHECK-NEXT:         |   | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1722// CHECK-NEXT:         |   | | | | | |-<<<NULL>>>
1723// CHECK-NEXT:         |   | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1724// CHECK-NEXT:         |   | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1725// CHECK-NEXT:         |   | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1726// CHECK-NEXT:         |   | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1727// CHECK-NEXT:         |   | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1728// CHECK-NEXT:         |   | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1729// CHECK-NEXT:         |   | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1730// CHECK-NEXT:         |   | | | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
1731// CHECK-NEXT:         |   | | | | |   |-DeclStmt {{.*}} <line:33:10, col:19>
1732// CHECK-NEXT:         |   | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1733// CHECK-NEXT:         |   | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1734// CHECK-NEXT:         |   | | | | |   |-<<<NULL>>>
1735// CHECK-NEXT:         |   | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1736// CHECK-NEXT:         |   | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1737// CHECK-NEXT:         |   | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1738// CHECK-NEXT:         |   | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1739// CHECK-NEXT:         |   | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1740// CHECK-NEXT:         |   | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1741// CHECK-NEXT:         |   | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1742// CHECK-NEXT:         |   | | | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1743// CHECK-NEXT:         |   | | | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
1744// CHECK-NEXT:         |   | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1745// CHECK-NEXT:         |   | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1746// CHECK-NEXT:         |   | | | | |     |-<<<NULL>>>
1747// CHECK-NEXT:         |   | | | | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1748// CHECK-NEXT:         |   | | | | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1749// CHECK-NEXT:         |   | | | | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1750// CHECK-NEXT:         |   | | | | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1751// CHECK-NEXT:         |   | | | | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1752// CHECK-NEXT:         |   | | | | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1753// CHECK-NEXT:         |   | | | | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1754// CHECK-NEXT:         |   | | | | |     `-NullStmt {{.*}} <line:35:9>
1755// CHECK-NEXT:         |   | | | | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1756// CHECK-NEXT:         |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1757// CHECK-NEXT:         |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1758// CHECK-NEXT:         |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1759// CHECK-NEXT:         |   | | | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1760// CHECK-NEXT:         |   | | | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1761// CHECK-NEXT:         |   | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1762// CHECK-NEXT:         |   | | | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1763// CHECK-NEXT:         |   | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1764// CHECK-NEXT:         |   | | | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1765// CHECK-NEXT:         |   | | | |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1766// CHECK-NEXT:         |   | | | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1767// CHECK-NEXT:         |   | | | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1768// CHECK-NEXT:         |   | | | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1769// CHECK-NEXT:         |   | | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1770// CHECK-NEXT:         |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1771// CHECK-NEXT:         |   | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1772// CHECK-NEXT:         |   | | |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1773// CHECK-NEXT:         |   | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1774// CHECK-NEXT:         |   | | | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
1775// CHECK-NEXT:         |   | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1776// CHECK-NEXT:         |   | | | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
1777// CHECK-NEXT:         |   | | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1778// CHECK-NEXT:         |   | | | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
1779// CHECK-NEXT:         |   | | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1780// CHECK-NEXT:         |   | | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1781// CHECK-NEXT:         |   | |   |-ForStmt {{.*}} <line:32:3, line:35:9>
1782// CHECK-NEXT:         |   | |   | |-DeclStmt {{.*}} <line:32:8, col:17>
1783// CHECK-NEXT:         |   | |   | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1784// CHECK-NEXT:         |   | |   | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1785// CHECK-NEXT:         |   | |   | |-<<<NULL>>>
1786// CHECK-NEXT:         |   | |   | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1787// CHECK-NEXT:         |   | |   | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1788// CHECK-NEXT:         |   | |   | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1789// CHECK-NEXT:         |   | |   | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1790// CHECK-NEXT:         |   | |   | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1791// CHECK-NEXT:         |   | |   | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1792// CHECK-NEXT:         |   | |   | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1793// CHECK-NEXT:         |   | |   | `-ForStmt {{.*}} <line:33:5, line:35:9>
1794// CHECK-NEXT:         |   | |   |   |-DeclStmt {{.*}} <line:33:10, col:19>
1795// CHECK-NEXT:         |   | |   |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1796// CHECK-NEXT:         |   | |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1797// CHECK-NEXT:         |   | |   |   |-<<<NULL>>>
1798// CHECK-NEXT:         |   | |   |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1799// CHECK-NEXT:         |   | |   |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1800// CHECK-NEXT:         |   | |   |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1801// CHECK-NEXT:         |   | |   |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1802// CHECK-NEXT:         |   | |   |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1803// CHECK-NEXT:         |   | |   |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1804// CHECK-NEXT:         |   | |   |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1805// CHECK-NEXT:         |   | |   |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1806// CHECK-NEXT:         |   | |   |     |-DeclStmt {{.*}} <line:34:12, col:21>
1807// CHECK-NEXT:         |   | |   |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1808// CHECK-NEXT:         |   | |   |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1809// CHECK-NEXT:         |   | |   |     |-<<<NULL>>>
1810// CHECK-NEXT:         |   | |   |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1811// CHECK-NEXT:         |   | |   |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1812// CHECK-NEXT:         |   | |   |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1813// CHECK-NEXT:         |   | |   |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1814// CHECK-NEXT:         |   | |   |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1815// CHECK-NEXT:         |   | |   |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1816// CHECK-NEXT:         |   | |   |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1817// CHECK-NEXT:         |   | |   |     `-NullStmt {{.*}} <line:35:9>
1818// CHECK-NEXT:         |   | |   |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1819// CHECK-NEXT:         |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1820// CHECK-NEXT:         |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1821// CHECK-NEXT:         |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1822// CHECK-NEXT:         |   | |   |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1823// CHECK-NEXT:         |   | |   |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1824// CHECK-NEXT:         |   | |   | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1825// CHECK-NEXT:         |   | |   |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1826// CHECK-NEXT:         |   | |   | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1827// CHECK-NEXT:         |   | |   `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1828// CHECK-NEXT:         |   | |     `-IntegerLiteral {{.*}} <col:20> 'int' 0
1829// CHECK-NEXT:         |   | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1830// CHECK-NEXT:         |   | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1831// CHECK-NEXT:         |   | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1832// CHECK-NEXT:         |   |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1833// CHECK-NEXT:         |   |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1834// CHECK-NEXT:         |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1835// CHECK-NEXT:         |   | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
1836// CHECK-NEXT:         |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1837// CHECK-NEXT:         |   | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
1838// CHECK-NEXT:         |   | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1839// CHECK-NEXT:         |   | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
1840// CHECK-NEXT:         |   |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1841// CHECK-NEXT:         |   `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1842// CHECK-NEXT:         |     |-CapturedStmt {{.*}} <line:32:3, line:35:9>
1843// CHECK-NEXT:         |     | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1844// CHECK-NEXT:         |     | | |-ForStmt {{.*}} <line:32:3, line:35:9>
1845// CHECK-NEXT:         |     | | | |-DeclStmt {{.*}} <line:32:8, col:17>
1846// CHECK-NEXT:         |     | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1847// CHECK-NEXT:         |     | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1848// CHECK-NEXT:         |     | | | |-<<<NULL>>>
1849// CHECK-NEXT:         |     | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1850// CHECK-NEXT:         |     | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1851// CHECK-NEXT:         |     | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1852// CHECK-NEXT:         |     | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1853// CHECK-NEXT:         |     | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1854// CHECK-NEXT:         |     | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1855// CHECK-NEXT:         |     | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1856// CHECK-NEXT:         |     | | | `-ForStmt {{.*}} <line:33:5, line:35:9>
1857// CHECK-NEXT:         |     | | |   |-DeclStmt {{.*}} <line:33:10, col:19>
1858// CHECK-NEXT:         |     | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1859// CHECK-NEXT:         |     | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1860// CHECK-NEXT:         |     | | |   |-<<<NULL>>>
1861// CHECK-NEXT:         |     | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1862// CHECK-NEXT:         |     | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1863// CHECK-NEXT:         |     | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1864// CHECK-NEXT:         |     | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1865// CHECK-NEXT:         |     | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1866// CHECK-NEXT:         |     | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1867// CHECK-NEXT:         |     | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1868// CHECK-NEXT:         |     | | |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1869// CHECK-NEXT:         |     | | |     |-DeclStmt {{.*}} <line:34:12, col:21>
1870// CHECK-NEXT:         |     | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1871// CHECK-NEXT:         |     | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1872// CHECK-NEXT:         |     | | |     |-<<<NULL>>>
1873// CHECK-NEXT:         |     | | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1874// CHECK-NEXT:         |     | | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1875// CHECK-NEXT:         |     | | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1876// CHECK-NEXT:         |     | | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1877// CHECK-NEXT:         |     | | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1878// CHECK-NEXT:         |     | | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1879// CHECK-NEXT:         |     | | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1880// CHECK-NEXT:         |     | | |     `-NullStmt {{.*}} <line:35:9>
1881// CHECK-NEXT:         |     | | |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1882// CHECK-NEXT:         |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1883// CHECK-NEXT:         |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1884// CHECK-NEXT:         |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1885// CHECK-NEXT:         |     | | |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1886// CHECK-NEXT:         |     | | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1887// CHECK-NEXT:         |     | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1888// CHECK-NEXT:         |     | | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1889// CHECK-NEXT:         |     | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1890// CHECK-NEXT:         |     | | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1891// CHECK-NEXT:         |     | |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1892// CHECK-NEXT:         |     | |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1893// CHECK-NEXT:         |     | |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1894// CHECK-NEXT:         |     | `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1895// CHECK-NEXT:         |     |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1896// CHECK-NEXT:         |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1897// CHECK-NEXT:         |     |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1898// CHECK-NEXT:         |     |-RecordDecl {{.*}} <col:9> col:9 implicit struct definition
1899// CHECK-NEXT:         |     | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1900// CHECK-NEXT:         |     | |-FieldDecl {{.*}} <line:32:23> col:23 implicit 'int'
1901// CHECK-NEXT:         |     | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1902// CHECK-NEXT:         |     | |-FieldDecl {{.*}} <line:33:25> col:25 implicit 'int'
1903// CHECK-NEXT:         |     | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1904// CHECK-NEXT:         |     | `-FieldDecl {{.*}} <line:34:27> col:27 implicit 'int'
1905// CHECK-NEXT:         |     |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit 9
1906// CHECK-NEXT:         |     `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1907// CHECK-NEXT:         |       |-ForStmt {{.*}} <line:32:3, line:35:9>
1908// CHECK-NEXT:         |       | |-DeclStmt {{.*}} <line:32:8, col:17>
1909// CHECK-NEXT:         |       | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1910// CHECK-NEXT:         |       | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1911// CHECK-NEXT:         |       | |-<<<NULL>>>
1912// CHECK-NEXT:         |       | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1913// CHECK-NEXT:         |       | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1914// CHECK-NEXT:         |       | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1915// CHECK-NEXT:         |       | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1916// CHECK-NEXT:         |       | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1917// CHECK-NEXT:         |       | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1918// CHECK-NEXT:         |       | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1919// CHECK-NEXT:         |       | `-ForStmt {{.*}} <line:33:5, line:35:9>
1920// CHECK-NEXT:         |       |   |-DeclStmt {{.*}} <line:33:10, col:19>
1921// CHECK-NEXT:         |       |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1922// CHECK-NEXT:         |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1923// CHECK-NEXT:         |       |   |-<<<NULL>>>
1924// CHECK-NEXT:         |       |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1925// CHECK-NEXT:         |       |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1926// CHECK-NEXT:         |       |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1927// CHECK-NEXT:         |       |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1928// CHECK-NEXT:         |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1929// CHECK-NEXT:         |       |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1930// CHECK-NEXT:         |       |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1931// CHECK-NEXT:         |       |   `-ForStmt {{.*}} <line:34:7, line:35:9> openmp_structured_block
1932// CHECK-NEXT:         |       |     |-DeclStmt {{.*}} <line:34:12, col:21>
1933// CHECK-NEXT:         |       |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1934// CHECK-NEXT:         |       |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1935// CHECK-NEXT:         |       |     |-<<<NULL>>>
1936// CHECK-NEXT:         |       |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1937// CHECK-NEXT:         |       |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1938// CHECK-NEXT:         |       |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1939// CHECK-NEXT:         |       |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1940// CHECK-NEXT:         |       |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1941// CHECK-NEXT:         |       |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1942// CHECK-NEXT:         |       |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1943// CHECK-NEXT:         |       |     `-NullStmt {{.*}} <line:35:9>
1944// CHECK-NEXT:         |       |-ImplicitParamDecl {{.*}} <line:31:9> col:9 implicit .global_tid. 'const int *const restrict'
1945// CHECK-NEXT:         |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit .bound_tid. 'const int *const restrict'
1946// CHECK-NEXT:         |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.lb. 'const unsigned long'
1947// CHECK-NEXT:         |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit used .previous.ub. 'const unsigned long'
1948// CHECK-NEXT:         |       |-ImplicitParamDecl {{.*}} <col:9> col:9 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-target-teams-distribute-parallel-for-simd.c:31:9) *const restrict'
1949// CHECK-NEXT:         |       |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit
1950// CHECK-NEXT:         |       | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1951// CHECK-NEXT:         |       |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit
1952// CHECK-NEXT:         |       | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1953// CHECK-NEXT:         |       `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit
1954// CHECK-NEXT:         |         `-IntegerLiteral {{.*}} <col:20> 'int' 0
1955// CHECK-NEXT:         |-DeclRefExpr {{.*}} <line:32:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1956// CHECK-NEXT:         |-DeclRefExpr {{.*}} <line:33:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1957// CHECK-NEXT:         `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1958