Browse Source

Ignore shared keyword on cbuffer/tbuffer (#389)

Ignoring shared keyword for now.
Young Kim 8 năm trước cách đây
mục cha
commit
f854dcab0a

+ 6 - 1
tools/clang/lib/Parse/Parser.cpp

@@ -758,6 +758,11 @@ Parser::ParseExternalDeclaration(ParsedAttributesWithRange &attrs,
                                               : Sema::PCC_Namespace);
     cutOffParsing();
     return DeclGroupPtrTy();
+  // HLSL Change Starts: Ignore shared keyword for now
+  case tok::kw_shared:
+      ConsumeToken();
+      return ParseExternalDeclaration(attrs);
+  // HLSL Change Ends
   // HLSL Change Starts: Start parsing declaration of cbuffer and tbuffers
   case tok::kw_cbuffer:
   case tok::kw_tbuffer:
@@ -829,7 +834,7 @@ Parser::ParseExternalDeclaration(ParsedAttributesWithRange &attrs,
     if (getLangOpts().HLSL) goto dont_know; // HLSL Change - skip unsupported processing
     ParseMicrosoftIfExistsExternalDeclaration();
     return DeclGroupPtrTy();
-      
+
   default:
   dont_know:
     // We can't tell whether this is a function-definition or declaration yet.

+ 22 - 0
tools/clang/test/HLSL/rewriter/correct_rewrites/shared.hlsl

@@ -0,0 +1,22 @@
+// Rewrite unchanged result:
+cbuffer cb0 {
+  const float X;
+}
+;
+tbuffer tb0 {
+  const float Y;
+}
+;
+Buffer<int> g_intBuffer;
+RWByteAddressBuffer g_byteBuffer;
+Texture1D<double> g_tex1d;
+Texture1DArray<int> g_tex1dArray;
+Texture2D<float> g_tex2d;
+Texture2DArray<float> g_tex2dArray;
+Texture2DMS<half> g_texture2dms;
+Texture2DMSArray<float> g_texture2dmsArray;
+float main() : SV_Target {
+  return -X + Y;
+}
+
+

+ 21 - 0
tools/clang/test/HLSL/rewriter/shared.hlsl

@@ -0,0 +1,21 @@
+shared cbuffer cb0 {
+    float X;
+};
+
+shared tbuffer tb0 {
+    float Y;
+};
+
+shared Buffer<int> g_intBuffer;
+shared RWByteAddressBuffer g_byteBuffer;
+
+shared Texture1D<double> g_tex1d;
+shared Texture1DArray<int> g_tex1dArray;
+shared Texture2D<float> g_tex2d;
+shared Texture2DArray<float> g_tex2dArray;
+shared Texture2DMS<half> g_texture2dms;
+shared Texture2DMSArray<float> g_texture2dmsArray;
+
+float main() : SV_Target {
+    return -X + Y;
+}

+ 5 - 0
tools/clang/unittests/HLSL/RewriterTest.cpp

@@ -56,6 +56,7 @@ public:
   TEST_METHOD(RunMatrixSyntax);
   TEST_METHOD(RunPackReg);
   TEST_METHOD(RunScalarAssignments);
+  TEST_METHOD(RunShared);
   TEST_METHOD(RunStructAssignments);
   TEST_METHOD(RunTemplateChecks);
   TEST_METHOD(RunTypemodsSyntax);
@@ -312,6 +313,10 @@ TEST_F(RewriterTest, RunScalarAssignments) {
     CheckVerifiesHLSL(L"rewriter\\scalar-assignments_noerr.hlsl", L"rewriter\\correct_rewrites\\scalar-assignments_gold.hlsl");
 }
 
+TEST_F(RewriterTest, RunShared) {
+    CheckVerifiesHLSL(L"rewriter\\shared.hlsl", L"rewriter\\correct_rewrites\\shared.hlsl");
+}
+
 TEST_F(RewriterTest, RunStructAssignments) {
     CheckVerifiesHLSL(L"rewriter\\struct-assignments_noerr.hlsl", L"rewriter\\correct_rewrites\\struct-assignments_gold.hlsl");
 }