mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-26 20:57:15 +00:00
factor some code better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90299 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
65a9ab4f8f
commit
720e790480
@ -1187,6 +1187,13 @@ static Value *ConstructSSAForLoadSet(LoadInst *LI,
|
||||
return V;
|
||||
}
|
||||
|
||||
static bool isLifetimeStartOrEnd(Instruction *Inst) {
|
||||
if (IntrinsicInst* II = dyn_cast<IntrinsicInst>(Inst))
|
||||
return II->getIntrinsicID() == Intrinsic::lifetime_start ||
|
||||
II->getIntrinsicID() == Intrinsic::lifetime_end;
|
||||
return false;
|
||||
}
|
||||
|
||||
/// processNonLocalLoad - Attempt to eliminate a load whose dependencies are
|
||||
/// non-local by performing PHI construction.
|
||||
bool GVN::processNonLocalLoad(LoadInst *LI,
|
||||
@ -1254,21 +1261,14 @@ bool GVN::processNonLocalLoad(LoadInst *LI,
|
||||
Instruction *DepInst = DepInfo.getInst();
|
||||
|
||||
// Loading the allocation -> undef.
|
||||
if (isa<AllocaInst>(DepInst) || isMalloc(DepInst)) {
|
||||
if (isa<AllocaInst>(DepInst) || isMalloc(DepInst) ||
|
||||
// Loading immediately after lifetime begin or end -> undef.
|
||||
isLifetimeStartOrEnd(DepInst)) {
|
||||
ValuesPerBlock.push_back(AvailableValueInBlock::get(DepBB,
|
||||
UndefValue::get(LI->getType())));
|
||||
continue;
|
||||
}
|
||||
|
||||
// Loading immediately after lifetime begin or end -> undef.
|
||||
if (IntrinsicInst* II = dyn_cast<IntrinsicInst>(DepInst)) {
|
||||
if (II->getIntrinsicID() == Intrinsic::lifetime_start ||
|
||||
II->getIntrinsicID() == Intrinsic::lifetime_end) {
|
||||
ValuesPerBlock.push_back(AvailableValueInBlock::get(DepBB,
|
||||
UndefValue::get(LI->getType())));
|
||||
}
|
||||
}
|
||||
|
||||
if (StoreInst *S = dyn_cast<StoreInst>(DepInst)) {
|
||||
// Reject loads and stores that are to the same address but are of
|
||||
// different types if we have to.
|
||||
|
Loading…
x
Reference in New Issue
Block a user