Переглянути джерело

PIX: Null check before dyn_cast (#3654) (#3660)

dbg.value can occasionally return a null value. (Hit this in a customer (343) shader via PIX.) This is expected. From IntrinsicInst.cpp:

  // When the value goes to null, it gets replaced by an empty MDNode.

Co-authored-by: Jeff Noyle <[email protected]>
Jeff Noyle 4 роки тому
батько
коміт
1e84ea8226
1 змінених файлів з 5 додано та 3 видалено
  1. 5 3
      lib/DxilPIXPasses/PixPassHelpers.cpp

+ 5 - 3
lib/DxilPIXPasses/PixPassHelpers.cpp

@@ -24,9 +24,11 @@ using namespace hlsl;
 
 namespace PIXPassHelpers {
 bool IsAllocateRayQueryInstruction(llvm::Value *Val) {
-  if (llvm::Instruction *Inst = llvm::dyn_cast<llvm::Instruction>(Val)) {
-    return hlsl::OP::IsDxilOpFuncCallInst(Inst,
-                                          hlsl::OP::OpCode::AllocateRayQuery);
+  if (Val != nullptr) {
+    if (llvm::Instruction *Inst = llvm::dyn_cast<llvm::Instruction>(Val)) {
+      return hlsl::OP::IsDxilOpFuncCallInst(Inst,
+                                            hlsl::OP::OpCode::AllocateRayQuery);
+    }
   }
   return false;
 }