瀏覽代碼

Add warning for VFACE semantic (#3626)

VFACE is obsolete. See #3494.
Jaebaek Seo 4 年之前
父節點
當前提交
530ddf4f7a

+ 5 - 0
tools/clang/lib/Parse/ParseDecl.cpp

@@ -616,6 +616,10 @@ bool Parser::MaybeParseHLSLAttributes(std::vector<hlsl::UnusualAnnotation *> &ta
       ConsumeToken(); // consume colon.
 
       StringRef semanticName = Tok.getIdentifierInfo()->getName();
+      if (semanticName.equals("VFACE")) {
+        Diag(Tok.getLocation(), diag::warn_unsupported_target_attribute)
+            << semanticName;
+      }
       hlsl::SemanticDecl *pUA = new (context) hlsl::SemanticDecl(semanticName);
       pUA->Loc = Tok.getLocation();
       ConsumeToken(); // consume semantic
@@ -627,6 +631,7 @@ bool Parser::MaybeParseHLSLAttributes(std::vector<hlsl::UnusualAnnotation *> &ta
       return false;
     }
   }
+  return true;
 }
 // HLSL Change Ends
 

+ 8 - 0
tools/clang/test/CodeGenSPIRV/var.vface.interface.hlsl

@@ -0,0 +1,8 @@
+// Run: %dxc -T ps_6_0 -E main
+
+// CHECK: warning: Ignoring unsupported 'VFACE' in the target attribute string
+
+float4 main(float4 color : COLOR, float vface : VFACE) : SV_TARGET
+{
+  return (vface > 0) ? color : (color*2);
+}

+ 8 - 0
tools/clang/test/HLSLFileCheck/hlsl/semantics/legacy/obsolete_semantics_ps_3.hlsl

@@ -0,0 +1,8 @@
+// RUN: %dxc -E main -T ps_6_0 %s | FileCheck -input=stderr %s
+
+// CHECK: warning: Ignoring unsupported 'VFACE' in the target attribute string
+
+float4 main(float4 color : COLOR, uint vface : VFACE) : SV_TARGET
+{
+  return (vface > 0) ? color : (color*2);
+}

+ 4 - 0
tools/clang/unittests/SPIRV/CodeGenSpirvTest.cpp

@@ -208,6 +208,10 @@ TEST_F(FileTest, GlobalsCBufferError) {
   runFileTest("var.globals.error.hlsl", Expect::Failure);
 }
 
+TEST_F(FileTest, VarVFACEInterface) {
+  runFileTest("var.vface.interface.hlsl", Expect::Warning);
+}
+
 // For prefix/postfix increment/decrement
 TEST_F(FileTest, UnaryOpPrefixIncrement) {
   runFileTest("unary-op.prefix-inc.hlsl");