107 lines · plain
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump %s | FileCheck %s2 3// CHECK-LABEL: arr_assign14// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='5// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr' 'int[2]'6// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr2' 'int[2]'7void arr_assign1() {8 int Arr[2] = {0, 1};9 int Arr2[2] = {0, 0};10 Arr = Arr2;11}12 13// CHECK-LABEL: arr_assign214// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='15// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr' 'int[2]'16// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='17// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr2' 'int[2]'18// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr3' 'int[2]'19void arr_assign2() {20 int Arr[2] = {0, 1};21 int Arr2[2] = {0, 0};22 int Arr3[2] = {2, 2};23 Arr = Arr2 = Arr3;24}25 26// CHECK-LABEL: arr_assign327// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue '='28// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr' 'int[2][2]'29// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr2' 'int[2][2]'30void arr_assign3() {31 int Arr[2][2] = {{0, 1}, {2, 3}};32 int Arr2[2][2] = {{0, 0}, {1, 1}};33 Arr = Arr2;34}35 36// CHECK-LABEL: arr_assign437// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int' lvalue '='38// CHECK: ArraySubscriptExpr 0x{{[0-9a-f]+}} {{.*}} 'int' lvalue39// CHECK: ImplicitCastExpr 0x{{[0-9a-f]+}} {{.*}} 'int *' <ArrayToPointerDecay>40// CHECK: ParenExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue41// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='42// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr' 'int[2]'43// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr2' 'int[2]'44// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 045// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 646void arr_assign4() {47 int Arr[2] = {0, 1};48 int Arr2[2] = {0, 0};49 (Arr = Arr2)[0] = 6;50}51 52// CHECK-LABEL: arr_assign553// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int' lvalue '='54// CHECK: ArraySubscriptExpr 0x{{[0-9a-f]+}} {{.*}} 'int' lvalue55// CHECK: ImplicitCastExpr 0x{{[0-9a-f]+}} {{.*}} 'int *' <ArrayToPointerDecay>56// CHECK: ParenExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue57// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='58// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr' 'int[2]'59// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='60// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr2' 'int[2]'61// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr3' 'int[2]'62// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 063// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 664void arr_assign5() {65 int Arr[2] = {0, 1};66 int Arr2[2] = {0, 0};67 int Arr3[2] = {3, 4};68 (Arr = Arr2 = Arr3)[0] = 6;69}70 71// CHECK-LABEL: arr_assign672// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int' lvalue '='73// CHECK: ArraySubscriptExpr 0x{{[0-9a-f]+}} {{.*}} 'int' lvalue74// CHECK: ImplicitCastExpr 0x{{[0-9a-f]+}} {{.*}} 'int *' <ArrayToPointerDecay>75// CHECK: ArraySubscriptExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue76// CHECK: ImplicitCastExpr 0x{{[0-9a-f]+}} {{.*}} 'int (*)[2]' <ArrayToPointerDecay>77// CHECK: ParenExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue78// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue '='79// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr' 'int[2][2]'80// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr2' 'int[2][2]'81// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 082// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 083// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 684void arr_assign6() {85 int Arr[2][2] = {{0, 1}, {2, 3}};86 int Arr2[2][2] = {{0, 0}, {1, 1}};87 (Arr = Arr2)[0][0] = 6;88}89 90// CHECK-LABEL: arr_assign791// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='92// CHECK: ArraySubscriptExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue93// CHECK: ImplicitCastExpr 0x{{[0-9a-f]+}} {{.*}} 'int (*)[2]' <ArrayToPointerDecay>94// CHECK: ParenExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue95// CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue '='96// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr' 'int[2][2]'97// CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var 0x{{[0-9a-f]+}} 'Arr2' 'int[2][2]'98// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 099// CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'100// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 6101// CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 6102void arr_assign7() {103 int Arr[2][2] = {{0, 1}, {2, 3}};104 int Arr2[2][2] = {{0, 0}, {1, 1}};105 (Arr = Arr2)[0] = {6, 6};106}107