1+ // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-library -x hlsl -ast-dump %s | FileCheck %s
2+
3+ // CHECK-LABEL: arr_assign1
4+ // CHECK: CompoundStmt 0x{{[0-9a-f]+}} {{.*}}
5+ // CHECK: DeclStmt 0x{{[0-9a-f]+}} {{.*}}
6+ // CHECK: VarDecl [[A:0x[0-9a-f]+]] {{.*}} col:7 used Arr 'int[2]' cinit
7+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
8+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
9+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 1
10+ // CHECK: DeclStmt 0x{{[0-9a-f]+}} {{.*}}
11+ // CHECK: VarDecl [[B:0x[0-9a-f]+]] {{.*}} col:7 used Arr2 'int[2]' cinit
12+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
13+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
14+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
15+ // CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='
16+ // CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var [[A]] 'Arr' 'int[2]'
17+ // CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var [[B]] 'Arr2' 'int[2]'
18+ void arr_assign1 () {
19+ int Arr[2 ] = {0 , 1 };
20+ int Arr2[2 ] = {0 , 0 };
21+ Arr = Arr2;
22+ }
23+
24+ // CHECK-LABEL: arr_assign2
25+ // CHECK: CompoundStmt 0x{{[0-9a-f]+}} {{.*}}
26+ // CHECK: DeclStmt 0x{{[0-9a-f]+}} {{.*}}
27+ // CHECK: VarDecl [[A:0x[0-9a-f]+]] {{.*}} col:7 used Arr 'int[2]' cinit
28+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
29+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
30+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 1
31+ // CHECK: DeclStmt 0x{{[0-9a-f]+}} {{.*}}
32+ // CHECK: VarDecl [[B:0x[0-9a-f]+]] {{.*}} col:7 used Arr2 'int[2]' cinit
33+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
34+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
35+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
36+ // CHECK: DeclStmt 0x{{[0-9a-f]+}} {{.*}}
37+ // CHECK: VarDecl [[C:0x[0-9a-f]+]] {{.*}} col:7 used Arr3 'int[2]' cinit
38+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
39+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 2
40+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 2
41+ // CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='
42+ // CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var [[A]] 'Arr' 'int[2]'
43+ // CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue '='
44+ // CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var [[B]] 'Arr2' 'int[2]'
45+ // CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]' lvalue Var [[C]] 'Arr3' 'int[2]'
46+ void arr_assign2 () {
47+ int Arr[2 ] = {0 , 1 };
48+ int Arr2[2 ] = {0 , 0 };
49+ int Arr3[2 ] = {2 , 2 };
50+ Arr = Arr2 = Arr3;
51+ }
52+
53+ // CHECK-LABEL: arr_assign3
54+ // CHECK: CompoundStmt 0x{{[0-9a-f]+}} {{.*}}
55+ // CHECK: DeclStmt 0x{{[0-9a-f]+}} {{.*}}
56+ // CHECK: VarDecl [[A:0x[0-9a-f]+]] {{.*}} col:7 used Arr 'int[2][2]' cinit
57+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]'
58+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
59+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
60+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 1
61+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
62+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 2
63+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 3
64+ // CHECK: DeclStmt 0x{{[0-9a-f]+}} {{.*}}
65+ // CHECK: VarDecl [[B:0x[0-9a-f]+]] {{.*}} col:7 used Arr2 'int[2][2]' cinit
66+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]'
67+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
68+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
69+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 0
70+ // CHECK: InitListExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2]'
71+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 1
72+ // CHECK: IntegerLiteral 0x{{[0-9a-f]+}} {{.*}} 'int' 1
73+ // CHECK: BinaryOperator 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue '='
74+ // CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var [[A]] 'Arr' 'int[2][2]'
75+ // CHECK: DeclRefExpr 0x{{[0-9a-f]+}} {{.*}} 'int[2][2]' lvalue Var [[B]] 'Arr2' 'int[2][2]'
76+ void arr_assign3 () {
77+ int Arr[2 ][2 ] = {{0 , 1 }, {2 , 3 }};
78+ int Arr2[2 ][2 ] = {{0 , 0 }, {1 , 1 }};
79+ Arr = Arr2;
80+ }
0 commit comments