Fix DSE to not nuke dead stores unless they redundant store is the same

VT as the killing one.  Fix fixes PR491


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24034 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2005-10-27 07:10:34 +00:00
parent 0e026de6ac
commit fe7f046de8

View File

@ -1976,7 +1976,10 @@ SDOperand DAGCombiner::visitSTORE(SDNode *N) {
// If this is a store that kills a previous store, remove the previous store.
if (Chain.getOpcode() == ISD::STORE && Chain.getOperand(2) == Ptr &&
Chain.Val->hasOneUse() /* Avoid introducing DAG cycles */) {
Chain.Val->hasOneUse() /* Avoid introducing DAG cycles */ &&
// Make sure that these stores are the same value type:
// FIXME: we really care that the second store is >= size of the first.
Value.getValueType() == Chain.getOperand(1).getValueType()) {
// Create a new store of Value that replaces both stores.
SDNode *PrevStore = Chain.Val;
if (PrevStore->getOperand(1) == Value) // Same value multiply stored.