Skip to content

Commit a62b47e

Browse files
committed
[clang] NFC: new tests and some cleanups on existing ones
This offloads some test changes from another PR in order to facilitate review. - Adds some new tests. - Cleans stray spaces and newlines on existing tests. - Regenerates some AST json dumps, as the generator now includes offsets.
1 parent 061ef3c commit a62b47e

36 files changed

+2268
-1994
lines changed
Lines changed: 133 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -1,133 +1,133 @@
1-
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -ast-dump -o - %s | FileCheck %s
2-
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -std=hlsl202x -ast-dump -o - %s | FileCheck %s
3-
4-
typedef float float2 __attribute__((ext_vector_type(2)));
5-
typedef float float3 __attribute__((ext_vector_type(3)));
6-
7-
[numthreads(1,1,1)]
8-
void entry() {
9-
float2 Vec2 = float2(1.0, 2.0);
10-
float3 Vec3 = float3(Vec2, 3.0);
11-
float3 Vec3b = float3(1.0, 2.0, 3.0);
12-
13-
// For the float2 vector, we just expect a conversion from constructor
14-
// parameters to an initialization list
15-
// CHECK-LABEL: VarDecl {{.*}} used Vec2 'float2':'vector<float, 2>' cinit
16-
// CHECK-NEXT: CXXFunctionalCastExpr {{.*}} 'float2':'vector<float, 2>' functional cast to float2 <NoOp>
17-
// CHECK-NEXT: InitListExpr {{.*}} 'float2':'vector<float, 2>'
18-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
19-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
20-
21-
22-
// For the float 3 things get fun...
23-
// Here we expect accesses to the vec2 to provide the first and second
24-
// components using ArraySubscriptExpr
25-
// CHECK-LABEL: VarDecl {{.*}} Vec3 'float3':'vector<float, 3>' cinit
26-
// CHECK-NEXT: CXXFunctionalCastExpr {{.*}} 'float3':'vector<float, 3>' functional cast to float3 <NoOp>
27-
// CHECK-NEXT: InitListExpr {{.*}} 'float3':'vector<float, 3>'
28-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
29-
// CHECK-NEXT: ArraySubscriptExpr {{.*}} 'float' lvalue
30-
// CHECK-NEXT: DeclRefExpr {{.*}} 'float2':'vector<float, 2>' lvalue Var {{.*}} 'Vec2' 'float2':'vector<float, 2>'
31-
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 0
32-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
33-
// CHECK-NEXT: ArraySubscriptExpr {{.*}} 'float' lvalue
34-
// CHECK-NEXT: DeclRefExpr {{.*}} 'float2':'vector<float, 2>' lvalue Var {{.*}} 'Vec2' 'float2':'vector<float, 2>'
35-
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1
36-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 3.000000e+00
37-
38-
// CHECK: VarDecl {{.*}} 'float3':'vector<float, 3>' cinit
39-
// CHECK-NEXT: CXXFunctionalCastExpr {{.*}} 'float3':'vector<float, 3>' functional cast to float3 <NoOp>
40-
// CHECK-NEXT: InitListExpr {{.*}} 'float3':'vector<float, 3>'
41-
42-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
43-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
44-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 3.000000e+00
45-
46-
// The tests above verify pretty explictily that the Initialization lists are
47-
// being constructed as expected. The next tests are bit sparser for brevity.
48-
49-
float f = 1.0f, g = 2.0f;
50-
float2 foo0 = float2(f, g); // Non-literal
51-
52-
// CHECK-LABEL: VarDecl {{.*}} foo0 'float2'
53-
// CHECK-NEXT: CXXFunctionalCastExpr
54-
// CHECK-NEXT: InitListExpr
55-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
56-
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue Var {{.*}} 'f' 'float'
57-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
58-
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue Var {{.*}} 'g' 'float'
59-
60-
int i = 1, j = 2;
61-
float2 foo1 = float2(1, 2); // Integer literals
62-
63-
// CHECK-LABEL: VarDecl {{.*}} foo1 'float2'
64-
// CHECK-NEXT: CXXFunctionalCastExpr
65-
// CHECK-NEXT: InitListExpr
66-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
67-
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1
68-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
69-
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 2
70-
71-
float2 foo2 = float2(i, j); // Integer non-literal
72-
73-
// CHECK-LABEL: VarDecl {{.*}} foo2 'float2'
74-
// CHECK-NEXT: CXXFunctionalCastExpr
75-
// CHECK-NEXT: InitListExpr
76-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
77-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
78-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
79-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
80-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
81-
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'j' 'int'
82-
83-
struct S { float f; } s;
84-
float2 foo4 = float2(s.f, s.f);
85-
86-
// CHECK-LABEL: VarDecl {{.*}} foo4 'float2'
87-
// CHECK-NEXT: CXXFunctionalCastExpr
88-
// CHECK-NEXT: InitListExpr
89-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
90-
// CHECK-NEXT: MemberExpr {{.*}} 'float' lvalue .f {{.*}}
91-
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct S':'S' lvalue Var {{.*}} 's' 'struct S':'S'
92-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
93-
// CHECK-NEXT: MemberExpr {{.*}} 'float' lvalue .f {{.*}}
94-
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct S':'S' lvalue Var {{.*}} 's' 'struct S':'S'
95-
96-
struct T {
97-
operator float() const { return 1.0f; }
98-
} t;
99-
float2 foo5 = float2(t, t); // user-defined cast operator
100-
101-
// CHECK-LABEL: VarDecl {{.*}} foo5 'float2'
102-
// CHECK-NEXT: CXXFunctionalCastExpr
103-
// CHECK-NEXT: InitListExpr
104-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <UserDefinedConversion>
105-
// CHECK-NEXT: CXXMemberCallExpr {{.*}} 'float'
106-
// CHECK-NEXT: MemberExpr {{.*}} '<bound member function type>' .operator float {{.*}}
107-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'const T' lvalue <NoOp>
108-
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct T':'T' lvalue Var {{.*}} 't' 'struct T':'T'
109-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <UserDefinedConversion>
110-
// CHECK-NEXT: CXXMemberCallExpr {{.*}} 'float'
111-
// CHECK-NEXT: MemberExpr {{.*}} '<bound member function type>' .operator float {{.*}}
112-
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'const T' lvalue <NoOp>
113-
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct T':'T' lvalue Var {{.*}} 't' 'struct T':'T'
114-
115-
typedef float2 second_level_of_typedefs;
116-
second_level_of_typedefs foo6 = float2(1.0f, 2.0f);
117-
118-
119-
// CHECK-LABEL: VarDecl {{.*}} foo6 'second_level_of_typedefs'
120-
// CHECK-NEXT: CXXFunctionalCastExpr
121-
// CHECK-NEXT: InitListExpr
122-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
123-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
124-
125-
float2 foo7 = second_level_of_typedefs(1.0f, 2.0f);
126-
127-
// CHECK-LABEL: VarDecl {{.*}} foo7 'float2'
128-
// CHECK-NEXT: CXXFunctionalCastExpr
129-
// CHECK-NEXT: InitListExpr
130-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
131-
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
132-
133-
}
1+
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -ast-dump -o - %s | FileCheck %s
2+
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -std=hlsl202x -ast-dump -o - %s | FileCheck %s
3+
4+
typedef float float2 __attribute__((ext_vector_type(2)));
5+
typedef float float3 __attribute__((ext_vector_type(3)));
6+
7+
[numthreads(1,1,1)]
8+
void entry() {
9+
float2 Vec2 = float2(1.0, 2.0);
10+
float3 Vec3 = float3(Vec2, 3.0);
11+
float3 Vec3b = float3(1.0, 2.0, 3.0);
12+
13+
// For the float2 vector, we just expect a conversion from constructor
14+
// parameters to an initialization list
15+
// CHECK-LABEL: VarDecl {{.*}} used Vec2 'float2':'vector<float, 2>' cinit
16+
// CHECK-NEXT: CXXFunctionalCastExpr {{.*}} 'float2':'vector<float, 2>' functional cast to float2 <NoOp>
17+
// CHECK-NEXT: InitListExpr {{.*}} 'float2':'vector<float, 2>'
18+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
19+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
20+
21+
22+
// For the float 3 things get fun...
23+
// Here we expect accesses to the vec2 to provide the first and second
24+
// components using ArraySubscriptExpr
25+
// CHECK-LABEL: VarDecl {{.*}} Vec3 'float3':'vector<float, 3>' cinit
26+
// CHECK-NEXT: CXXFunctionalCastExpr {{.*}} 'float3':'vector<float, 3>' functional cast to float3 <NoOp>
27+
// CHECK-NEXT: InitListExpr {{.*}} 'float3':'vector<float, 3>'
28+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
29+
// CHECK-NEXT: ArraySubscriptExpr {{.*}} 'float' lvalue
30+
// CHECK-NEXT: DeclRefExpr {{.*}} 'float2':'vector<float, 2>' lvalue Var {{.*}} 'Vec2' 'float2':'vector<float, 2>'
31+
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 0
32+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
33+
// CHECK-NEXT: ArraySubscriptExpr {{.*}} 'float' lvalue
34+
// CHECK-NEXT: DeclRefExpr {{.*}} 'float2':'vector<float, 2>' lvalue Var {{.*}} 'Vec2' 'float2':'vector<float, 2>'
35+
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1
36+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 3.000000e+00
37+
38+
// CHECK: VarDecl {{.*}} 'float3':'vector<float, 3>' cinit
39+
// CHECK-NEXT: CXXFunctionalCastExpr {{.*}} 'float3':'vector<float, 3>' functional cast to float3 <NoOp>
40+
// CHECK-NEXT: InitListExpr {{.*}} 'float3':'vector<float, 3>'
41+
42+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
43+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
44+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 3.000000e+00
45+
46+
// The tests above verify pretty explictily that the Initialization lists are
47+
// being constructed as expected. The next tests are bit sparser for brevity.
48+
49+
float f = 1.0f, g = 2.0f;
50+
float2 foo0 = float2(f, g); // Non-literal
51+
52+
// CHECK-LABEL: VarDecl {{.*}} foo0 'float2'
53+
// CHECK-NEXT: CXXFunctionalCastExpr
54+
// CHECK-NEXT: InitListExpr
55+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
56+
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue Var {{.*}} 'f' 'float'
57+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
58+
// CHECK-NEXT: DeclRefExpr {{.*}} 'float' lvalue Var {{.*}} 'g' 'float'
59+
60+
int i = 1, j = 2;
61+
float2 foo1 = float2(1, 2); // Integer literals
62+
63+
// CHECK-LABEL: VarDecl {{.*}} foo1 'float2'
64+
// CHECK-NEXT: CXXFunctionalCastExpr
65+
// CHECK-NEXT: InitListExpr
66+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
67+
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1
68+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
69+
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 2
70+
71+
float2 foo2 = float2(i, j); // Integer non-literal
72+
73+
// CHECK-LABEL: VarDecl {{.*}} foo2 'float2'
74+
// CHECK-NEXT: CXXFunctionalCastExpr
75+
// CHECK-NEXT: InitListExpr
76+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
77+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
78+
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'i' 'int'
79+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <IntegralToFloating>
80+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
81+
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue Var {{.*}} 'j' 'int'
82+
83+
struct S { float f; } s;
84+
float2 foo4 = float2(s.f, s.f);
85+
86+
// CHECK-LABEL: VarDecl {{.*}} foo4 'float2'
87+
// CHECK-NEXT: CXXFunctionalCastExpr
88+
// CHECK-NEXT: InitListExpr
89+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
90+
// CHECK-NEXT: MemberExpr {{.*}} 'float' lvalue .f {{.*}}
91+
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct S':'S' lvalue Var {{.*}} 's' 'struct S':'S'
92+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <LValueToRValue>
93+
// CHECK-NEXT: MemberExpr {{.*}} 'float' lvalue .f {{.*}}
94+
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct S':'S' lvalue Var {{.*}} 's' 'struct S':'S'
95+
96+
struct T {
97+
operator float() const { return 1.0f; }
98+
} t;
99+
float2 foo5 = float2(t, t); // user-defined cast operator
100+
101+
// CHECK-LABEL: VarDecl {{.*}} foo5 'float2'
102+
// CHECK-NEXT: CXXFunctionalCastExpr
103+
// CHECK-NEXT: InitListExpr
104+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <UserDefinedConversion>
105+
// CHECK-NEXT: CXXMemberCallExpr {{.*}} 'float'
106+
// CHECK-NEXT: MemberExpr {{.*}} '<bound member function type>' .operator float {{.*}}
107+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'const T' lvalue <NoOp>
108+
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct T':'T' lvalue Var {{.*}} 't' 'struct T':'T'
109+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'float' <UserDefinedConversion>
110+
// CHECK-NEXT: CXXMemberCallExpr {{.*}} 'float'
111+
// CHECK-NEXT: MemberExpr {{.*}} '<bound member function type>' .operator float {{.*}}
112+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'const T' lvalue <NoOp>
113+
// CHECK-NEXT: DeclRefExpr {{.*}} 'struct T':'T' lvalue Var {{.*}} 't' 'struct T':'T'
114+
115+
typedef float2 second_level_of_typedefs;
116+
second_level_of_typedefs foo6 = float2(1.0f, 2.0f);
117+
118+
119+
// CHECK-LABEL: VarDecl {{.*}} foo6 'second_level_of_typedefs'
120+
// CHECK-NEXT: CXXFunctionalCastExpr
121+
// CHECK-NEXT: InitListExpr
122+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
123+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
124+
125+
float2 foo7 = second_level_of_typedefs(1.0f, 2.0f);
126+
127+
// CHECK-LABEL: VarDecl {{.*}} foo7 'float2'
128+
// CHECK-NEXT: CXXFunctionalCastExpr
129+
// CHECK-NEXT: InitListExpr
130+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 1.000000e+00
131+
// CHECK-NEXT: FloatingLiteral {{.*}} 'float' 2.000000e+00
132+
133+
}

0 commit comments

Comments
 (0)