aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/HLSLExternalSemaSource.cpp
diff options
context:
space:
mode:
authorAshley Coleman <ascoleman@microsoft.com>2025-05-28 12:58:47 -0700
committerGitHub <noreply@github.com>2025-05-28 13:58:47 -0600
commitcb7f4ff03cc20b04360d75f78e2255214a617d5f (patch)
tree25bd3a0a43efe80e37fb262a35f0b375f456e951 /clang/lib/Sema/HLSLExternalSemaSource.cpp
parent440a8adb86564846e10830f56a9073e43d834c9b (diff)
downloadllvm-cb7f4ff03cc20b04360d75f78e2255214a617d5f.zip
llvm-cb7f4ff03cc20b04360d75f78e2255214a617d5f.tar.gz
llvm-cb7f4ff03cc20b04360d75f78e2255214a617d5f.tar.bz2
[HLSL] Add Buffer def to frontend (#141086)
Fixes #138902 Defines the `Buffer<>` type in the clang frontend. Lowering from IR->Target Machine is already handled by other code
Diffstat (limited to 'clang/lib/Sema/HLSLExternalSemaSource.cpp')
-rw-r--r--clang/lib/Sema/HLSLExternalSemaSource.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp
index 38bde7c..726581d 100644
--- a/clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp
@@ -266,6 +266,19 @@ void HLSLExternalSemaSource::defineHLSLTypesWithForwardDeclarations() {
*SemaPtr, HLSLNamespace, /*isTypedBuffer*/ true);
ConceptDecl *StructuredBufferConcept = constructBufferConceptDecl(
*SemaPtr, HLSLNamespace, /*isTypedBuffer*/ false);
+
+ Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "Buffer")
+ .addSimpleTemplateParams({"element_type"}, TypedBufferConcept)
+ .finalizeForwardDeclaration();
+
+ onCompletion(Decl, [this](CXXRecordDecl *Decl) {
+ setupBufferType(Decl, *SemaPtr, ResourceClass::SRV, /*IsROV=*/false,
+ /*RawBuffer=*/false)
+ .addArraySubscriptOperators()
+ .addLoadMethods()
+ .completeDefinition();
+ });
+
Decl = BuiltinTypeDeclBuilder(*SemaPtr, HLSLNamespace, "RWBuffer")
.addSimpleTemplateParams({"element_type"}, TypedBufferConcept)
.finalizeForwardDeclaration();