Procházet zdrojové kódy

Merged PR 40: Skip unused resources in FindUsingFunction fixing AV

Skip unused resources in FindUsingFunction fixing AV
Tex Riddell před 7 roky
rodič
revize
bb2009ac39
1 změnil soubory, kde provedl 6 přidání a 1 odebrání
  1. 6 1
      lib/HLSL/DxilContainerAssembler.cpp

+ 6 - 1
lib/HLSL/DxilContainerAssembler.cpp

@@ -821,7 +821,10 @@ private:
     // User can be either instruction, constant, or operator. But User is an
     // operator only if constant is a scalar value, not resource pointer.
     llvm::Constant *CU = cast<llvm::Constant>(User);
-    return FindUsingFunction(*CU->user_begin());
+    if (!CU->user_empty())
+      return FindUsingFunction(*CU->user_begin());
+    else
+      return nullptr;
   }
 
   void UpdateFunctionToResourceInfo(const DxilResourceBase *resource,
@@ -831,6 +834,8 @@ private:
       for (auto user : var->users()) {
         // Find the function.
         llvm::Function *F = FindUsingFunction(user);
+        if (!F)
+          continue;
         if (m_FuncToResNameOffset.find(F) != m_FuncToResNameOffset.end()) {
           m_FuncToResNameOffset[F].emplace_back(offset);
         }