-
Notifications
You must be signed in to change notification settings - Fork 13.3k
[HLSL] Allow EmptyDecl in cbuffer/tbuffer #128250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[HLSL] Allow EmptyDecl in cbuffer/tbuffer #128250
Conversation
We do handle EmptyDecls in codegen already as of llvm#124886, but we were blocking them in Sema. EmptyDecls tend to be caused by extra semicolons which are not illegal. Fixes llvm#128238
@llvm/pr-subscribers-hlsl Author: Chris B (llvm-beanz) ChangesWe 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:
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@+1 {{unknown type name 'flaot'}}
flaot f;
}
+
+// None of these should produce an error!
+cbuffer EmptyCBuffer {}
+
+cbuffer EmptyDeclCBuffer {
+ ;
+}
+
+cbuffer EmptyDecl2CBuffer {
+ ;
+ int X;
+}
|
@llvm/pr-subscribers-clang Author: Chris B (llvm-beanz) ChangesWe 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:
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@+1 {{unknown type name 'flaot'}}
flaot f;
}
+
+// None of these should produce an error!
+cbuffer EmptyCBuffer {}
+
+cbuffer EmptyDeclCBuffer {
+ ;
+}
+
+cbuffer EmptyDecl2CBuffer {
+ ;
+ int X;
+}
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
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