[clang] [HLSL] Allow EmptyDecl in cbuffer/tbuffer (PR #128250)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 21 15:50:17 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-hlsl
Author: Chris B (llvm-beanz)
<details>
<summary>Changes</summary>
We do handle EmptyDecls in codegen already as of #<!-- -->124886, but we were blocking them in Sema. EmptyDecls tend to be caused by extra semicolons which are not illegal.
Fixes #<!-- -->128238
---
Full diff: https://github.com/llvm/llvm-project/pull/128250.diff
2 Files Affected:
- (modified) clang/lib/Parse/ParseHLSL.cpp (+1-1)
- (modified) clang/test/SemaHLSL/cb_error.hlsl (+12)
``````````diff
diff --git a/clang/lib/Parse/ParseHLSL.cpp b/clang/lib/Parse/ParseHLSL.cpp
index 443bf2b9ec626..612e1ab0084ff 100644
--- a/clang/lib/Parse/ParseHLSL.cpp
+++ b/clang/lib/Parse/ParseHLSL.cpp
@@ -30,7 +30,7 @@ static bool validateDeclsInsideHLSLBuffer(Parser::DeclGroupPtrTy DG,
// Only allow function, variable, record decls inside HLSLBuffer.
for (DeclGroupRef::iterator I = Decls.begin(), E = Decls.end(); I != E; ++I) {
Decl *D = *I;
- if (isa<CXXRecordDecl, RecordDecl, FunctionDecl, VarDecl>(D))
+ if (isa<CXXRecordDecl, RecordDecl, FunctionDecl, VarDecl, EmptyDecl>(D))
continue;
// FIXME: support nested HLSLBuffer and namespace inside HLSLBuffer.
diff --git a/clang/test/SemaHLSL/cb_error.hlsl b/clang/test/SemaHLSL/cb_error.hlsl
index 133adeeb2068b..95c917a9bb9ee 100644
--- a/clang/test/SemaHLSL/cb_error.hlsl
+++ b/clang/test/SemaHLSL/cb_error.hlsl
@@ -47,3 +47,15 @@ tbuffer B {
// expected-error at +1 {{unknown type name 'flaot'}}
flaot f;
}
+
+// None of these should produce an error!
+cbuffer EmptyCBuffer {}
+
+cbuffer EmptyDeclCBuffer {
+ ;
+}
+
+cbuffer EmptyDecl2CBuffer {
+ ;
+ int X;
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/128250
More information about the cfe-commits
mailing list