• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
test_one(int x)3 void test_one(int x) {
4 #pragma omp target
5 #pragma omp teams distribute
6   for (int i = 0; i < x; i++)
7     ;
8 }
9 
test_two(int x,int y)10 void test_two(int x, int y) {
11 #pragma omp target
12 #pragma omp teams distribute
13   for (int i = 0; i < x; i++)
14     for (int i = 0; i < y; i++)
15       ;
16 }
17 
test_three(int x,int y)18 void test_three(int x, int y) {
19 #pragma omp target
20 #pragma omp teams distribute collapse(1)
21   for (int i = 0; i < x; i++)
22     for (int i = 0; i < y; i++)
23       ;
24 }
25 
test_four(int x,int y)26 void test_four(int x, int y) {
27 #pragma omp target
28 #pragma omp teams distribute collapse(2)
29   for (int i = 0; i < x; i++)
30     for (int i = 0; i < y; i++)
31       ;
32 }
33 
test_five(int x,int y,int z)34 void test_five(int x, int y, int z) {
35 #pragma omp target
36 #pragma omp teams distribute collapse(2)
37   for (int i = 0; i < x; i++)
38     for (int i = 0; i < y; i++)
39       for (int i = 0; i < z; i++)
40         ;
41 }
42 
43 // CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>
44 // CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-teams-distribute.c:3:1, line:8:1> line:3:6 test_one 'void (int)'
45 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
46 // CHECK-NEXT: | `-CompoundStmt {{.*}} <col:22, line:8:1>
47 // CHECK-NEXT: |   `-OMPTargetDirective {{.*}} <line:4:1, col:19>
48 // CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
49 // CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:6:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
50 // CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:5:1, col:29>
51 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
52 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:1, col:29>
53 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
54 // CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:29>
55 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
56 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
57 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:6:3, line:7:5>
58 // CHECK-NEXT: |       | | | |   | | |-DeclStmt {{.*}} <line:6:8, col:17>
59 // CHECK-NEXT: |       | | | |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
60 // CHECK-NEXT: |       | | | |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
61 // CHECK-NEXT: |       | | | |   | | |-<<<NULL>>>
62 // CHECK-NEXT: |       | | | |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
63 // CHECK-NEXT: |       | | | |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
64 // CHECK-NEXT: |       | | | |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
65 // CHECK-NEXT: |       | | | |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
66 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
67 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
68 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
69 // CHECK-NEXT: |       | | | |   | | `-NullStmt {{.*}} <line:7:5>
70 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
71 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
72 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
73 // CHECK-NEXT: |       | | | |   | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
74 // CHECK-NEXT: |       | | | |   |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
75 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
76 // CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:4:1) *const restrict'
77 // CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
78 // CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
79 // CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
80 // CHECK-NEXT: |       | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
81 // CHECK-NEXT: |       | | | | |-ForStmt {{.*}} <col:3, line:7:5>
82 // CHECK-NEXT: |       | | | | | |-DeclStmt {{.*}} <line:6:8, col:17>
83 // CHECK-NEXT: |       | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
84 // CHECK-NEXT: |       | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
85 // CHECK-NEXT: |       | | | | | |-<<<NULL>>>
86 // CHECK-NEXT: |       | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
87 // CHECK-NEXT: |       | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
88 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
89 // CHECK-NEXT: |       | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
90 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
91 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
92 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
93 // CHECK-NEXT: |       | | | | | `-NullStmt {{.*}} <line:7:5>
94 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
95 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
96 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
97 // CHECK-NEXT: |       | | | | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
98 // CHECK-NEXT: |       | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
99 // CHECK-NEXT: |       | | | |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
100 // CHECK-NEXT: |       | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
101 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
102 // CHECK-NEXT: |       | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
103 // CHECK-NEXT: |       | | |   `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
104 // CHECK-NEXT: |       | | |     |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
105 // CHECK-NEXT: |       | | |     | |-ParenExpr {{.*}} <col:3> 'int'
106 // CHECK-NEXT: |       | | |     | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
107 // CHECK-NEXT: |       | | |     | |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
108 // CHECK-NEXT: |       | | |     | |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
109 // CHECK-NEXT: |       | | |     | |   `-ParenExpr {{.*}} <col:3> 'int'
110 // CHECK-NEXT: |       | | |     | |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
111 // CHECK-NEXT: |       | | |     | |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
112 // CHECK-NEXT: |       | | |     | |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
113 // CHECK-NEXT: |       | | |     | |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
114 // CHECK-NEXT: |       | | |     | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
115 // CHECK-NEXT: |       | | |     | `-IntegerLiteral {{.*}} <col:26> 'int' 1
116 // CHECK-NEXT: |       | | |     `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
117 // CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
118 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
119 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int'
120 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
121 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
122 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
123 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
124 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:4:1) *const restrict'
125 // CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
126 // CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
127 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int'
128 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
129 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
130 // CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:5:1, col:29>
131 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:6:3, line:7:5>
132 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
133 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:6:3, line:7:5>
134 // CHECK-NEXT: |       |   |   | | |-DeclStmt {{.*}} <line:6:8, col:17>
135 // CHECK-NEXT: |       |   |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
136 // CHECK-NEXT: |       |   |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
137 // CHECK-NEXT: |       |   |   | | |-<<<NULL>>>
138 // CHECK-NEXT: |       |   |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
139 // CHECK-NEXT: |       |   |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
140 // CHECK-NEXT: |       |   |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
141 // CHECK-NEXT: |       |   |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
142 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
143 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
144 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
145 // CHECK-NEXT: |       |   |   | | `-NullStmt {{.*}} <line:7:5>
146 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
147 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
148 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
149 // CHECK-NEXT: |       |   |   | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
150 // CHECK-NEXT: |       |   |   |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
151 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
152 // CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:4:1) *const restrict'
153 // CHECK-NEXT: |       |   |-RecordDecl {{.*}} <line:5:1> col:1 implicit struct definition
154 // CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
155 // CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:6:3> col:3 implicit 'int &'
156 // CHECK-NEXT: |       |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
157 // CHECK-NEXT: |       |   | |-ForStmt {{.*}} <col:3, line:7:5>
158 // CHECK-NEXT: |       |   | | |-DeclStmt {{.*}} <line:6:8, col:17>
159 // CHECK-NEXT: |       |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
160 // CHECK-NEXT: |       |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
161 // CHECK-NEXT: |       |   | | |-<<<NULL>>>
162 // CHECK-NEXT: |       |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
163 // CHECK-NEXT: |       |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
164 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
165 // CHECK-NEXT: |       |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
166 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
167 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
168 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
169 // CHECK-NEXT: |       |   | | `-NullStmt {{.*}} <line:7:5>
170 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:5:1> col:1 implicit .global_tid. 'const int *const restrict'
171 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
172 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:5:1) *const restrict'
173 // CHECK-NEXT: |       |   | `-VarDecl {{.*}} <line:6:8, col:16> col:12 used i 'int' cinit
174 // CHECK-NEXT: |       |   |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
175 // CHECK-NEXT: |       |   |-OMPCapturedExprDecl {{.*}} <col:23> col:23 implicit used .capture_expr. 'int'
176 // CHECK-NEXT: |       |   | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
177 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
178 // CHECK-NEXT: |       |   `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
179 // CHECK-NEXT: |       |     `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
180 // CHECK-NEXT: |       |       |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
181 // CHECK-NEXT: |       |       | |-ParenExpr {{.*}} <col:3> 'int'
182 // CHECK-NEXT: |       |       | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
183 // CHECK-NEXT: |       |       | |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
184 // CHECK-NEXT: |       |       | |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
185 // CHECK-NEXT: |       |       | |   `-ParenExpr {{.*}} <col:3> 'int'
186 // CHECK-NEXT: |       |       | |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
187 // CHECK-NEXT: |       |       | |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
188 // CHECK-NEXT: |       |       | |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
189 // CHECK-NEXT: |       |       | |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
190 // CHECK-NEXT: |       |       | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
191 // CHECK-NEXT: |       |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
192 // CHECK-NEXT: |       |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
193 // CHECK-NEXT: |       `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
194 // CHECK-NEXT: |-FunctionDecl {{.*}} <line:10:1, line:16:1> line:10:6 test_two 'void (int, int)'
195 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'
196 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'
197 // CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:16:1>
198 // CHECK-NEXT: |   `-OMPTargetDirective {{.*}} <line:11:1, col:19>
199 // CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
200 // CHECK-NEXT: |     | |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
201 // CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
202 // CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:12:1, col:29>
203 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
204 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:1, col:29>
205 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
206 // CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:29>
207 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
208 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
209 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:13:3, line:15:7>
210 // CHECK-NEXT: |       | | | |   | | |-DeclStmt {{.*}} <line:13:8, col:17>
211 // CHECK-NEXT: |       | | | |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
212 // CHECK-NEXT: |       | | | |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
213 // CHECK-NEXT: |       | | | |   | | |-<<<NULL>>>
214 // CHECK-NEXT: |       | | | |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
215 // CHECK-NEXT: |       | | | |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
216 // CHECK-NEXT: |       | | | |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
217 // CHECK-NEXT: |       | | | |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
218 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
219 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
220 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
221 // CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
222 // CHECK-NEXT: |       | | | |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
223 // CHECK-NEXT: |       | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
224 // CHECK-NEXT: |       | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
225 // CHECK-NEXT: |       | | | |   | |   |-<<<NULL>>>
226 // CHECK-NEXT: |       | | | |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
227 // CHECK-NEXT: |       | | | |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
228 // CHECK-NEXT: |       | | | |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
229 // CHECK-NEXT: |       | | | |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
230 // CHECK-NEXT: |       | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
231 // CHECK-NEXT: |       | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
232 // CHECK-NEXT: |       | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
233 // CHECK-NEXT: |       | | | |   | |   `-NullStmt {{.*}} <line:15:7>
234 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
235 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
236 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
237 // CHECK-NEXT: |       | | | |   | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
238 // CHECK-NEXT: |       | | | |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
239 // CHECK-NEXT: |       | | | |   | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
240 // CHECK-NEXT: |       | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
241 // CHECK-NEXT: |       | | | |   |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
242 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
243 // CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:11:1) *const restrict'
244 // CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
245 // CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
246 // CHECK-NEXT: |       | | | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
247 // CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
248 // CHECK-NEXT: |       | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
249 // CHECK-NEXT: |       | | | | |-ForStmt {{.*}} <line:13:3, line:15:7>
250 // CHECK-NEXT: |       | | | | | |-DeclStmt {{.*}} <line:13:8, col:17>
251 // CHECK-NEXT: |       | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
252 // CHECK-NEXT: |       | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
253 // CHECK-NEXT: |       | | | | | |-<<<NULL>>>
254 // CHECK-NEXT: |       | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
255 // CHECK-NEXT: |       | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
256 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
257 // CHECK-NEXT: |       | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
258 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
259 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
260 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
261 // CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:14:5, line:15:7>
262 // CHECK-NEXT: |       | | | | |   |-DeclStmt {{.*}} <line:14:10, col:19>
263 // CHECK-NEXT: |       | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
264 // CHECK-NEXT: |       | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
265 // CHECK-NEXT: |       | | | | |   |-<<<NULL>>>
266 // CHECK-NEXT: |       | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
267 // CHECK-NEXT: |       | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
268 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
269 // CHECK-NEXT: |       | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
270 // CHECK-NEXT: |       | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
271 // CHECK-NEXT: |       | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
272 // CHECK-NEXT: |       | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
273 // CHECK-NEXT: |       | | | | |   `-NullStmt {{.*}} <line:15:7>
274 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
275 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
276 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
277 // CHECK-NEXT: |       | | | | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
278 // CHECK-NEXT: |       | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
279 // CHECK-NEXT: |       | | | | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
280 // CHECK-NEXT: |       | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
281 // CHECK-NEXT: |       | | | |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
282 // CHECK-NEXT: |       | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
283 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
284 // CHECK-NEXT: |       | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
285 // CHECK-NEXT: |       | | |   `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
286 // CHECK-NEXT: |       | | |     |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
287 // CHECK-NEXT: |       | | |     | |-ParenExpr {{.*}} <col:3> 'int'
288 // CHECK-NEXT: |       | | |     | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
289 // CHECK-NEXT: |       | | |     | |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
290 // CHECK-NEXT: |       | | |     | |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
291 // CHECK-NEXT: |       | | |     | |   `-ParenExpr {{.*}} <col:3> 'int'
292 // CHECK-NEXT: |       | | |     | |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
293 // CHECK-NEXT: |       | | |     | |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
294 // CHECK-NEXT: |       | | |     | |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
295 // CHECK-NEXT: |       | | |     | |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
296 // CHECK-NEXT: |       | | |     | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
297 // CHECK-NEXT: |       | | |     | `-IntegerLiteral {{.*}} <col:26> 'int' 1
298 // CHECK-NEXT: |       | | |     `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
299 // CHECK-NEXT: |       | | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
300 // CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
301 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
302 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit .global_tid. 'const int'
303 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
304 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
305 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
306 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
307 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:11:1) *const restrict'
308 // CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
309 // CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
310 // CHECK-NEXT: |       | | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int'
311 // CHECK-NEXT: |       | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
312 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int'
313 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
314 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
315 // CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:12:1, col:29>
316 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:13:3, line:15:7>
317 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
318 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:13:3, line:15:7>
319 // CHECK-NEXT: |       |   |   | | |-DeclStmt {{.*}} <line:13:8, col:17>
320 // CHECK-NEXT: |       |   |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
321 // CHECK-NEXT: |       |   |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
322 // CHECK-NEXT: |       |   |   | | |-<<<NULL>>>
323 // CHECK-NEXT: |       |   |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
324 // CHECK-NEXT: |       |   |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
325 // CHECK-NEXT: |       |   |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
326 // CHECK-NEXT: |       |   |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
327 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
328 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
329 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
330 // CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
331 // CHECK-NEXT: |       |   |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
332 // CHECK-NEXT: |       |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
333 // CHECK-NEXT: |       |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
334 // CHECK-NEXT: |       |   |   | |   |-<<<NULL>>>
335 // CHECK-NEXT: |       |   |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
336 // CHECK-NEXT: |       |   |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
337 // CHECK-NEXT: |       |   |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
338 // CHECK-NEXT: |       |   |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
339 // CHECK-NEXT: |       |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
340 // CHECK-NEXT: |       |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
341 // CHECK-NEXT: |       |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
342 // CHECK-NEXT: |       |   |   | |   `-NullStmt {{.*}} <line:15:7>
343 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
344 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
345 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
346 // CHECK-NEXT: |       |   |   | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
347 // CHECK-NEXT: |       |   |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
348 // CHECK-NEXT: |       |   |   | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
349 // CHECK-NEXT: |       |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
350 // CHECK-NEXT: |       |   |   |-DeclRefExpr {{.*}} <line:13:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
351 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
352 // CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:11:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:11:1) *const restrict'
353 // CHECK-NEXT: |       |   |-RecordDecl {{.*}} <line:12:1> col:1 implicit struct definition
354 // CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
355 // CHECK-NEXT: |       |   | |-FieldDecl {{.*}} <line:13:3> col:3 implicit 'int &'
356 // CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:14:25> col:25 implicit 'int &'
357 // CHECK-NEXT: |       |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
358 // CHECK-NEXT: |       |   | |-ForStmt {{.*}} <line:13:3, line:15:7>
359 // CHECK-NEXT: |       |   | | |-DeclStmt {{.*}} <line:13:8, col:17>
360 // CHECK-NEXT: |       |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
361 // CHECK-NEXT: |       |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
362 // CHECK-NEXT: |       |   | | |-<<<NULL>>>
363 // CHECK-NEXT: |       |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
364 // CHECK-NEXT: |       |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
365 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
366 // CHECK-NEXT: |       |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
367 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
368 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
369 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
370 // CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:14:5, line:15:7>
371 // CHECK-NEXT: |       |   | |   |-DeclStmt {{.*}} <line:14:10, col:19>
372 // CHECK-NEXT: |       |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
373 // CHECK-NEXT: |       |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
374 // CHECK-NEXT: |       |   | |   |-<<<NULL>>>
375 // CHECK-NEXT: |       |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
376 // CHECK-NEXT: |       |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
377 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
378 // CHECK-NEXT: |       |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
379 // CHECK-NEXT: |       |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
380 // CHECK-NEXT: |       |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
381 // CHECK-NEXT: |       |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
382 // CHECK-NEXT: |       |   | |   `-NullStmt {{.*}} <line:15:7>
383 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:12:1> col:1 implicit .global_tid. 'const int *const restrict'
384 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
385 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:12:1) *const restrict'
386 // CHECK-NEXT: |       |   | |-VarDecl {{.*}} <line:13:8, col:16> col:12 used i 'int' cinit
387 // CHECK-NEXT: |       |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
388 // CHECK-NEXT: |       |   | `-VarDecl {{.*}} <line:14:10, col:18> col:14 used i 'int' cinit
389 // CHECK-NEXT: |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
390 // CHECK-NEXT: |       |   |-OMPCapturedExprDecl {{.*}} <line:13:23> col:23 implicit used .capture_expr. 'int'
391 // CHECK-NEXT: |       |   | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
392 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
393 // CHECK-NEXT: |       |   `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
394 // CHECK-NEXT: |       |     `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
395 // CHECK-NEXT: |       |       |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
396 // CHECK-NEXT: |       |       | |-ParenExpr {{.*}} <col:3> 'int'
397 // CHECK-NEXT: |       |       | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
398 // CHECK-NEXT: |       |       | |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
399 // CHECK-NEXT: |       |       | |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
400 // CHECK-NEXT: |       |       | |   `-ParenExpr {{.*}} <col:3> 'int'
401 // CHECK-NEXT: |       |       | |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
402 // CHECK-NEXT: |       |       | |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
403 // CHECK-NEXT: |       |       | |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
404 // CHECK-NEXT: |       |       | |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
405 // CHECK-NEXT: |       |       | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
406 // CHECK-NEXT: |       |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
407 // CHECK-NEXT: |       |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
408 // CHECK-NEXT: |       |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
409 // CHECK-NEXT: |       `-DeclRefExpr {{.*}} <line:14:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
410 // CHECK-NEXT: |-FunctionDecl {{.*}} <line:18:1, line:24:1> line:18:6 test_three 'void (int, int)'
411 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'
412 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'
413 // CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:24:1>
414 // CHECK-NEXT: |   `-OMPTargetDirective {{.*}} <line:19:1, col:19>
415 // CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
416 // CHECK-NEXT: |     | |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
417 // CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
418 // CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:20:1, col:41>
419 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
420 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:1, col:41>
421 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
422 // CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:41>
423 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
424 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
425 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:39> 'int' 1
426 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
427 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
428 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:21:3, line:23:7>
429 // CHECK-NEXT: |       | | | |   | | |-DeclStmt {{.*}} <line:21:8, col:17>
430 // CHECK-NEXT: |       | | | |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
431 // CHECK-NEXT: |       | | | |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
432 // CHECK-NEXT: |       | | | |   | | |-<<<NULL>>>
433 // CHECK-NEXT: |       | | | |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
434 // CHECK-NEXT: |       | | | |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
435 // CHECK-NEXT: |       | | | |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
436 // CHECK-NEXT: |       | | | |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
437 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
438 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
439 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
440 // CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
441 // CHECK-NEXT: |       | | | |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
442 // CHECK-NEXT: |       | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
443 // CHECK-NEXT: |       | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
444 // CHECK-NEXT: |       | | | |   | |   |-<<<NULL>>>
445 // CHECK-NEXT: |       | | | |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
446 // CHECK-NEXT: |       | | | |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
447 // CHECK-NEXT: |       | | | |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
448 // CHECK-NEXT: |       | | | |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
449 // CHECK-NEXT: |       | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
450 // CHECK-NEXT: |       | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
451 // CHECK-NEXT: |       | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
452 // CHECK-NEXT: |       | | | |   | |   `-NullStmt {{.*}} <line:23:7>
453 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
454 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
455 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
456 // CHECK-NEXT: |       | | | |   | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
457 // CHECK-NEXT: |       | | | |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
458 // CHECK-NEXT: |       | | | |   | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
459 // CHECK-NEXT: |       | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
460 // CHECK-NEXT: |       | | | |   |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
461 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
462 // CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:19:1) *const restrict'
463 // CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
464 // CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
465 // CHECK-NEXT: |       | | | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
466 // CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
467 // CHECK-NEXT: |       | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
468 // CHECK-NEXT: |       | | | | |-ForStmt {{.*}} <line:21:3, line:23:7>
469 // CHECK-NEXT: |       | | | | | |-DeclStmt {{.*}} <line:21:8, col:17>
470 // CHECK-NEXT: |       | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
471 // CHECK-NEXT: |       | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
472 // CHECK-NEXT: |       | | | | | |-<<<NULL>>>
473 // CHECK-NEXT: |       | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
474 // CHECK-NEXT: |       | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
475 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
476 // CHECK-NEXT: |       | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
477 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
478 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
479 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
480 // CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:22:5, line:23:7>
481 // CHECK-NEXT: |       | | | | |   |-DeclStmt {{.*}} <line:22:10, col:19>
482 // CHECK-NEXT: |       | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
483 // CHECK-NEXT: |       | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
484 // CHECK-NEXT: |       | | | | |   |-<<<NULL>>>
485 // CHECK-NEXT: |       | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
486 // CHECK-NEXT: |       | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
487 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
488 // CHECK-NEXT: |       | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
489 // CHECK-NEXT: |       | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
490 // CHECK-NEXT: |       | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
491 // CHECK-NEXT: |       | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
492 // CHECK-NEXT: |       | | | | |   `-NullStmt {{.*}} <line:23:7>
493 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
494 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
495 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
496 // CHECK-NEXT: |       | | | | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
497 // CHECK-NEXT: |       | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
498 // CHECK-NEXT: |       | | | | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
499 // CHECK-NEXT: |       | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
500 // CHECK-NEXT: |       | | | |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
501 // CHECK-NEXT: |       | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
502 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
503 // CHECK-NEXT: |       | | | `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
504 // CHECK-NEXT: |       | | |   `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
505 // CHECK-NEXT: |       | | |     |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
506 // CHECK-NEXT: |       | | |     | |-ParenExpr {{.*}} <col:3> 'int'
507 // CHECK-NEXT: |       | | |     | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
508 // CHECK-NEXT: |       | | |     | |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
509 // CHECK-NEXT: |       | | |     | |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
510 // CHECK-NEXT: |       | | |     | |   `-ParenExpr {{.*}} <col:3> 'int'
511 // CHECK-NEXT: |       | | |     | |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
512 // CHECK-NEXT: |       | | |     | |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
513 // CHECK-NEXT: |       | | |     | |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
514 // CHECK-NEXT: |       | | |     | |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
515 // CHECK-NEXT: |       | | |     | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
516 // CHECK-NEXT: |       | | |     | `-IntegerLiteral {{.*}} <col:26> 'int' 1
517 // CHECK-NEXT: |       | | |     `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
518 // CHECK-NEXT: |       | | |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
519 // CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
520 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
521 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit .global_tid. 'const int'
522 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
523 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
524 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
525 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
526 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:19:1) *const restrict'
527 // CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
528 // CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
529 // CHECK-NEXT: |       | | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int'
530 // CHECK-NEXT: |       | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
531 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int'
532 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
533 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
534 // CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:20:1, col:41>
535 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:30, col:40>
536 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:39> 'int'
537 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:39> 'int' 1
538 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:21:3, line:23:7>
539 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
540 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:21:3, line:23:7>
541 // CHECK-NEXT: |       |   |   | | |-DeclStmt {{.*}} <line:21:8, col:17>
542 // CHECK-NEXT: |       |   |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
543 // CHECK-NEXT: |       |   |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
544 // CHECK-NEXT: |       |   |   | | |-<<<NULL>>>
545 // CHECK-NEXT: |       |   |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
546 // CHECK-NEXT: |       |   |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
547 // CHECK-NEXT: |       |   |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
548 // CHECK-NEXT: |       |   |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
549 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
550 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
551 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
552 // CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
553 // CHECK-NEXT: |       |   |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
554 // CHECK-NEXT: |       |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
555 // CHECK-NEXT: |       |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
556 // CHECK-NEXT: |       |   |   | |   |-<<<NULL>>>
557 // CHECK-NEXT: |       |   |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
558 // CHECK-NEXT: |       |   |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
559 // CHECK-NEXT: |       |   |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
560 // CHECK-NEXT: |       |   |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
561 // CHECK-NEXT: |       |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
562 // CHECK-NEXT: |       |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
563 // CHECK-NEXT: |       |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
564 // CHECK-NEXT: |       |   |   | |   `-NullStmt {{.*}} <line:23:7>
565 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
566 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
567 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
568 // CHECK-NEXT: |       |   |   | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
569 // CHECK-NEXT: |       |   |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
570 // CHECK-NEXT: |       |   |   | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
571 // CHECK-NEXT: |       |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
572 // CHECK-NEXT: |       |   |   |-DeclRefExpr {{.*}} <line:21:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
573 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
574 // CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:19:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:19:1) *const restrict'
575 // CHECK-NEXT: |       |   |-RecordDecl {{.*}} <line:20:1> col:1 implicit struct definition
576 // CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
577 // CHECK-NEXT: |       |   | |-FieldDecl {{.*}} <line:21:3> col:3 implicit 'int &'
578 // CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:22:25> col:25 implicit 'int &'
579 // CHECK-NEXT: |       |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
580 // CHECK-NEXT: |       |   | |-ForStmt {{.*}} <line:21:3, line:23:7>
581 // CHECK-NEXT: |       |   | | |-DeclStmt {{.*}} <line:21:8, col:17>
582 // CHECK-NEXT: |       |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
583 // CHECK-NEXT: |       |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
584 // CHECK-NEXT: |       |   | | |-<<<NULL>>>
585 // CHECK-NEXT: |       |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
586 // CHECK-NEXT: |       |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
587 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
588 // CHECK-NEXT: |       |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
589 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
590 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
591 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
592 // CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:22:5, line:23:7>
593 // CHECK-NEXT: |       |   | |   |-DeclStmt {{.*}} <line:22:10, col:19>
594 // CHECK-NEXT: |       |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
595 // CHECK-NEXT: |       |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
596 // CHECK-NEXT: |       |   | |   |-<<<NULL>>>
597 // CHECK-NEXT: |       |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
598 // CHECK-NEXT: |       |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
599 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
600 // CHECK-NEXT: |       |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
601 // CHECK-NEXT: |       |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
602 // CHECK-NEXT: |       |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
603 // CHECK-NEXT: |       |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
604 // CHECK-NEXT: |       |   | |   `-NullStmt {{.*}} <line:23:7>
605 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:20:1> col:1 implicit .global_tid. 'const int *const restrict'
606 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
607 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:20:1) *const restrict'
608 // CHECK-NEXT: |       |   | |-VarDecl {{.*}} <line:21:8, col:16> col:12 used i 'int' cinit
609 // CHECK-NEXT: |       |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
610 // CHECK-NEXT: |       |   | `-VarDecl {{.*}} <line:22:10, col:18> col:14 used i 'int' cinit
611 // CHECK-NEXT: |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
612 // CHECK-NEXT: |       |   |-OMPCapturedExprDecl {{.*}} <line:21:23> col:23 implicit used .capture_expr. 'int'
613 // CHECK-NEXT: |       |   | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
614 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
615 // CHECK-NEXT: |       |   `-OMPCapturedExprDecl {{.*}} <col:3, <invalid sloc>> col:3 implicit used .capture_expr. 'int'
616 // CHECK-NEXT: |       |     `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'int' '-'
617 // CHECK-NEXT: |       |       |-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
618 // CHECK-NEXT: |       |       | |-ParenExpr {{.*}} <col:3> 'int'
619 // CHECK-NEXT: |       |       | | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
620 // CHECK-NEXT: |       |       | |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
621 // CHECK-NEXT: |       |       | |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
622 // CHECK-NEXT: |       |       | |   `-ParenExpr {{.*}} <col:3> 'int'
623 // CHECK-NEXT: |       |       | |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
624 // CHECK-NEXT: |       |       | |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
625 // CHECK-NEXT: |       |       | |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
626 // CHECK-NEXT: |       |       | |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
627 // CHECK-NEXT: |       |       | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
628 // CHECK-NEXT: |       |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
629 // CHECK-NEXT: |       |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
630 // CHECK-NEXT: |       |-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
631 // CHECK-NEXT: |       `-DeclRefExpr {{.*}} <line:22:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
632 // CHECK-NEXT: |-FunctionDecl {{.*}} <line:26:1, line:32:1> line:26:6 test_four 'void (int, int)'
633 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
634 // CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
635 // CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:32:1>
636 // CHECK-NEXT: |   `-OMPTargetDirective {{.*}} <line:27:1, col:19>
637 // CHECK-NEXT: |     |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
638 // CHECK-NEXT: |     | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
639 // CHECK-NEXT: |     | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
640 // CHECK-NEXT: |     `-CapturedStmt {{.*}} <line:28:1, col:41>
641 // CHECK-NEXT: |       |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
642 // CHECK-NEXT: |       | |-CapturedStmt {{.*}} <col:1, col:41>
643 // CHECK-NEXT: |       | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
644 // CHECK-NEXT: |       | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:41>
645 // CHECK-NEXT: |       | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
646 // CHECK-NEXT: |       | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
647 // CHECK-NEXT: |       | | | | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
648 // CHECK-NEXT: |       | | | | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
649 // CHECK-NEXT: |       | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
650 // CHECK-NEXT: |       | | | |   | |-ForStmt {{.*}} <line:29:3, line:31:7>
651 // CHECK-NEXT: |       | | | |   | | |-DeclStmt {{.*}} <line:29:8, col:17>
652 // CHECK-NEXT: |       | | | |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
653 // CHECK-NEXT: |       | | | |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
654 // CHECK-NEXT: |       | | | |   | | |-<<<NULL>>>
655 // CHECK-NEXT: |       | | | |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
656 // CHECK-NEXT: |       | | | |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
657 // CHECK-NEXT: |       | | | |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
658 // CHECK-NEXT: |       | | | |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
659 // CHECK-NEXT: |       | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
660 // CHECK-NEXT: |       | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
661 // CHECK-NEXT: |       | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
662 // CHECK-NEXT: |       | | | |   | | `-ForStmt {{.*}} <line:30:5, line:31:7>
663 // CHECK-NEXT: |       | | | |   | |   |-DeclStmt {{.*}} <line:30:10, col:19>
664 // CHECK-NEXT: |       | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
665 // CHECK-NEXT: |       | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
666 // CHECK-NEXT: |       | | | |   | |   |-<<<NULL>>>
667 // CHECK-NEXT: |       | | | |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
668 // CHECK-NEXT: |       | | | |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
669 // CHECK-NEXT: |       | | | |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
670 // CHECK-NEXT: |       | | | |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
671 // CHECK-NEXT: |       | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
672 // CHECK-NEXT: |       | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
673 // CHECK-NEXT: |       | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
674 // CHECK-NEXT: |       | | | |   | |   `-NullStmt {{.*}} <line:31:7>
675 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
676 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
677 // CHECK-NEXT: |       | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
678 // CHECK-NEXT: |       | | | |   | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
679 // CHECK-NEXT: |       | | | |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
680 // CHECK-NEXT: |       | | | |   | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
681 // CHECK-NEXT: |       | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
682 // CHECK-NEXT: |       | | | |   |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
683 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
684 // CHECK-NEXT: |       | | | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:27:1) *const restrict'
685 // CHECK-NEXT: |       | | | |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
686 // CHECK-NEXT: |       | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
687 // CHECK-NEXT: |       | | | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
688 // CHECK-NEXT: |       | | | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
689 // CHECK-NEXT: |       | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
690 // CHECK-NEXT: |       | | | | |-ForStmt {{.*}} <line:29:3, line:31:7>
691 // CHECK-NEXT: |       | | | | | |-DeclStmt {{.*}} <line:29:8, col:17>
692 // CHECK-NEXT: |       | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
693 // CHECK-NEXT: |       | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
694 // CHECK-NEXT: |       | | | | | |-<<<NULL>>>
695 // CHECK-NEXT: |       | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
696 // CHECK-NEXT: |       | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
697 // CHECK-NEXT: |       | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
698 // CHECK-NEXT: |       | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
699 // CHECK-NEXT: |       | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
700 // CHECK-NEXT: |       | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
701 // CHECK-NEXT: |       | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
702 // CHECK-NEXT: |       | | | | | `-ForStmt {{.*}} <line:30:5, line:31:7>
703 // CHECK-NEXT: |       | | | | |   |-DeclStmt {{.*}} <line:30:10, col:19>
704 // CHECK-NEXT: |       | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
705 // CHECK-NEXT: |       | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
706 // CHECK-NEXT: |       | | | | |   |-<<<NULL>>>
707 // CHECK-NEXT: |       | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
708 // CHECK-NEXT: |       | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
709 // CHECK-NEXT: |       | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
710 // CHECK-NEXT: |       | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
711 // CHECK-NEXT: |       | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
712 // CHECK-NEXT: |       | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
713 // CHECK-NEXT: |       | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
714 // CHECK-NEXT: |       | | | | |   `-NullStmt {{.*}} <line:31:7>
715 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
716 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
717 // CHECK-NEXT: |       | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
718 // CHECK-NEXT: |       | | | | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
719 // CHECK-NEXT: |       | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
720 // CHECK-NEXT: |       | | | | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
721 // CHECK-NEXT: |       | | | |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
722 // CHECK-NEXT: |       | | | |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
723 // CHECK-NEXT: |       | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
724 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
725 // CHECK-NEXT: |       | | | |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
726 // CHECK-NEXT: |       | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
727 // CHECK-NEXT: |       | | | |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
728 // CHECK-NEXT: |       | | | `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
729 // CHECK-NEXT: |       | | |   `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
730 // CHECK-NEXT: |       | | |     |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
731 // CHECK-NEXT: |       | | |     | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
732 // CHECK-NEXT: |       | | |     | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
733 // CHECK-NEXT: |       | | |     | |   |-ParenExpr {{.*}} <col:3> 'int'
734 // CHECK-NEXT: |       | | |     | |   | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
735 // CHECK-NEXT: |       | | |     | |   |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
736 // CHECK-NEXT: |       | | |     | |   |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
737 // CHECK-NEXT: |       | | |     | |   |   `-ParenExpr {{.*}} <col:3> 'int'
738 // CHECK-NEXT: |       | | |     | |   |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
739 // CHECK-NEXT: |       | | |     | |   |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
740 // CHECK-NEXT: |       | | |     | |   |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
741 // CHECK-NEXT: |       | | |     | |   |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
742 // CHECK-NEXT: |       | | |     | |   |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
743 // CHECK-NEXT: |       | | |     | |   `-IntegerLiteral {{.*}} <col:26> 'int' 1
744 // CHECK-NEXT: |       | | |     | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
745 // CHECK-NEXT: |       | | |     |   `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
746 // CHECK-NEXT: |       | | |     |     |-ParenExpr {{.*}} <col:5> 'int'
747 // CHECK-NEXT: |       | | |     |     | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
748 // CHECK-NEXT: |       | | |     |     |   |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
749 // CHECK-NEXT: |       | | |     |     |   | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
750 // CHECK-NEXT: |       | | |     |     |   `-ParenExpr {{.*}} <col:5> 'int'
751 // CHECK-NEXT: |       | | |     |     |     `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
752 // CHECK-NEXT: |       | | |     |     |       |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
753 // CHECK-NEXT: |       | | |     |     |       | |-IntegerLiteral {{.*}} <col:18> 'int' 0
754 // CHECK-NEXT: |       | | |     |     |       | `-IntegerLiteral {{.*}} <col:28> 'int' 1
755 // CHECK-NEXT: |       | | |     |     |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
756 // CHECK-NEXT: |       | | |     |     `-IntegerLiteral {{.*}} <col:28> 'int' 1
757 // CHECK-NEXT: |       | | |     `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
758 // CHECK-NEXT: |       | | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
759 // CHECK-NEXT: |       | | |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
760 // CHECK-NEXT: |       | | `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
761 // CHECK-NEXT: |       | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
762 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit .global_tid. 'const int'
763 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
764 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
765 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
766 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
767 // CHECK-NEXT: |       | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:27:1) *const restrict'
768 // CHECK-NEXT: |       | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
769 // CHECK-NEXT: |       | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
770 // CHECK-NEXT: |       | | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int'
771 // CHECK-NEXT: |       | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
772 // CHECK-NEXT: |       | | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int'
773 // CHECK-NEXT: |       | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
774 // CHECK-NEXT: |       | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
775 // CHECK-NEXT: |       |   |-OMPTeamsDistributeDirective {{.*}} <line:28:1, col:41>
776 // CHECK-NEXT: |       |   | |-OMPCollapseClause {{.*}} <col:30, col:40>
777 // CHECK-NEXT: |       |   | | `-ConstantExpr {{.*}} <col:39> 'int'
778 // CHECK-NEXT: |       |   | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
779 // CHECK-NEXT: |       |   | `-CapturedStmt {{.*}} <line:29:3, line:31:7>
780 // CHECK-NEXT: |       |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
781 // CHECK-NEXT: |       |   |   | |-ForStmt {{.*}} <line:29:3, line:31:7>
782 // CHECK-NEXT: |       |   |   | | |-DeclStmt {{.*}} <line:29:8, col:17>
783 // CHECK-NEXT: |       |   |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
784 // CHECK-NEXT: |       |   |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
785 // CHECK-NEXT: |       |   |   | | |-<<<NULL>>>
786 // CHECK-NEXT: |       |   |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
787 // CHECK-NEXT: |       |   |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
788 // CHECK-NEXT: |       |   |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
789 // CHECK-NEXT: |       |   |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
790 // CHECK-NEXT: |       |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
791 // CHECK-NEXT: |       |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
792 // CHECK-NEXT: |       |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
793 // CHECK-NEXT: |       |   |   | | `-ForStmt {{.*}} <line:30:5, line:31:7>
794 // CHECK-NEXT: |       |   |   | |   |-DeclStmt {{.*}} <line:30:10, col:19>
795 // CHECK-NEXT: |       |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
796 // CHECK-NEXT: |       |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
797 // CHECK-NEXT: |       |   |   | |   |-<<<NULL>>>
798 // CHECK-NEXT: |       |   |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
799 // CHECK-NEXT: |       |   |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
800 // CHECK-NEXT: |       |   |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
801 // CHECK-NEXT: |       |   |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
802 // CHECK-NEXT: |       |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
803 // CHECK-NEXT: |       |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
804 // CHECK-NEXT: |       |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
805 // CHECK-NEXT: |       |   |   | |   `-NullStmt {{.*}} <line:31:7>
806 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
807 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
808 // CHECK-NEXT: |       |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
809 // CHECK-NEXT: |       |   |   | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
810 // CHECK-NEXT: |       |   |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
811 // CHECK-NEXT: |       |   |   | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
812 // CHECK-NEXT: |       |   |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
813 // CHECK-NEXT: |       |   |   |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
814 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
815 // CHECK-NEXT: |       |   |-ImplicitParamDecl {{.*}} <line:27:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:27:1) *const restrict'
816 // CHECK-NEXT: |       |   |-RecordDecl {{.*}} <line:28:1> col:1 implicit struct definition
817 // CHECK-NEXT: |       |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
818 // CHECK-NEXT: |       |   | |-FieldDecl {{.*}} <line:29:3> col:3 implicit 'int &'
819 // CHECK-NEXT: |       |   | `-FieldDecl {{.*}} <line:30:5> col:5 implicit 'int &'
820 // CHECK-NEXT: |       |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
821 // CHECK-NEXT: |       |   | |-ForStmt {{.*}} <line:29:3, line:31:7>
822 // CHECK-NEXT: |       |   | | |-DeclStmt {{.*}} <line:29:8, col:17>
823 // CHECK-NEXT: |       |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
824 // CHECK-NEXT: |       |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
825 // CHECK-NEXT: |       |   | | |-<<<NULL>>>
826 // CHECK-NEXT: |       |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
827 // CHECK-NEXT: |       |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
828 // CHECK-NEXT: |       |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
829 // CHECK-NEXT: |       |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
830 // CHECK-NEXT: |       |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
831 // CHECK-NEXT: |       |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
832 // CHECK-NEXT: |       |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
833 // CHECK-NEXT: |       |   | | `-ForStmt {{.*}} <line:30:5, line:31:7>
834 // CHECK-NEXT: |       |   | |   |-DeclStmt {{.*}} <line:30:10, col:19>
835 // CHECK-NEXT: |       |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
836 // CHECK-NEXT: |       |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
837 // CHECK-NEXT: |       |   | |   |-<<<NULL>>>
838 // CHECK-NEXT: |       |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
839 // CHECK-NEXT: |       |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
840 // CHECK-NEXT: |       |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
841 // CHECK-NEXT: |       |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
842 // CHECK-NEXT: |       |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
843 // CHECK-NEXT: |       |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
844 // CHECK-NEXT: |       |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
845 // CHECK-NEXT: |       |   | |   `-NullStmt {{.*}} <line:31:7>
846 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <line:28:1> col:1 implicit .global_tid. 'const int *const restrict'
847 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
848 // CHECK-NEXT: |       |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:28:1) *const restrict'
849 // CHECK-NEXT: |       |   | |-VarDecl {{.*}} <line:29:8, col:16> col:12 used i 'int' cinit
850 // CHECK-NEXT: |       |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
851 // CHECK-NEXT: |       |   | `-VarDecl {{.*}} <line:30:10, col:18> col:14 used i 'int' cinit
852 // CHECK-NEXT: |       |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
853 // CHECK-NEXT: |       |   |-OMPCapturedExprDecl {{.*}} <line:29:23> col:23 implicit used .capture_expr. 'int'
854 // CHECK-NEXT: |       |   | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
855 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
856 // CHECK-NEXT: |       |   |-OMPCapturedExprDecl {{.*}} <line:30:25> col:25 implicit used .capture_expr. 'int'
857 // CHECK-NEXT: |       |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
858 // CHECK-NEXT: |       |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
859 // CHECK-NEXT: |       |   `-OMPCapturedExprDecl {{.*}} <line:29:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
860 // CHECK-NEXT: |       |     `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
861 // CHECK-NEXT: |       |       |-BinaryOperator {{.*}} <col:3, line:30:28> 'long' '*'
862 // CHECK-NEXT: |       |       | |-ImplicitCastExpr {{.*}} <line:29:3, col:26> 'long' <IntegralCast>
863 // CHECK-NEXT: |       |       | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
864 // CHECK-NEXT: |       |       | |   |-ParenExpr {{.*}} <col:3> 'int'
865 // CHECK-NEXT: |       |       | |   | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
866 // CHECK-NEXT: |       |       | |   |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
867 // CHECK-NEXT: |       |       | |   |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
868 // CHECK-NEXT: |       |       | |   |   `-ParenExpr {{.*}} <col:3> 'int'
869 // CHECK-NEXT: |       |       | |   |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
870 // CHECK-NEXT: |       |       | |   |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
871 // CHECK-NEXT: |       |       | |   |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
872 // CHECK-NEXT: |       |       | |   |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
873 // CHECK-NEXT: |       |       | |   |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
874 // CHECK-NEXT: |       |       | |   `-IntegerLiteral {{.*}} <col:26> 'int' 1
875 // CHECK-NEXT: |       |       | `-ImplicitCastExpr {{.*}} <line:30:5, col:28> 'long' <IntegralCast>
876 // CHECK-NEXT: |       |       |   `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
877 // CHECK-NEXT: |       |       |     |-ParenExpr {{.*}} <col:5> 'int'
878 // CHECK-NEXT: |       |       |     | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
879 // CHECK-NEXT: |       |       |     |   |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
880 // CHECK-NEXT: |       |       |     |   | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
881 // CHECK-NEXT: |       |       |     |   `-ParenExpr {{.*}} <col:5> 'int'
882 // CHECK-NEXT: |       |       |     |     `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
883 // CHECK-NEXT: |       |       |     |       |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
884 // CHECK-NEXT: |       |       |     |       | |-IntegerLiteral {{.*}} <col:18> 'int' 0
885 // CHECK-NEXT: |       |       |     |       | `-IntegerLiteral {{.*}} <col:28> 'int' 1
886 // CHECK-NEXT: |       |       |     |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
887 // CHECK-NEXT: |       |       |     `-IntegerLiteral {{.*}} <col:28> 'int' 1
888 // CHECK-NEXT: |       |       `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
889 // CHECK-NEXT: |       |         `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
890 // CHECK-NEXT: |       |-DeclRefExpr {{.*}} <line:29:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
891 // CHECK-NEXT: |       `-DeclRefExpr {{.*}} <line:30:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
892 // CHECK-NEXT: `-FunctionDecl {{.*}} <line:34:1, line:41:1> line:34:6 test_five 'void (int, int, int)'
893 // CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'
894 // CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'
895 // CHECK-NEXT:   |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'
896 // CHECK-NEXT:   `-CompoundStmt {{.*}} <col:37, line:41:1>
897 // CHECK-NEXT:     `-OMPTargetDirective {{.*}} <line:35:1, col:19>
898 // CHECK-NEXT:       |-OMPFirstprivateClause {{.*}} <<invalid sloc>> <implicit>
899 // CHECK-NEXT:       | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
900 // CHECK-NEXT:       | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
901 // CHECK-NEXT:       | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
902 // CHECK-NEXT:       `-CapturedStmt {{.*}} <line:36:1, col:41>
903 // CHECK-NEXT:         |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
904 // CHECK-NEXT:         | |-CapturedStmt {{.*}} <col:1, col:41>
905 // CHECK-NEXT:         | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
906 // CHECK-NEXT:         | | | |-OMPTeamsDistributeDirective {{.*}} <col:1, col:41>
907 // CHECK-NEXT:         | | | | |-OMPCollapseClause {{.*}} <col:30, col:40>
908 // CHECK-NEXT:         | | | | | `-ConstantExpr {{.*}} <col:39> 'int'
909 // CHECK-NEXT:         | | | | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
910 // CHECK-NEXT:         | | | | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
911 // CHECK-NEXT:         | | | |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
912 // CHECK-NEXT:         | | | |   | |-ForStmt {{.*}} <line:37:3, line:40:9>
913 // CHECK-NEXT:         | | | |   | | |-DeclStmt {{.*}} <line:37:8, col:17>
914 // CHECK-NEXT:         | | | |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
915 // CHECK-NEXT:         | | | |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
916 // CHECK-NEXT:         | | | |   | | |-<<<NULL>>>
917 // CHECK-NEXT:         | | | |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
918 // CHECK-NEXT:         | | | |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
919 // CHECK-NEXT:         | | | |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
920 // CHECK-NEXT:         | | | |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
921 // CHECK-NEXT:         | | | |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
922 // CHECK-NEXT:         | | | |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
923 // CHECK-NEXT:         | | | |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
924 // CHECK-NEXT:         | | | |   | | `-ForStmt {{.*}} <line:38:5, line:40:9>
925 // CHECK-NEXT:         | | | |   | |   |-DeclStmt {{.*}} <line:38:10, col:19>
926 // CHECK-NEXT:         | | | |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
927 // CHECK-NEXT:         | | | |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
928 // CHECK-NEXT:         | | | |   | |   |-<<<NULL>>>
929 // CHECK-NEXT:         | | | |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
930 // CHECK-NEXT:         | | | |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
931 // CHECK-NEXT:         | | | |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
932 // CHECK-NEXT:         | | | |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
933 // CHECK-NEXT:         | | | |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
934 // CHECK-NEXT:         | | | |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
935 // CHECK-NEXT:         | | | |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
936 // CHECK-NEXT:         | | | |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
937 // CHECK-NEXT:         | | | |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
938 // CHECK-NEXT:         | | | |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
939 // CHECK-NEXT:         | | | |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
940 // CHECK-NEXT:         | | | |   | |     |-<<<NULL>>>
941 // CHECK-NEXT:         | | | |   | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
942 // CHECK-NEXT:         | | | |   | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
943 // CHECK-NEXT:         | | | |   | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
944 // CHECK-NEXT:         | | | |   | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
945 // CHECK-NEXT:         | | | |   | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
946 // CHECK-NEXT:         | | | |   | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
947 // CHECK-NEXT:         | | | |   | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
948 // CHECK-NEXT:         | | | |   | |     `-NullStmt {{.*}} <line:40:9>
949 // CHECK-NEXT:         | | | |   | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
950 // CHECK-NEXT:         | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
951 // CHECK-NEXT:         | | | |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
952 // CHECK-NEXT:         | | | |   | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
953 // CHECK-NEXT:         | | | |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
954 // CHECK-NEXT:         | | | |   | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
955 // CHECK-NEXT:         | | | |   | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
956 // CHECK-NEXT:         | | | |   | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
957 // CHECK-NEXT:         | | | |   |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
958 // CHECK-NEXT:         | | | |   |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
959 // CHECK-NEXT:         | | | |   |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
960 // CHECK-NEXT:         | | | |   `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
961 // CHECK-NEXT:         | | | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:35:1) *const restrict'
962 // CHECK-NEXT:         | | | |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
963 // CHECK-NEXT:         | | | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
964 // CHECK-NEXT:         | | | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
965 // CHECK-NEXT:         | | | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
966 // CHECK-NEXT:         | | | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
967 // CHECK-NEXT:         | | | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
968 // CHECK-NEXT:         | | | | |-ForStmt {{.*}} <line:37:3, line:40:9>
969 // CHECK-NEXT:         | | | | | |-DeclStmt {{.*}} <line:37:8, col:17>
970 // CHECK-NEXT:         | | | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
971 // CHECK-NEXT:         | | | | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
972 // CHECK-NEXT:         | | | | | |-<<<NULL>>>
973 // CHECK-NEXT:         | | | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
974 // CHECK-NEXT:         | | | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
975 // CHECK-NEXT:         | | | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
976 // CHECK-NEXT:         | | | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
977 // CHECK-NEXT:         | | | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
978 // CHECK-NEXT:         | | | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
979 // CHECK-NEXT:         | | | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
980 // CHECK-NEXT:         | | | | | `-ForStmt {{.*}} <line:38:5, line:40:9>
981 // CHECK-NEXT:         | | | | |   |-DeclStmt {{.*}} <line:38:10, col:19>
982 // CHECK-NEXT:         | | | | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
983 // CHECK-NEXT:         | | | | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
984 // CHECK-NEXT:         | | | | |   |-<<<NULL>>>
985 // CHECK-NEXT:         | | | | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
986 // CHECK-NEXT:         | | | | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
987 // CHECK-NEXT:         | | | | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
988 // CHECK-NEXT:         | | | | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
989 // CHECK-NEXT:         | | | | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
990 // CHECK-NEXT:         | | | | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
991 // CHECK-NEXT:         | | | | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
992 // CHECK-NEXT:         | | | | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
993 // CHECK-NEXT:         | | | | |     |-DeclStmt {{.*}} <line:39:12, col:21>
994 // CHECK-NEXT:         | | | | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
995 // CHECK-NEXT:         | | | | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
996 // CHECK-NEXT:         | | | | |     |-<<<NULL>>>
997 // CHECK-NEXT:         | | | | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
998 // CHECK-NEXT:         | | | | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
999 // CHECK-NEXT:         | | | | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1000 // CHECK-NEXT:         | | | | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1001 // CHECK-NEXT:         | | | | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1002 // CHECK-NEXT:         | | | | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1003 // CHECK-NEXT:         | | | | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1004 // CHECK-NEXT:         | | | | |     `-NullStmt {{.*}} <line:40:9>
1005 // CHECK-NEXT:         | | | | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
1006 // CHECK-NEXT:         | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
1007 // CHECK-NEXT:         | | | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
1008 // CHECK-NEXT:         | | | | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
1009 // CHECK-NEXT:         | | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1010 // CHECK-NEXT:         | | | | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
1011 // CHECK-NEXT:         | | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1012 // CHECK-NEXT:         | | | | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
1013 // CHECK-NEXT:         | | | |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1014 // CHECK-NEXT:         | | | |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
1015 // CHECK-NEXT:         | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1016 // CHECK-NEXT:         | | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1017 // CHECK-NEXT:         | | | |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
1018 // CHECK-NEXT:         | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1019 // CHECK-NEXT:         | | | |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1020 // CHECK-NEXT:         | | | `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
1021 // CHECK-NEXT:         | | |   `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
1022 // CHECK-NEXT:         | | |     |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
1023 // CHECK-NEXT:         | | |     | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
1024 // CHECK-NEXT:         | | |     | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
1025 // CHECK-NEXT:         | | |     | |   |-ParenExpr {{.*}} <col:3> 'int'
1026 // CHECK-NEXT:         | | |     | |   | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
1027 // CHECK-NEXT:         | | |     | |   |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1028 // CHECK-NEXT:         | | |     | |   |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
1029 // CHECK-NEXT:         | | |     | |   |   `-ParenExpr {{.*}} <col:3> 'int'
1030 // CHECK-NEXT:         | | |     | |   |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
1031 // CHECK-NEXT:         | | |     | |   |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
1032 // CHECK-NEXT:         | | |     | |   |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
1033 // CHECK-NEXT:         | | |     | |   |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
1034 // CHECK-NEXT:         | | |     | |   |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
1035 // CHECK-NEXT:         | | |     | |   `-IntegerLiteral {{.*}} <col:26> 'int' 1
1036 // CHECK-NEXT:         | | |     | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
1037 // CHECK-NEXT:         | | |     |   `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
1038 // CHECK-NEXT:         | | |     |     |-ParenExpr {{.*}} <col:5> 'int'
1039 // CHECK-NEXT:         | | |     |     | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
1040 // CHECK-NEXT:         | | |     |     |   |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1041 // CHECK-NEXT:         | | |     |     |   | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
1042 // CHECK-NEXT:         | | |     |     |   `-ParenExpr {{.*}} <col:5> 'int'
1043 // CHECK-NEXT:         | | |     |     |     `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
1044 // CHECK-NEXT:         | | |     |     |       |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
1045 // CHECK-NEXT:         | | |     |     |       | |-IntegerLiteral {{.*}} <col:18> 'int' 0
1046 // CHECK-NEXT:         | | |     |     |       | `-IntegerLiteral {{.*}} <col:28> 'int' 1
1047 // CHECK-NEXT:         | | |     |     |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
1048 // CHECK-NEXT:         | | |     |     `-IntegerLiteral {{.*}} <col:28> 'int' 1
1049 // CHECK-NEXT:         | | |     `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
1050 // CHECK-NEXT:         | | |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
1051 // CHECK-NEXT:         | | |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1052 // CHECK-NEXT:         | | |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1053 // CHECK-NEXT:         | | `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1054 // CHECK-NEXT:         | |-AlwaysInlineAttr {{.*}} <<invalid sloc>> Implicit __forceinline
1055 // CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit .global_tid. 'const int'
1056 // CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .part_id. 'const int *const restrict'
1057 // CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .privates. 'void *const restrict'
1058 // CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .copy_fn. 'void (*const restrict)(void *const restrict, ...)'
1059 // CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .task_t. 'void *const'
1060 // CHECK-NEXT:         | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:35:1) *const restrict'
1061 // CHECK-NEXT:         | |-RecordDecl {{.*}} <col:1> col:1 implicit struct definition
1062 // CHECK-NEXT:         | | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1063 // CHECK-NEXT:         | | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int'
1064 // CHECK-NEXT:         | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
1065 // CHECK-NEXT:         | | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int'
1066 // CHECK-NEXT:         | | | `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
1067 // CHECK-NEXT:         | | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int'
1068 // CHECK-NEXT:         | |   `-OMPCaptureKindAttr {{.*}} <<invalid sloc>> Implicit {{.*}}
1069 // CHECK-NEXT:         | `-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1070 // CHECK-NEXT:         |   |-OMPTeamsDistributeDirective {{.*}} <line:36:1, col:41>
1071 // CHECK-NEXT:         |   | |-OMPCollapseClause {{.*}} <col:30, col:40>
1072 // CHECK-NEXT:         |   | | `-ConstantExpr {{.*}} <col:39> 'int'
1073 // CHECK-NEXT:         |   | |   `-IntegerLiteral {{.*}} <col:39> 'int' 2
1074 // CHECK-NEXT:         |   | `-CapturedStmt {{.*}} <line:37:3, line:40:9>
1075 // CHECK-NEXT:         |   |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1076 // CHECK-NEXT:         |   |   | |-ForStmt {{.*}} <line:37:3, line:40:9>
1077 // CHECK-NEXT:         |   |   | | |-DeclStmt {{.*}} <line:37:8, col:17>
1078 // CHECK-NEXT:         |   |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1079 // CHECK-NEXT:         |   |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1080 // CHECK-NEXT:         |   |   | | |-<<<NULL>>>
1081 // CHECK-NEXT:         |   |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1082 // CHECK-NEXT:         |   |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1083 // CHECK-NEXT:         |   |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1084 // CHECK-NEXT:         |   |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1085 // CHECK-NEXT:         |   |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1086 // CHECK-NEXT:         |   |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1087 // CHECK-NEXT:         |   |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1088 // CHECK-NEXT:         |   |   | | `-ForStmt {{.*}} <line:38:5, line:40:9>
1089 // CHECK-NEXT:         |   |   | |   |-DeclStmt {{.*}} <line:38:10, col:19>
1090 // CHECK-NEXT:         |   |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1091 // CHECK-NEXT:         |   |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1092 // CHECK-NEXT:         |   |   | |   |-<<<NULL>>>
1093 // CHECK-NEXT:         |   |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1094 // CHECK-NEXT:         |   |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1095 // CHECK-NEXT:         |   |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1096 // CHECK-NEXT:         |   |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1097 // CHECK-NEXT:         |   |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1098 // CHECK-NEXT:         |   |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1099 // CHECK-NEXT:         |   |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1100 // CHECK-NEXT:         |   |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
1101 // CHECK-NEXT:         |   |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
1102 // CHECK-NEXT:         |   |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1103 // CHECK-NEXT:         |   |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1104 // CHECK-NEXT:         |   |   | |     |-<<<NULL>>>
1105 // CHECK-NEXT:         |   |   | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1106 // CHECK-NEXT:         |   |   | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1107 // CHECK-NEXT:         |   |   | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1108 // CHECK-NEXT:         |   |   | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1109 // CHECK-NEXT:         |   |   | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1110 // CHECK-NEXT:         |   |   | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1111 // CHECK-NEXT:         |   |   | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1112 // CHECK-NEXT:         |   |   | |     `-NullStmt {{.*}} <line:40:9>
1113 // CHECK-NEXT:         |   |   | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
1114 // CHECK-NEXT:         |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
1115 // CHECK-NEXT:         |   |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
1116 // CHECK-NEXT:         |   |   | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
1117 // CHECK-NEXT:         |   |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1118 // CHECK-NEXT:         |   |   | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
1119 // CHECK-NEXT:         |   |   | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1120 // CHECK-NEXT:         |   |   | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
1121 // CHECK-NEXT:         |   |   |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1122 // CHECK-NEXT:         |   |   |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1123 // CHECK-NEXT:         |   |   |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1124 // CHECK-NEXT:         |   |   `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1125 // CHECK-NEXT:         |   |-ImplicitParamDecl {{.*}} <line:35:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:35:1) *const restrict'
1126 // CHECK-NEXT:         |   |-RecordDecl {{.*}} <line:36:1> col:1 implicit struct definition
1127 // CHECK-NEXT:         |   | |-CapturedRecordAttr {{.*}} <<invalid sloc>> Implicit
1128 // CHECK-NEXT:         |   | |-FieldDecl {{.*}} <line:37:3> col:3 implicit 'int &'
1129 // CHECK-NEXT:         |   | |-FieldDecl {{.*}} <line:38:5> col:5 implicit 'int &'
1130 // CHECK-NEXT:         |   | `-FieldDecl {{.*}} <line:39:27> col:27 implicit 'int &'
1131 // CHECK-NEXT:         |   |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow
1132 // CHECK-NEXT:         |   | |-ForStmt {{.*}} <line:37:3, line:40:9>
1133 // CHECK-NEXT:         |   | | |-DeclStmt {{.*}} <line:37:8, col:17>
1134 // CHECK-NEXT:         |   | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit
1135 // CHECK-NEXT:         |   | | |   `-IntegerLiteral {{.*}} <col:16> 'int' 0
1136 // CHECK-NEXT:         |   | | |-<<<NULL>>>
1137 // CHECK-NEXT:         |   | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'
1138 // CHECK-NEXT:         |   | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>
1139 // CHECK-NEXT:         |   | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'
1140 // CHECK-NEXT:         |   | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1141 // CHECK-NEXT:         |   | | |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1142 // CHECK-NEXT:         |   | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'
1143 // CHECK-NEXT:         |   | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'
1144 // CHECK-NEXT:         |   | | `-ForStmt {{.*}} <line:38:5, line:40:9>
1145 // CHECK-NEXT:         |   | |   |-DeclStmt {{.*}} <line:38:10, col:19>
1146 // CHECK-NEXT:         |   | |   | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit
1147 // CHECK-NEXT:         |   | |   |   `-IntegerLiteral {{.*}} <col:18> 'int' 0
1148 // CHECK-NEXT:         |   | |   |-<<<NULL>>>
1149 // CHECK-NEXT:         |   | |   |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'
1150 // CHECK-NEXT:         |   | |   | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>
1151 // CHECK-NEXT:         |   | |   | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'
1152 // CHECK-NEXT:         |   | |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1153 // CHECK-NEXT:         |   | |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1154 // CHECK-NEXT:         |   | |   |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'
1155 // CHECK-NEXT:         |   | |   | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'
1156 // CHECK-NEXT:         |   | |   `-ForStmt {{.*}} <line:39:7, line:40:9>
1157 // CHECK-NEXT:         |   | |     |-DeclStmt {{.*}} <line:39:12, col:21>
1158 // CHECK-NEXT:         |   | |     | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit
1159 // CHECK-NEXT:         |   | |     |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1160 // CHECK-NEXT:         |   | |     |-<<<NULL>>>
1161 // CHECK-NEXT:         |   | |     |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'
1162 // CHECK-NEXT:         |   | |     | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1163 // CHECK-NEXT:         |   | |     | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'
1164 // CHECK-NEXT:         |   | |     | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>
1165 // CHECK-NEXT:         |   | |     |   `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1166 // CHECK-NEXT:         |   | |     |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'
1167 // CHECK-NEXT:         |   | |     | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'
1168 // CHECK-NEXT:         |   | |     `-NullStmt {{.*}} <line:40:9>
1169 // CHECK-NEXT:         |   | |-ImplicitParamDecl {{.*}} <line:36:1> col:1 implicit .global_tid. 'const int *const restrict'
1170 // CHECK-NEXT:         |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'
1171 // CHECK-NEXT:         |   | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (anonymous at {{.*}}ast-dump-openmp-teams-distribute.c:36:1) *const restrict'
1172 // CHECK-NEXT:         |   | |-VarDecl {{.*}} <line:37:8, col:16> col:12 used i 'int' cinit
1173 // CHECK-NEXT:         |   | | `-IntegerLiteral {{.*}} <col:16> 'int' 0
1174 // CHECK-NEXT:         |   | |-VarDecl {{.*}} <line:38:10, col:18> col:14 used i 'int' cinit
1175 // CHECK-NEXT:         |   | | `-IntegerLiteral {{.*}} <col:18> 'int' 0
1176 // CHECK-NEXT:         |   | `-VarDecl {{.*}} <line:39:12, col:20> col:16 used i 'int' cinit
1177 // CHECK-NEXT:         |   |   `-IntegerLiteral {{.*}} <col:20> 'int' 0
1178 // CHECK-NEXT:         |   |-OMPCapturedExprDecl {{.*}} <line:37:23> col:23 implicit used .capture_expr. 'int'
1179 // CHECK-NEXT:         |   | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1180 // CHECK-NEXT:         |   |   `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1181 // CHECK-NEXT:         |   |-OMPCapturedExprDecl {{.*}} <line:38:25> col:25 implicit used .capture_expr. 'int'
1182 // CHECK-NEXT:         |   | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1183 // CHECK-NEXT:         |   |   `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1184 // CHECK-NEXT:         |   `-OMPCapturedExprDecl {{.*}} <line:37:3, <invalid sloc>> col:3 implicit used .capture_expr. 'long'
1185 // CHECK-NEXT:         |     `-BinaryOperator {{.*}} <col:3, <invalid sloc>> 'long' '-'
1186 // CHECK-NEXT:         |       |-BinaryOperator {{.*}} <col:3, line:38:28> 'long' '*'
1187 // CHECK-NEXT:         |       | |-ImplicitCastExpr {{.*}} <line:37:3, col:26> 'long' <IntegralCast>
1188 // CHECK-NEXT:         |       | | `-BinaryOperator {{.*}} <col:3, col:26> 'int' '/'
1189 // CHECK-NEXT:         |       | |   |-ParenExpr {{.*}} <col:3> 'int'
1190 // CHECK-NEXT:         |       | |   | `-BinaryOperator {{.*}} <col:23, col:3> 'int' '-'
1191 // CHECK-NEXT:         |       | |   |   |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>
1192 // CHECK-NEXT:         |       | |   |   | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
1193 // CHECK-NEXT:         |       | |   |   `-ParenExpr {{.*}} <col:3> 'int'
1194 // CHECK-NEXT:         |       | |   |     `-BinaryOperator {{.*}} <col:16, <invalid sloc>> 'int' '+'
1195 // CHECK-NEXT:         |       | |   |       |-BinaryOperator {{.*}} <col:16, col:26> 'int' '-'
1196 // CHECK-NEXT:         |       | |   |       | |-IntegerLiteral {{.*}} <col:16> 'int' 0
1197 // CHECK-NEXT:         |       | |   |       | `-IntegerLiteral {{.*}} <col:26> 'int' 1
1198 // CHECK-NEXT:         |       | |   |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
1199 // CHECK-NEXT:         |       | |   `-IntegerLiteral {{.*}} <col:26> 'int' 1
1200 // CHECK-NEXT:         |       | `-ImplicitCastExpr {{.*}} <line:38:5, col:28> 'long' <IntegralCast>
1201 // CHECK-NEXT:         |       |   `-BinaryOperator {{.*}} <col:5, col:28> 'int' '/'
1202 // CHECK-NEXT:         |       |     |-ParenExpr {{.*}} <col:5> 'int'
1203 // CHECK-NEXT:         |       |     | `-BinaryOperator {{.*}} <col:25, col:5> 'int' '-'
1204 // CHECK-NEXT:         |       |     |   |-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>
1205 // CHECK-NEXT:         |       |     |   | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue OMPCapturedExpr {{.*}} '.capture_expr.' 'int'
1206 // CHECK-NEXT:         |       |     |   `-ParenExpr {{.*}} <col:5> 'int'
1207 // CHECK-NEXT:         |       |     |     `-BinaryOperator {{.*}} <col:18, <invalid sloc>> 'int' '+'
1208 // CHECK-NEXT:         |       |     |       |-BinaryOperator {{.*}} <col:18, col:28> 'int' '-'
1209 // CHECK-NEXT:         |       |     |       | |-IntegerLiteral {{.*}} <col:18> 'int' 0
1210 // CHECK-NEXT:         |       |     |       | `-IntegerLiteral {{.*}} <col:28> 'int' 1
1211 // CHECK-NEXT:         |       |     |       `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
1212 // CHECK-NEXT:         |       |     `-IntegerLiteral {{.*}} <col:28> 'int' 1
1213 // CHECK-NEXT:         |       `-ImplicitCastExpr {{.*}} <<invalid sloc>> 'long' <IntegralCast>
1214 // CHECK-NEXT:         |         `-IntegerLiteral {{.*}} <<invalid sloc>> 'int' 1
1215 // CHECK-NEXT:         |-DeclRefExpr {{.*}} <line:37:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'
1216 // CHECK-NEXT:         |-DeclRefExpr {{.*}} <line:38:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'
1217 // CHECK-NEXT:         `-DeclRefExpr {{.*}} <line:39:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'
1218