@@ -613,16 +613,14 @@ BuiltinTypeDeclBuilder &BuiltinTypeDeclBuilder::addHandleMember(
613
613
ResourceClass RC, bool IsROV, bool RawBuffer, AccessSpecifier Access) {
614
614
assert (!Record->isCompleteDefinition () && " record is already complete" );
615
615
616
- ResClass = RC;
617
-
618
616
ASTContext &Ctx = SemaRef.getASTContext ();
619
617
TypeSourceInfo *ElementTypeInfo =
620
618
Ctx.getTrivialTypeSourceInfo (getHandleElementType (), SourceLocation ());
621
619
622
620
// add handle member with resource type attributes
623
621
QualType AttributedResTy = QualType ();
624
622
SmallVector<const Attr *> Attrs = {
625
- HLSLResourceClassAttr::CreateImplicit (Ctx, ResClass ),
623
+ HLSLResourceClassAttr::CreateImplicit (Ctx, RC ),
626
624
IsROV ? HLSLROVAttr::CreateImplicit (Ctx) : nullptr ,
627
625
RawBuffer ? HLSLRawBufferAttr::CreateImplicit (Ctx) : nullptr ,
628
626
ElementTypeInfo
@@ -699,7 +697,7 @@ BuiltinTypeDeclBuilder &BuiltinTypeDeclBuilder::addArraySubscriptOperators() {
699
697
AST.DeclarationNames .getCXXOperatorName (OO_Subscript);
700
698
701
699
addHandleAccessFunction (Subscript, /* IsConst=*/ true , /* IsRef=*/ true );
702
- if (ResClass == llvm::dxil::ResourceClass::UAV)
700
+ if (getResourceAttrs (). ResourceClass == llvm::dxil::ResourceClass::UAV)
703
701
addHandleAccessFunction (Subscript, /* IsConst=*/ false , /* IsRef=*/ true );
704
702
705
703
return *this ;
@@ -742,6 +740,12 @@ QualType BuiltinTypeDeclBuilder::getHandleElementType() {
742
740
return SemaRef.getASTContext ().Char8Ty ;
743
741
}
744
742
743
+ HLSLAttributedResourceType::Attributes
744
+ BuiltinTypeDeclBuilder::getResourceAttrs () {
745
+ QualType HandleType = getResourceHandleField ()->getType ();
746
+ return cast<HLSLAttributedResourceType>(HandleType)->getAttrs ();
747
+ }
748
+
745
749
// BuiltinTypeDeclBuilder &BuiltinTypeDeclBuilder::startDefinition() {
746
750
// assert(!Record->isCompleteDefinition() && "record is already complete");
747
751
// Record->startDefinition();
0 commit comments