Browse Source

Remove use of dynamic_cast, use dyn_cast instead. (#183)

Remove use of dynamic_cast, use dyn_cast instead.
Marcelo Lopez Ruiz 8 years ago
parent
commit
a528d7bd86

+ 4 - 0
include/dxc/HLSL/DxilResource.h

@@ -60,6 +60,10 @@ public:
   bool IsRawBuffer() const;
   bool IsTBuffer() const;
 
+  static bool classof(const DxilResourceBase *R) {
+    return R->GetClass() == DXIL::ResourceClass::SRV || R->GetClass() == DXIL::ResourceClass::UAV;
+  }
+
 private:
   unsigned m_SampleCount;
   unsigned m_ElementStride; // in bytes

+ 4 - 1
include/dxc/Support/ErrorCodes.h

@@ -94,4 +94,7 @@
 #define DXC_E_CONTAINER_MISSING_DEBUG                 DXC_MAKE_HRESULT(DXC_SEVERITY_ERROR,FACILITY_DXC,(0x0015))
 
 // 0X80AA0016 - Unexpected failure in macro expansion.
-#define DXC_E_MACRO_EXPANSION_FAILURE                 DXC_MAKE_HRESULT(DXC_SEVERITY_ERROR,FACILITY_DXC,(0x0016))
+#define DXC_E_MACRO_EXPANSION_FAILURE                 DXC_MAKE_HRESULT(DXC_SEVERITY_ERROR,FACILITY_DXC,(0x0016))
+
+// 0X80AA0017 - DXIL optimization pass failed.
+#define DXC_E_OPTIMIZATION_FAILED                     DXC_MAKE_HRESULT(DXC_SEVERITY_ERROR,FACILITY_DXC,(0x0017))

+ 3 - 3
lib/HLSL/DxilGenerationPass.cpp

@@ -1923,7 +1923,7 @@ void DxilGenerationPass::TranslateDxilResourceUses(
 
     if (LoadInst *ldInst = dyn_cast<LoadInst>(user)) {
       if (UpdateCounterSet.count(ldInst)) {
-        DxilResource *resource = dynamic_cast<DxilResource*>(&res);
+        DxilResource *resource = llvm::dyn_cast<DxilResource>(&res);
         DXASSERT_NOMSG(resource);
         DXASSERT_NOMSG(resource->GetClass() == DXIL::ResourceClass::UAV);
         resource->SetHasCounter(true);
@@ -1982,7 +1982,7 @@ void DxilGenerationPass::TranslateDxilResourceUses(
         // Must be load inst.
         LoadInst *ldInst = cast<LoadInst>(*(GEPU++));
         if (UpdateCounterSet.count(ldInst)) {
-          DxilResource *resource = dynamic_cast<DxilResource *>(&res);
+          DxilResource *resource = dyn_cast<DxilResource>(&res);
           DXASSERT_NOMSG(resource);
           DXASSERT_NOMSG(resource->GetClass() == DXIL::ResourceClass::UAV);
           resource->SetHasCounter(true);
@@ -3334,4 +3334,4 @@ ModulePass *llvm::createDxilLegalizeStaticResourceUsePass() {
 
 INITIALIZE_PASS(DxilLegalizeStaticResourceUsePass,
                 "hlsl-dxil-legalize-static-resource-use",
-                "DXIL legalize static resource use", false, false)
+                "DXIL legalize static resource use", false, false)