forked from OSchip/llvm-project
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:
parent
a2834fa967
commit
2d8551c85b
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue