266 lines · c
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fopenmp -ast-dump %s | FileCheck --match-full-lines -implicit-check-not=openmp_structured_block %s2 3void test_one(int x) {4#pragma omp distribute parallel for5 for (int i = 0; i < x; i++)6 ;7}8 9void test_two(int x, int y) {10#pragma omp distribute parallel for11 for (int i = 0; i < x; i++)12 for (int i = 0; i < y; i++)13 ;14}15 16void test_three(int x, int y) {17#pragma omp distribute parallel for collapse(1)18 for (int i = 0; i < x; i++)19 for (int i = 0; i < y; i++)20 ;21}22 23void test_four(int x, int y) {24#pragma omp distribute parallel for collapse(2)25 for (int i = 0; i < x; i++)26 for (int i = 0; i < y; i++)27 ;28}29 30void test_five(int x, int y, int z) {31#pragma omp distribute parallel for collapse(2)32 for (int i = 0; i < x; i++)33 for (int i = 0; i < y; i++)34 for (int i = 0; i < z; i++)35 ;36}37 38// CHECK: TranslationUnitDecl {{.*}} <<invalid sloc>> <invalid sloc>39// CHECK: |-FunctionDecl {{.*}} <{{.*}}ast-dump-openmp-distribute-parallel-for.c:3:1, line:7:1> line:3:6 test_one 'void (int)'40// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'41// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:22, line:7:1>42// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:4:1, col:36>43// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:5:3, line:6:5>44// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow45// CHECK-NEXT: | | |-ForStmt {{.*}} <line:5:3, line:6:5>46// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:5:8, col:17>47// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit48// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 049// CHECK-NEXT: | | | |-<<<NULL>>>50// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'51// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>52// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'53// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>54// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture55// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'56// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'57// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:6:5>58// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:4:1> col:1 implicit .global_tid. 'const int *const restrict'59// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'60// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const __size_t':'const unsigned long'61// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const __size_t':'const unsigned long'62// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:4:1) *const restrict'63// CHECK-NEXT: | | `-VarDecl {{.*}} <line:5:8, col:16> col:12 used i 'int' cinit64// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 065// CHECK-NEXT: | `-DeclRefExpr {{.*}} <col:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'66// CHECK-NEXT: |-FunctionDecl {{.*}} <line:9:1, line:14:1> line:9:6 test_two 'void (int, int)'67// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:15, col:19> col:19 used x 'int'68// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:22, col:26> col:26 used y 'int'69// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:29, line:14:1>70// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:10:1, col:36>71// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:11:3, line:13:7>72// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow73// CHECK-NEXT: | | |-ForStmt {{.*}} <line:11:3, line:13:7>74// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:11:8, col:17>75// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit76// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 077// CHECK-NEXT: | | | |-<<<NULL>>>78// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'79// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>80// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'81// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>82// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture83// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'84// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'85// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:12:5, line:13:7>86// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:12:10, col:19>87// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit88// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 089// CHECK-NEXT: | | | |-<<<NULL>>>90// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'91// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>92// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'93// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>94// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture95// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'96// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'97// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:13:7>98// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:10:1> col:1 implicit .global_tid. 'const int *const restrict'99// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'100// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const __size_t':'const unsigned long'101// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const __size_t':'const unsigned long'102// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:10:1) *const restrict'103// CHECK-NEXT: | | |-VarDecl {{.*}} <line:11:8, col:16> col:12 used i 'int' cinit104// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0105// CHECK-NEXT: | | `-VarDecl {{.*}} <line:12:10, col:18> col:14 used i 'int' cinit106// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0107// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:11:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'108// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:12:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'109// CHECK-NEXT: |-FunctionDecl {{.*}} <line:16:1, line:21:1> line:16:6 test_three 'void (int, int)'110// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:17, col:21> col:21 used x 'int'111// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:24, col:28> col:28 used y 'int'112// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:31, line:21:1>113// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:17:1, col:48>114// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:37, col:47>115// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:46> 'int'116// CHECK-NEXT: | | |-value: Int 1117// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:46> 'int' 1118// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:18:3, line:20:7>119// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow120// CHECK-NEXT: | | |-ForStmt {{.*}} <line:18:3, line:20:7>121// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:18:8, col:17>122// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit123// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0124// CHECK-NEXT: | | | |-<<<NULL>>>125// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'126// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>127// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'128// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>129// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture130// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'131// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'132// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:19:5, line:20:7>133// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:19:10, col:19>134// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit135// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0136// CHECK-NEXT: | | | |-<<<NULL>>>137// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'138// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>139// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'140// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>141// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture142// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'143// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'144// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:20:7>145// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:17:1> col:1 implicit .global_tid. 'const int *const restrict'146// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'147// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const __size_t':'const unsigned long'148// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const __size_t':'const unsigned long'149// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:17:1) *const restrict'150// CHECK-NEXT: | | |-VarDecl {{.*}} <line:18:8, col:16> col:12 used i 'int' cinit151// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0152// CHECK-NEXT: | | `-VarDecl {{.*}} <line:19:10, col:18> col:14 used i 'int' cinit153// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0154// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:18:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'155// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:19:25> 'int' lvalue ParmVar {{.*}} 'y' 'int'156// CHECK-NEXT: |-FunctionDecl {{.*}} <line:23:1, line:28:1> line:23:6 test_four 'void (int, int)'157// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'158// CHECK-NEXT: | |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'159// CHECK-NEXT: | `-CompoundStmt {{.*}} <col:30, line:28:1>160// CHECK-NEXT: | `-OMPDistributeParallelForDirective {{.*}} <line:24:1, col:48>161// CHECK-NEXT: | |-OMPCollapseClause {{.*}} <col:37, col:47>162// CHECK-NEXT: | | `-ConstantExpr {{.*}} <col:46> 'int'163// CHECK-NEXT: | | |-value: Int 2164// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:46> 'int' 2165// CHECK-NEXT: | `-CapturedStmt {{.*}} <line:25:3, line:27:7>166// CHECK-NEXT: | |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow167// CHECK-NEXT: | | |-ForStmt {{.*}} <line:25:3, line:27:7>168// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:25:8, col:17>169// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit170// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0171// CHECK-NEXT: | | | |-<<<NULL>>>172// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'173// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>174// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'175// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>176// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture177// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'178// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'179// CHECK-NEXT: | | | `-ForStmt {{.*}} <line:26:5, line:27:7>180// CHECK-NEXT: | | | |-DeclStmt {{.*}} <line:26:10, col:19>181// CHECK-NEXT: | | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit182// CHECK-NEXT: | | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0183// CHECK-NEXT: | | | |-<<<NULL>>>184// CHECK-NEXT: | | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'185// CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>186// CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'187// CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>188// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture189// CHECK-NEXT: | | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'190// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'191// CHECK-NEXT: | | | `-NullStmt {{.*}} <line:27:7>192// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <line:24:1> col:1 implicit .global_tid. 'const int *const restrict'193// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'194// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const __size_t':'const unsigned long'195// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const __size_t':'const unsigned long'196// CHECK-NEXT: | | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:24:1) *const restrict'197// CHECK-NEXT: | | |-VarDecl {{.*}} <line:25:8, col:16> col:12 used i 'int' cinit198// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0199// CHECK-NEXT: | | `-VarDecl {{.*}} <line:26:10, col:18> col:14 used i 'int' cinit200// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0201// CHECK-NEXT: | |-DeclRefExpr {{.*}} <line:25:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'202// CHECK-NEXT: | `-DeclRefExpr {{.*}} <line:26:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'203// CHECK-NEXT: `-FunctionDecl {{.*}} <line:30:1, line:36:1> line:30:6 test_five 'void (int, int, int)'204// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:16, col:20> col:20 used x 'int'205// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:23, col:27> col:27 used y 'int'206// CHECK-NEXT: |-ParmVarDecl {{.*}} <col:30, col:34> col:34 used z 'int'207// CHECK-NEXT: `-CompoundStmt {{.*}} <col:37, line:36:1>208// CHECK-NEXT: `-OMPDistributeParallelForDirective {{.*}} <line:31:1, col:48>209// CHECK-NEXT: |-OMPCollapseClause {{.*}} <col:37, col:47>210// CHECK-NEXT: | `-ConstantExpr {{.*}} <col:46> 'int'211// CHECK-NEXT: | |-value: Int 2212// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:46> 'int' 2213// CHECK-NEXT: `-CapturedStmt {{.*}} <line:32:3, line:35:9>214// CHECK-NEXT: |-CapturedDecl {{.*}} <<invalid sloc>> <invalid sloc> nothrow215// CHECK-NEXT: | |-ForStmt {{.*}} <line:32:3, line:35:9>216// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:32:8, col:17>217// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:8, col:16> col:12 used i 'int' cinit218// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:16> 'int' 0219// CHECK-NEXT: | | |-<<<NULL>>>220// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:19, col:23> 'int' '<'221// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:19> 'int' <LValueToRValue>222// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:19> 'int' lvalue Var {{.*}} 'i' 'int'223// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>224// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue ParmVar {{.*}} 'x' 'int' refers_to_enclosing_variable_or_capture225// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:26, col:27> 'int' postfix '++'226// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:26> 'int' lvalue Var {{.*}} 'i' 'int'227// CHECK-NEXT: | | `-ForStmt {{.*}} <line:33:5, line:35:9>228// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:33:10, col:19>229// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:10, col:18> col:14 used i 'int' cinit230// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:18> 'int' 0231// CHECK-NEXT: | | |-<<<NULL>>>232// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:21, col:25> 'int' '<'233// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:21> 'int' <LValueToRValue>234// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:21> 'int' lvalue Var {{.*}} 'i' 'int'235// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:25> 'int' <LValueToRValue>236// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:25> 'int' lvalue ParmVar {{.*}} 'y' 'int' refers_to_enclosing_variable_or_capture237// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:28, col:29> 'int' postfix '++'238// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:28> 'int' lvalue Var {{.*}} 'i' 'int'239// CHECK-NEXT: | | `-ForStmt {{.*}} <line:34:7, line:35:9>240// CHECK-NEXT: | | |-DeclStmt {{.*}} <line:34:12, col:21>241// CHECK-NEXT: | | | `-VarDecl {{.*}} <col:12, col:20> col:16 used i 'int' cinit242// CHECK-NEXT: | | | `-IntegerLiteral {{.*}} <col:20> 'int' 0243// CHECK-NEXT: | | |-<<<NULL>>>244// CHECK-NEXT: | | |-BinaryOperator {{.*}} <col:23, col:27> 'int' '<'245// CHECK-NEXT: | | | |-ImplicitCastExpr {{.*}} <col:23> 'int' <LValueToRValue>246// CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} <col:23> 'int' lvalue Var {{.*}} 'i' 'int'247// CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} <col:27> 'int' <LValueToRValue>248// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:27> 'int' lvalue ParmVar {{.*}} 'z' 'int' refers_to_enclosing_variable_or_capture249// CHECK-NEXT: | | |-UnaryOperator {{.*}} <col:30, col:31> 'int' postfix '++'250// CHECK-NEXT: | | | `-DeclRefExpr {{.*}} <col:30> 'int' lvalue Var {{.*}} 'i' 'int'251// CHECK-NEXT: | | `-NullStmt {{.*}} <line:35:9>252// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <line:31:1> col:1 implicit .global_tid. 'const int *const restrict'253// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit .bound_tid. 'const int *const restrict'254// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.lb. 'const __size_t':'const unsigned long'255// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit used .previous.ub. 'const __size_t':'const unsigned long'256// CHECK-NEXT: | |-ImplicitParamDecl {{.*}} <col:1> col:1 implicit __context 'struct (unnamed at {{.*}}ast-dump-openmp-distribute-parallel-for.c:31:1) *const restrict'257// CHECK-NEXT: | |-VarDecl {{.*}} <line:32:8, col:16> col:12 used i 'int' cinit258// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:16> 'int' 0259// CHECK-NEXT: | |-VarDecl {{.*}} <line:33:10, col:18> col:14 used i 'int' cinit260// CHECK-NEXT: | | `-IntegerLiteral {{.*}} <col:18> 'int' 0261// CHECK-NEXT: | `-VarDecl {{.*}} <line:34:12, col:20> col:16 used i 'int' cinit262// CHECK-NEXT: | `-IntegerLiteral {{.*}} <col:20> 'int' 0263// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:32:3> 'int' lvalue ParmVar {{.*}} 'x' 'int'264// CHECK-NEXT: |-DeclRefExpr {{.*}} <line:33:5> 'int' lvalue ParmVar {{.*}} 'y' 'int'265// CHECK-NEXT: `-DeclRefExpr {{.*}} <line:34:27> 'int' lvalue ParmVar {{.*}} 'z' 'int'266