[clang] [HLSL] Split out the ROV attribute from the resource attribute, make it a new spellable attribute. (PR #102414)
Damyan Pepper via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 13 14:05:09 PDT 2024
================
@@ -116,12 +116,15 @@ struct BuiltinTypeDeclBuilder {
QualType(TTD->getTypeForDecl(), 0));
}
// add handle member
- llvm::SmallVector<Attr *, 2> Attrs;
Attr *ResourceClassAttr =
HLSLResourceClassAttr::CreateImplicit(Record->getASTContext(), RC);
Attr *ResourceAttr =
- HLSLResourceAttr::CreateImplicit(Record->getASTContext(), RK, IsROV);
+ HLSLResourceAttr::CreateImplicit(Record->getASTContext(), RK);
addMemberVariable("h", Ty, {ResourceClassAttr, ResourceAttr}, Access);
+ if (IsROV)
----------------
damyanp wrote:
It would be nice if we could find a way to be more consistent with how the other attributes are added to the field, and so only follow a single pattern for adding them.
What if we arranged it so we could write:
```c++
Attr *ResourceClassAttr =
HLSLResourceClassAttr::CreateImplicit(Record->getASTContext(), RC);
Attr *ResourceAttr =
HLSLResourceAttr::CreateImplicit(Record->getASTContext(), RK);
Attr *ROVAttr = IsRov ? HLSLROVAttr::CreateImplicit(Record->getASTContents()) : nullptr;
addMemberVariable("h", Ty, {ResourceClassAttr, ResourceAttr, ROVAttr}, Access);
```
There may be other ways to slice it - my main request here is that we end up with a consistent way of doing this.
Remember `addMemberVariable` _only_ exists in order for us to create this `h` member, so we can adapt it to work well for this purpose.
https://github.com/llvm/llvm-project/pull/102414
More information about the cfe-commits
mailing list