mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Revert 75571; I'm convinced this isn't the right thing to do.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75642 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -109,8 +109,6 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
if (!Reachable.insert(BB))
|
||||
continue;
|
||||
|
||||
bool AsmFound = false;
|
||||
StoreInst *UndefStore = 0;
|
||||
// Do a quick scan of the basic block, turning any obviously unreachable
|
||||
// instructions into LLVM unreachable insts. The instruction combining pass
|
||||
// canonicalizes unreachable insts into stores to null or undef.
|
||||
@@ -127,27 +125,20 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (isa<InlineAsm>(CI->getOperand(0)))
|
||||
AsmFound = true;
|
||||
}
|
||||
|
||||
if (StoreInst *SI = dyn_cast<StoreInst>(BBI)) {
|
||||
Value *Ptr = SI->getOperand(1);
|
||||
|
||||
if ((isa<UndefValue>(Ptr) ||
|
||||
(isa<ConstantPointerNull>(Ptr) &&
|
||||
cast<PointerType>(Ptr->getType())->getAddressSpace() == 0)) &&
|
||||
!UndefStore)
|
||||
UndefStore = SI;
|
||||
|
||||
if (isa<UndefValue>(Ptr) ||
|
||||
(isa<ConstantPointerNull>(Ptr) &&
|
||||
cast<PointerType>(Ptr->getType())->getAddressSpace() == 0)) {
|
||||
ChangeToUnreachable(SI, Context);
|
||||
Changed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// We can't delete asm's just because their inputs are undefined;
|
||||
// xor R, R is a common idiom for zeroing a register, for example.
|
||||
// Assume user knows what he is doing.
|
||||
if (UndefStore && !AsmFound) {
|
||||
ChangeToUnreachable(UndefStore, Context);
|
||||
Changed = true;
|
||||
}
|
||||
|
||||
// Turn invokes that call 'nounwind' functions into ordinary calls.
|
||||
if (InvokeInst *II = dyn_cast<InvokeInst>(BB->getTerminator()))
|
||||
|
Reference in New Issue
Block a user