[llvm] 0393653 - [AMDGPU] Protect against null entries in ValMap

Jeffrey Byrnes via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 22 16:51:45 PDT 2024


Author: Jeffrey Byrnes
Date: 2024-07-22T16:50:54-07:00
New Revision: 03936534b520ba28be37de7e24c59ba28d0c10d7

URL: https://github.com/llvm/llvm-project/commit/03936534b520ba28be37de7e24c59ba28d0c10d7
DIFF: https://github.com/llvm/llvm-project/commit/03936534b520ba28be37de7e24c59ba28d0c10d7.diff

LOG: [AMDGPU] Protect against null entries in ValMap

Change-Id: Icbda7c3fecf38679d06006986e5e17cb1f1b8749

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPULateCodeGenPrepare.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPULateCodeGenPrepare.cpp b/llvm/lib/Target/AMDGPU/AMDGPULateCodeGenPrepare.cpp
index fe7731b9550bf..7bf5170794cd9 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULateCodeGenPrepare.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULateCodeGenPrepare.cpp
@@ -360,7 +360,7 @@ bool LiveRegOptimizer::optimizeLiveType(
         Type *NewType = calculateConvertType(Phi->getType());
         NewPhi->addIncoming(ConstantInt::get(NewType, 0, false),
                             Phi->getIncomingBlock(I));
-      } else if (ValMap.contains(IncVal))
+      } else if (ValMap.contains(IncVal) && ValMap[IncVal])
         NewPhi->addIncoming(ValMap[IncVal], Phi->getIncomingBlock(I));
       else
         MissingIncVal = true;
@@ -370,11 +370,11 @@ bool LiveRegOptimizer::optimizeLiveType(
       // The coercion chain of the PHI is broken. Delete the Phi
       // from the ValMap and any connected / user Phis.
       SmallVector<Value *, 4> PHIWorklist;
-      SmallPtrSet<Value *, 4> Visited;
+      SmallPtrSet<Value *, 4> VisitedPhis;
       PHIWorklist.push_back(DeadVal);
       while (!PHIWorklist.empty()) {
         Value *NextDeadValue = PHIWorklist.pop_back_val();
-        Visited.insert(NextDeadValue);
+        VisitedPhis.insert(NextDeadValue);
         auto OriginalPhi =
             std::find_if(PhiNodes.begin(), PhiNodes.end(),
                          [this, &NextDeadValue](PHINode *CandPhi) {
@@ -388,7 +388,7 @@ bool LiveRegOptimizer::optimizeLiveType(
         DeadInsts.emplace_back(cast<Instruction>(NextDeadValue));
 
         for (User *U : NextDeadValue->users()) {
-          if (!Visited.contains(cast<PHINode>(U)))
+          if (!VisitedPhis.contains(cast<PHINode>(U)))
             PHIWorklist.push_back(U);
         }
       }


        


More information about the llvm-commits mailing list