@@ -360,7 +360,7 @@ bool LiveRegOptimizer::optimizeLiveType(
360
360
Type *NewType = calculateConvertType (Phi->getType ());
361
361
NewPhi->addIncoming (ConstantInt::get (NewType, 0 , false ),
362
362
Phi->getIncomingBlock (I));
363
- } else if (ValMap.contains (IncVal))
363
+ } else if (ValMap.contains (IncVal) && ValMap[IncVal] )
364
364
NewPhi->addIncoming (ValMap[IncVal], Phi->getIncomingBlock (I));
365
365
else
366
366
MissingIncVal = true ;
@@ -370,11 +370,11 @@ bool LiveRegOptimizer::optimizeLiveType(
370
370
// The coercion chain of the PHI is broken. Delete the Phi
371
371
// from the ValMap and any connected / user Phis.
372
372
SmallVector<Value *, 4 > PHIWorklist;
373
- SmallPtrSet<Value *, 4 > Visited ;
373
+ SmallPtrSet<Value *, 4 > VisitedPhis ;
374
374
PHIWorklist.push_back (DeadVal);
375
375
while (!PHIWorklist.empty ()) {
376
376
Value *NextDeadValue = PHIWorklist.pop_back_val ();
377
- Visited .insert (NextDeadValue);
377
+ VisitedPhis .insert (NextDeadValue);
378
378
auto OriginalPhi =
379
379
std::find_if (PhiNodes.begin (), PhiNodes.end (),
380
380
[this , &NextDeadValue](PHINode *CandPhi) {
@@ -388,7 +388,7 @@ bool LiveRegOptimizer::optimizeLiveType(
388
388
DeadInsts.emplace_back (cast<Instruction>(NextDeadValue));
389
389
390
390
for (User *U : NextDeadValue->users ()) {
391
- if (!Visited .contains (cast<PHINode>(U)))
391
+ if (!VisitedPhis .contains (cast<PHINode>(U)))
392
392
PHIWorklist.push_back (U);
393
393
}
394
394
}
0 commit comments