Delete dead loads in the dag. This allows us to compile

vector.ll:test_extract_elt2 into:

_test_extract_elt2:
        lfd f1, 32(r3)
        blr

instead of:

_test_extract_elt2:
        lfd f0, 56(r3)
        lfd f0, 48(r3)
        lfd f0, 40(r3)
        lfd f1, 32(r3)
        lfd f0, 24(r3)
        lfd f0, 16(r3)
        lfd f0, 8(r3)
        lfd f0, 0(r3)
        blr

llvm-svn: 27296
This commit is contained in:
Chris Lattner 2006-03-31 18:06:18 +00:00
parent a2834fa967
commit 2d8551c85b
1 changed files with 5 additions and 0 deletions

View File

@ -2261,6 +2261,11 @@ SDOperand DAGCombiner::visitLOAD(SDNode *N) {
SDOperand Chain = N->getOperand(0); SDOperand Chain = N->getOperand(0);
SDOperand Ptr = N->getOperand(1); SDOperand Ptr = N->getOperand(1);
SDOperand SrcValue = N->getOperand(2); SDOperand SrcValue = N->getOperand(2);
// If there are no uses of the loaded value, change uses of the chain value
// into uses of the chain input (i.e. delete the dead load).
if (N->hasNUsesOfValue(0, 0))
return CombineTo(N, DAG.getNode(ISD::UNDEF, N->getValueType(0)), Chain);
// If this load is directly stored, replace the load value with the stored // If this load is directly stored, replace the load value with the stored
// value. // value.