mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-05 10:17:37 +00:00
Implement Transforms/InstCombine/store.ll:test2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28503 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0102587f2a
commit
b4db97ffa7
@ -6833,8 +6833,22 @@ Instruction *InstCombiner::visitStoreInst(StoreInst &SI) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If this is a load, we have to stop. However, if the loaded value is from
|
||||||
|
// the pointer we're loading and is producing the pointer we're storing,
|
||||||
|
// then *this* store is dead (X = load P; store X -> P).
|
||||||
|
if (LoadInst *LI = dyn_cast<LoadInst>(BBI)) {
|
||||||
|
if (LI == Val && LI->getOperand(0) == Ptr) {
|
||||||
|
EraseInstFromFunction(SI);
|
||||||
|
++NumCombined;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
// Otherwise, this is a load from some other location. Stores before it
|
||||||
|
// may not be dead.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Don't skip over loads or things that can modify memory.
|
// Don't skip over loads or things that can modify memory.
|
||||||
if (BBI->mayWriteToMemory() || isa<LoadInst>(BBI))
|
if (BBI->mayWriteToMemory())
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user