Skip to content

Commit a702ac8

Browse files
committed
merge in spelled attribute change / rebase
1 parent b470fb7 commit a702ac8

File tree

7 files changed

+67
-33
lines changed

7 files changed

+67
-33
lines changed

clang/lib/Sema/HLSLExternalSemaSource.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -491,37 +491,40 @@ void HLSLExternalSemaSource::defineTrivialHLSLTypes() {
491491
}
492492

493493
/// Set up common members and attributes for buffer types
494-
static BuiltinTypeDeclBuilder setupBufferHandle(CXXRecordDecl *Decl, Sema &S,
495-
ResourceClass RC) {
494+
static BuiltinTypeDeclBuilder setupBufferType(CXXRecordDecl *Decl, Sema &S,
495+
ResourceClass RC, ResourceKind RK,
496+
bool IsROV) {
496497
return BuiltinTypeDeclBuilder(Decl)
497498
.addHandleMember()
498-
.addDefaultHandleConstructor(S, RC)
499-
.annotateHLSLResource(RC, RK, IsROV);
499+
.addDefaultHandleConstructor(S, RC);
500500
}
501501

502502
void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() {
503503
CXXRecordDecl *Decl;
504504
Decl =
505505
BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "RWBuffer")
506506
.addSimpleTemplateParams(*SemaPtr, {"element_type"})
507-
.annotateResourceClass(ResourceClass::UAV, ResourceKind::TypedBuffer,
508-
/*IsROV=*/false)
507+
.annotateHLSLResource(ResourceClass::UAV, ResourceKind::TypedBuffer,
508+
/*IsROV=*/false)
509509
.Record;
510510

511511
onCompletion(Decl, [this](CXXRecordDecl *Decl) {
512-
setupBufferHandle(Decl, *SemaPtr, ResourceClass::UAV)
512+
setupBufferType(Decl, *SemaPtr, ResourceClass::UAV,
513+
ResourceKind::TypedBuffer,
514+
/*IsROV=*/false)
513515
.addArraySubscriptOperators()
514516
.completeDefinition();
515517
});
516518

517519
Decl =
518520
BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "RasterizerOrderedBuffer")
519521
.addSimpleTemplateParams(*SemaPtr, {"element_type"})
520-
.annotateResourceClass(ResourceClass::UAV, ResourceKind::TypedBuffer,
521-
/*IsROV=*/true)
522+
.annotateHLSLResource(ResourceClass::UAV, ResourceKind::TypedBuffer,
523+
/*IsROV=*/true)
522524
.Record;
523525
onCompletion(Decl, [this](CXXRecordDecl *Decl) {
524-
setupBufferHandle(Decl, *SemaPtr, ResourceClass::UAV)
526+
setupBufferType(Decl, *SemaPtr, ResourceClass::UAV,
527+
ResourceKind::TypedBuffer, /*IsROV=*/true)
525528
.addArraySubscriptOperators()
526529
.completeDefinition();
527530
});

clang/lib/Sema/SemaHLSL.cpp

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ Decl *SemaHLSL::ActOnStartBuffer(Scope *BufferScope, bool CBuffer,
4242
: llvm::hlsl::ResourceClass::SRV;
4343
auto RK = CBuffer ? llvm::hlsl::ResourceKind::CBuffer
4444
: llvm::hlsl::ResourceKind::TBuffer;
45-
Result->addAttr(HLSLResourceAttr::CreateImplicit(getASTContext(), RC, RK,
45+
Result->addAttr(HLSLResourceClassAttr::CreateImplicit(getASTContext(), RC));
46+
Result->addAttr(HLSLResourceAttr::CreateImplicit(getASTContext(), RK,
4647
/*IsROV=*/false));
4748

4849
SemaRef.PushOnScopeChains(Result, BufferScope);
@@ -511,6 +512,24 @@ const CXXRecordDecl *getRecordDeclFromVarDecl(VarDecl *VD) {
511512
return TheRecordDecl;
512513
}
513514

515+
const HLSLResourceClassAttr *
516+
getHLSLResourceClassAttrFromEitherDecl(VarDecl *VD,
517+
HLSLBufferDecl *CBufferOrTBuffer) {
518+
519+
if (VD) {
520+
const CXXRecordDecl *TheRecordDecl = getRecordDeclFromVarDecl(VD);
521+
if (!TheRecordDecl)
522+
return nullptr;
523+
const auto *Attr = TheRecordDecl->getAttr<HLSLResourceClassAttr>();
524+
return Attr;
525+
} else if (CBufferOrTBuffer) {
526+
const auto *Attr = CBufferOrTBuffer->getAttr<HLSLResourceClassAttr>();
527+
return Attr;
528+
}
529+
llvm_unreachable("one of the two conditions should be true.");
530+
return nullptr;
531+
}
532+
514533
const HLSLResourceAttr *
515534
getHLSLResourceAttrFromEitherDecl(VarDecl *VD,
516535
HLSLBufferDecl *CBufferOrTBuffer) {
@@ -542,7 +561,7 @@ void traverseType(QualType TheQualTy, RegisterBindingFlags &Flags) {
542561
if (auto TDecl = dyn_cast<ClassTemplateSpecializationDecl>(SubRecordDecl)) {
543562
auto TheRecordDecl = TDecl->getSpecializedTemplate()->getTemplatedDecl();
544563
TheRecordDecl = TheRecordDecl->getCanonicalDecl();
545-
const auto *Attr = TheRecordDecl->getAttr<HLSLResourceAttr>();
564+
const auto *Attr = TheRecordDecl->getAttr<HLSLResourceClassAttr>();
546565
llvm::hlsl::ResourceClass DeclResourceClass = Attr->getResourceClass();
547566
switch (DeclResourceClass) {
548567
case llvm::hlsl::ResourceClass::SRV:
@@ -610,11 +629,11 @@ RegisterBindingFlags HLSLFillRegisterBindingFlags(Sema &S, Decl *TheDecl) {
610629
else
611630
Flags.SRV = true;
612631
} else if (TheVarDecl) {
613-
const HLSLResourceAttr *res_attr =
614-
getHLSLResourceAttrFromEitherDecl(TheVarDecl, CBufferOrTBuffer);
615-
if (res_attr) {
632+
const HLSLResourceClassAttr *resClassAttr =
633+
getHLSLResourceClassAttrFromEitherDecl(TheVarDecl, CBufferOrTBuffer);
634+
if (resClassAttr) {
616635
llvm::hlsl::ResourceClass DeclResourceClass =
617-
res_attr->getResourceClass();
636+
resClassAttr->getResourceClass();
618637
Flags.Resource = true;
619638
switch (DeclResourceClass) {
620639
case llvm::hlsl::ResourceClass::SRV:
@@ -741,12 +760,15 @@ static void DiagnoseHLSLResourceRegType(Sema &S, SourceLocation &ArgLoc,
741760
// next, if resource is set, make sure the register type in the register
742761
// annotation is compatible with the variable's resource type.
743762
if (Flags.Resource) {
744-
const HLSLResourceAttr *res_attr =
763+
const HLSLResourceAttr *resAttr =
745764
getHLSLResourceAttrFromEitherDecl(TheVarDecl, CBufferOrTBuffer);
746-
assert(res_attr && "any decl that set the resource flag on analysis should "
747-
"have a resource attribute attached.");
765+
const HLSLResourceClassAttr *resClassAttr =
766+
getHLSLResourceClassAttrFromEitherDecl(TheVarDecl, CBufferOrTBuffer);
767+
assert(resAttr && resClassAttr &&
768+
"any decl that set the resource flag on analysis should "
769+
"have a resource attribute and resource class attribute attached.");
748770
const llvm::hlsl::ResourceClass DeclResourceClass =
749-
res_attr->getResourceClass();
771+
resClassAttr->getResourceClass();
750772

751773
switch (DeclResourceClass) {
752774
case llvm::hlsl::ResourceClass::SRV:

clang/test/AST/HLSL/ast-dump-comment-cbuffe-tbufferr.hlsl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,16 @@ tbuffer B {
3838
}
3939

4040
// AST:HLSLBufferDecl {{.*}}:11:1, line:20:1> line:11:9 cbuffer A
41-
// AST-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer CBuffer
41+
// AST-NEXT:-HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
42+
// AST-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
4243
// AST-NEXT:FullComment {{.*}}<line:10:4, col:17>
4344
// AST-NEXT:`-ParagraphComment {{.*}}<col:4, col:17>
4445
// AST-NEXT:`-TextComment {{.*}}<col:4, col:17> Text=" CBuffer decl."
4546
// AST-NEXT:-VarDecl {{.*}}<line:15:5, col:11> col:11 a 'float'
4647
// AST-NEXT:`-VarDecl {{.*}}<line:19:5, col:9> col:9 b 'int'
4748
// AST-NEXT:HLSLBufferDecl {{.*}}<line:29:1, line:38:1> line:29:9 tbuffer B
48-
// AST-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit SRV TBuffer
49+
// AST-NEXT:-HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit SRV
50+
// AST-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit TBuffer
4951
// AST-NEXT:-FullComment {{.*}}<line:28:4, col:17>
5052
// AST-NEXT: `-ParagraphComment {{.*}}<col:4, col:17>
5153
// AST-NEXT: `-TextComment {{.*}}<col:4, col:17> Text=" TBuffer decl."

clang/test/AST/HLSL/cbuffer_tbuffer.hlsl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -ast-dump -o - %s | FileCheck %s
22

3-
// CHECK:HLSLBufferDecl 0x[[CB:[0-9a-f]+]] {{.*}} line:6:9 cbuffer CB
4-
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer CBuffer
3+
// CHECK:HLSLBufferDecl 0x[[CB:[0-9a-f]+]] {{.*}} line:7:9 cbuffer CB
4+
// CHECK:HLSLResourceClassAttr 0x{{[0-9a-f]+}} <<invalid sloc>> Implicit CBuffer
5+
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
56
// CHECK-NEXT:VarDecl 0x[[A:[0-9a-f]+]] {{.*}} col:9 used a 'float'
67
cbuffer CB {
78
float a;
89
}
910

10-
// CHECK:HLSLBufferDecl 0x[[TB:[0-9a-f]+]] {{.*}} line:13:9 tbuffer TB
11-
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit SRV TBuffer
11+
// CHECK:HLSLBufferDecl 0x[[TB:[0-9a-f]+]] {{.*}} line:15:9 tbuffer TB
12+
// CHECK:HLSLResourceClassAttr 0x{{[0-9a-f]+}} <<invalid sloc>> Implicit SRV
13+
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit TBuffer
1214
// CHECK-NEXT:VarDecl 0x[[B:[0-9a-f]+]] {{.*}} col:9 used b 'float'
1315
tbuffer TB {
1416
float b;

clang/test/AST/HLSL/packoffset.hlsl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
// CHECK: HLSLBufferDecl {{.*}} cbuffer A
55
cbuffer A
66
{
7-
// CHECK-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer CBuffer
7+
// CHECK-NEXT:-HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
8+
// CHECK-NEXT:-HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
89
// CHECK-NEXT: VarDecl {{.*}} A1 'float4'
910
// CHECK-NEXT: HLSLPackOffsetAttr {{.*}} 0 0
1011
float4 A1 : packoffset(c);

clang/test/AST/HLSL/pch_hlsl_buffer.hlsl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ float foo() {
1717
}
1818
// Make sure cbuffer/tbuffer works for PCH.
1919
// CHECK:HLSLBufferDecl 0x{{[0-9a-f]+}} <{{.*}}:7:1, line:9:1> line:7:9 imported <undeserialized declarations> cbuffer A
20-
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer CBuffer
20+
// CHECK-NEXT:HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit CBuffer
21+
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit CBuffer
2122
// CHECK-NEXT:`-VarDecl 0x[[A:[0-9a-f]+]] <line:8:3, col:9> col:9 imported used a 'float'
2223
// CHECK-NEXT:HLSLBufferDecl 0x{{[0-9a-f]+}} <line:11:1, line:13:1> line:11:9 imported <undeserialized declarations> tbuffer B
23-
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit SRV TBuffer
24+
// CHECK-NEXT:HLSLResourceClassAttr {{.*}} <<invalid sloc>> Implicit SRV
25+
// CHECK-NEXT:HLSLResourceAttr {{.*}} <<invalid sloc>> Implicit TBuffer
2426
// CHECK-NEXT:`-VarDecl 0x[[B:[0-9a-f]+]] <line:12:3, col:9> col:9 imported used b 'float'
2527
// CHECK-NEXT:FunctionDecl 0x{{[0-9a-f]+}} <line:15:1, line:17:1> line:15:7 imported foo 'float ()'
2628
// CHECK-NEXT:CompoundStmt 0x{{[0-9a-f]+}} <col:13, line:17:1>

clang/test/AST/HLSL/resource_binding_attr.hlsl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -ast-dump -o - %s | FileCheck %s
22

3-
// CHECK:HLSLBufferDecl 0x[[CB:[0-9a-f]+]] {{.*}} line:7:9 cbuffer CB
4-
// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer CBuffer
3+
// CHECK:HLSLBufferDecl 0x[[CB:[0-9a-f]+]] {{.*}} line:8:9 cbuffer CB
4+
// CHECK-NEXT:HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer
5+
// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit CBuffer
56
// CHECK-NEXT:HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "b3" "space2"
67
// CHECK-NEXT:VarDecl 0x[[A:[0-9a-f]+]] {{.*}} col:9 used a 'float'
78
cbuffer CB : register(b3, space2) {
89
float a;
910
}
1011

11-
// CHECK:HLSLBufferDecl 0x[[TB:[0-9a-f]+]] {{.*}} line:15:9 tbuffer TB
12-
// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit SRV TBuffer
12+
// CHECK:HLSLBufferDecl 0x[[TB:[0-9a-f]+]] {{.*}} line:17:9 tbuffer TB
13+
// CHECK-NEXT:HLSLResourceClassAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit SRV
14+
// CHECK-NEXT:HLSLResourceAttr 0x[[CB:[0-9a-f]+]] {{.*}} Implicit TBuffer
1315
// CHECK-NEXT:HLSLResourceBindingAttr 0x{{[0-9a-f]+}} <col:14> "t2" "space1"
1416
// CHECK-NEXT:VarDecl 0x[[B:[0-9a-f]+]] {{.*}} col:9 used b 'float'
1517
tbuffer TB : register(t2, space1) {

0 commit comments

Comments
 (0)