@@ -41,15 +41,12 @@ typedef float EmptyArrayTypedef[10][0];
4141cbuffer CB {
4242 // CHECK: VarDecl {{.*}} col:9 used a1 'float'
4343 float a1;
44-
4544 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB definition
4645 // CHECK: FieldDecl {{.*}} a1 'float'
47- // CHECK: VarDecl {{.*}} __handle '__hlsl_resource_t
48- // CHECK-SAME{LITERAL}: [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB)]]'
4946}
5047
5148// Check that buffer layout struct does not include resources or empty types
52- // CHECK: HLSLBufferDecl {{.*}} line:55 :9 cbuffer CB
49+ // CHECK: HLSLBufferDecl {{.*}} line:52 :9 cbuffer CB
5350// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
5451// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
5552cbuffer CB {
@@ -63,16 +60,13 @@ cbuffer CB {
6360 float d2[0 ];
6461 // CHECK: VarDecl {{.*}} col:9 e2 'float'
6562 float e2;
66-
6763 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB.1 definition
6864 // CHECK: FieldDecl {{.*}} a2 'float'
6965 // CHECK-NEXT: FieldDecl {{.*}} e2 'float'
70- // CHECK: VarDecl {{.*}} __handle '__hlsl_resource_t
71- // CHECK-SAME{LITERAL}: [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB.1)]]'
7266}
7367
7468// Check that layout struct is created for B and the empty struct C is removed
75- // CHECK: HLSLBufferDecl {{.*}} line:78 :9 cbuffer CB
69+ // CHECK: HLSLBufferDecl {{.*}} line:72 :9 cbuffer CB
7670// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
7771// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
7872cbuffer CB {
@@ -82,60 +76,47 @@ cbuffer CB {
8276 B s2;
8377 // CHECK: VarDecl {{.*}} col:12 s3 'CTypedef':'C
8478 CTypedef s3;
85-
8679 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.B definition
8780 // CHECK: FieldDecl {{.*}} a 'float'
88-
8981 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB.2 definition
9082 // CHECK: FieldDecl {{.*}} s1 'A'
9183 // CHECK: FieldDecl {{.*}} s2 '__hostlayout.struct.B'
92- // CHECK-NEXT: VarDecl {{.*}} __handle '__hlsl_resource_t
93- // CHECK-SAME{LITERAL}: [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB.2)]]'
9484}
9585
9686// check that layout struct is created for D because of its base struct
97- // CHECK: HLSLBufferDecl {{.*}} line:100 :9 cbuffer CB
87+ // CHECK: HLSLBufferDecl {{.*}} line:90 :9 cbuffer CB
9888// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
9989// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
10090cbuffer CB {
10191 // CHECK: VarDecl {{.*}} s4 'D'
10292 D s4;
103-
10493 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.D definition
10594 // CHECK: FieldDecl {{.*}} b 'float'
106-
10795 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB.3 definition
10896 // CHECK: FieldDecl {{.*}} s4 '__hostlayout.struct.D'
109- // CHECK: VarDecl {{.*}} __handle '__hlsl_resource_t
110- // CHECK-SAME{LITERAL}: [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB.3)]]'
11197}
11298
11399// check that layout struct is created for E because because its base struct
114100// is empty and should be eliminated, and BTypedef should reuse the previously
115101// defined '__hostlayout.struct.B'
116- // CHECK: HLSLBufferDecl {{.*}} line:119 :9 cbuffer CB
102+ // CHECK: HLSLBufferDecl {{.*}} line:105 :9 cbuffer CB
117103// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
118104// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
119105cbuffer CB {
120106 // CHECK: VarDecl {{.*}} s5 'E'
121107 E s5;
122108 // CHECK: VarDecl {{.*}} s6 'BTypedef':'B'
123109 BTypedef s6;
124-
125110 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.E definition
126111 // CHECK: FieldDecl {{.*}} c 'float'
127-
128112 // CHECK-NOT: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.B definition
129-
130113 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB.4 definition
131114 // CHECK: FieldDecl {{.*}} s5 '__hostlayout.struct.E'
132115 // CHECK: FieldDecl {{.*}} s6 '__hostlayout.struct.B'
133- // CHECK: VarDecl {{.*}} __handle '__hlsl_resource_t
134- // CHECK-SAME{LITERAL}: [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB.4)]]'
135116}
136117
137118// check that this produces empty layout struct
138- // CHECK: HLSLBufferDecl {{.*}} line:141 :9 cbuffer CB
119+ // CHECK: HLSLBufferDecl {{.*}} line:122 :9 cbuffer CB
139120// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
140121// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
141122cbuffer CB {
@@ -149,32 +130,25 @@ cbuffer CB {
149130 RWBuffer <float > Buf;
150131 // CHECK: VarDecl {{.*}} ea 'EmptyArrayTypedef':'float[10][0]'
151132 EmptyArrayTypedef ea;
152-
153133 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB.5 definition
154134 // CHECK-NOT: FieldDecl
155- // CHECK: VarDecl {{.*}} __handle '__hlsl_resource_t
156- // CHECK-SAME{LITERAL}: [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB.5)]]'
157135}
158136
159137// check host layout struct with compatible base struct
160- // CHECK: HLSLBufferDecl {{.*}} line:163 :9 cbuffer CB
138+ // CHECK: HLSLBufferDecl {{.*}} line:141 :9 cbuffer CB
161139// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
162140// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
163141cbuffer CB {
164142 // CHECK: VarDecl {{.*}} s8 'F'
165143 F s8;
166-
167144 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.F definition
168145 // CHECK: public 'A'
169-
170146 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB.6 definition
171147 // CHECK: FieldDecl {{.*}} s8 '__hostlayout.struct.F'
172- // CHECK: VarDecl {{.*}} __handle '__hlsl_resource_t
173- // CHECK-SAME{LITERAL}: [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB.6)]]'
174148}
175149
176150// anonymous structs
177- // CHECK: HLSLBufferDecl {{.*}} line:180 :9 cbuffer CB
151+ // CHECK: HLSLBufferDecl {{.*}} line:154 :9 cbuffer CB
178152// CHECK: HLSLResourceClassAttr {{.*}} Implicit CBuffer
179153// CHECK: HLSLResourceAttr {{.*}} Implicit CBuffer
180154cbuffer CB {
@@ -187,31 +161,25 @@ cbuffer CB {
187161 // CHECK: FieldDecl {{.*}} f 'RWBuffer<float>':'hlsl::RWBuffer<float>'
188162 RWBuffer <float > f;
189163 } s9;
190- // CHECK: VarDecl {{.*}} s9 'struct (unnamed struct at {{.*}}cbuffer.hlsl:182:3
191-
164+ // CHECK: VarDecl {{.*}} s9 'struct (unnamed struct at {{.*}}cbuffer.hlsl:156:3
192165 // CHECK: CXXRecordDecl {{.*}} struct definition
193166 struct {
194167 // CHECK: FieldDecl {{.*}} g 'int'
195168 int g;
196169 // CHECK: FieldDecl {{.*}} f 'RWBuffer<float>':'hlsl::RWBuffer<float>'
197170 RWBuffer <float > f;
198171 } s10;
199- // CHECK: VarDecl {{.*}} s10 'struct (unnamed struct at {{.*}}cbuffer.hlsl:193:3
200-
172+ // CHECK: VarDecl {{.*}} s10 'struct (unnamed struct at {{.*}}cbuffer.hlsl:166:3
201173 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.anon definition
202174 // CHECK: FieldDecl {{.*}} e 'float'
203-
204175 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.anon.1 definition
205176 // CHECK: FieldDecl {{.*}} g 'int'
206-
207177 // CHECK: CXXRecordDecl {{.*}} implicit class __hostlayout.struct.CB.7 definition
208178 // CHECK: FieldDecl {{.*}} s9 '__hostlayout.struct.anon'
209179 // CHECK: FieldDecl {{.*}} s10 '__hostlayout.struct.anon.1'
210- // CHECK-NEXT: VarDecl {{.*}} __handle '__hlsl_resource_t
211- // CHECK-SAME{LITERAL} [[hlsl::resource_class(CBuffer)]] [[hlsl::contained_type(__hostlayout.struct.CB.7)]]'
212180}
213181
214- // Add uses for the constant buffer declarations so they are not optimized awayexport
182+ // Add uses for the constant buffer declarations so they are not optimized away
215183export float foo () {
216184 return a1 + a2 + s1.a + s4.b + s5.c + s8.a + s9.e;
217185}
0 commit comments