mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 02:24:22 +00:00
fold PHI nodes in SizeOffsetEvaluator whenever possible.
Unfortunately this change requires the cache map to hold WeakVHs instead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159667 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -682,7 +682,19 @@ SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitPHINode(PHINode &PHI) {
|
||||
SizePHI->addIncoming(EdgeData.first, PHI.getIncomingBlock(i));
|
||||
OffsetPHI->addIncoming(EdgeData.second, PHI.getIncomingBlock(i));
|
||||
}
|
||||
return std::make_pair(SizePHI, OffsetPHI);
|
||||
|
||||
Value *Size = SizePHI, *Offset = OffsetPHI, *Tmp;
|
||||
if ((Tmp = SizePHI->hasConstantValue())) {
|
||||
Size = Tmp;
|
||||
SizePHI->replaceAllUsesWith(Size);
|
||||
SizePHI->eraseFromParent();
|
||||
}
|
||||
if ((Tmp = OffsetPHI->hasConstantValue())) {
|
||||
Offset = Tmp;
|
||||
OffsetPHI->replaceAllUsesWith(Offset);
|
||||
OffsetPHI->eraseFromParent();
|
||||
}
|
||||
return std::make_pair(Size, Offset);
|
||||
}
|
||||
|
||||
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitSelectInst(SelectInst &I) {
|
||||
|
Reference in New Issue
Block a user