2
0
Эх сурвалжийг харах

Remove check on empty struct when LoadDxilStructAnnotation. (#798)

Xiang Li 7 жил өмнө
parent
commit
0dbba98152

+ 1 - 7
lib/HLSL/DxilMetadataHelper.cpp

@@ -782,13 +782,7 @@ void DxilMDHelper::LoadDxilStructAnnotation(const MDOperand &MDO, DxilStructAnno
   const MDTuple *pTupleMD = dyn_cast<MDTuple>(MDO.get());
   IFTBOOL(pTupleMD != nullptr, DXC_E_INCORRECT_DXIL_METADATA);
   if (pTupleMD->getNumOperands() == 1) {
-    const StructType *ST = SA.GetStructType();
-    if (ST->getNumElements() == 1) {
-      Type *EltTy = ST->getElementType(0);
-      if (EltTy == Type::getInt8Ty(ST->getContext())) {
-        SA.MarkEmptyStruct();
-      }
-    }
+    SA.MarkEmptyStruct();
   }
   IFTBOOL(pTupleMD->getNumOperands() == SA.GetNumFields()+1, DXC_E_INCORRECT_DXIL_METADATA);
 

+ 19 - 0
tools/clang/test/CodeGenHLSL/quick-test/empty_struct.hlsl

@@ -0,0 +1,19 @@
+// RUN: %dxc -E main -T vs_6_0 %s | FileCheck %s
+
+// Make sure nest empty struct works.
+// CHECK: main
+
+struct EmptyStruct
+{
+};
+
+struct OuterStruct
+{
+  EmptyStruct s;
+};
+
+float4 main(float4 pos : POSITION) : SV_POSITION
+{
+  OuterStruct os;
+  return float4(0, 0, 0, 0);
+}