================
@@ -0,0 +1,56 @@
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -x hlsl -o - 
-fsyntax-only %s -verify
+
+// valid
+cbuffer cbuf {
+    RWBuffer<int> r : register(u0, space0);
+}
+
+cbuffer cbuf2 {
+    struct x {
+        // expected-error@+1 {{'register' attribute only applies to 
cbuffer/tbuffer and external global variables}}
+        RWBuffer<int> E : register(u2, space3);
+    };
+}
+
+struct MyStruct {
+    RWBuffer<int> E;
+};
+
+cbuffer cbuf3 {
+  MyStruct E : register(u2, space3);
----------------
bob80905 wrote:

> And I think that we said that this would report a "can't use space on 
> globals" error?

I would argue those 2 cases are not equivalent, because one register annotation 
is not in the global scope, and the other is. So, the second case would emit an 
error about the annotation not being in the global scope, and the first would 
not.
I've explicitly added the second case along with the expected error for clarity.

https://github.com/llvm/llvm-project/pull/106782
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to