mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Forgot about chain result; also UNDEF cannot have multiple values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36622 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
60ce9b5a01
commit
498f55989a
@ -3331,19 +3331,19 @@ SDOperand DAGCombiner::visitLOAD(SDNode *N) {
|
|||||||
// the updated indexed value in case of indexed loads), change uses of the
|
// the updated indexed value in case of indexed loads), change uses of the
|
||||||
// chain value into uses of the chain input (i.e. delete the dead load).
|
// chain value into uses of the chain input (i.e. delete the dead load).
|
||||||
if (!LD->isVolatile()) {
|
if (!LD->isVolatile()) {
|
||||||
bool HasUses = false;
|
if (N->getValueType(1) == MVT::Other) {
|
||||||
SmallVector<MVT::ValueType, 2> VTs;
|
// Unindexed loads.
|
||||||
for (unsigned i = 0, e = N->getNumValues(); i != e; ++i) {
|
if (N->hasNUsesOfValue(0, 0))
|
||||||
if (!N->hasNUsesOfValue(0, i)) {
|
return CombineTo(N, DAG.getNode(ISD::UNDEF, N->getValueType(0)), Chain);
|
||||||
HasUses = true;
|
} else {
|
||||||
break;
|
// Indexed loads.
|
||||||
|
assert(N->getValueType(2) == MVT::Other && "Malformed indexed loads?");
|
||||||
|
if (N->hasNUsesOfValue(0, 0) && N->hasNUsesOfValue(0, 1)) {
|
||||||
|
SDOperand Undef0 = DAG.getNode(ISD::UNDEF, N->getValueType(0));
|
||||||
|
SDOperand Undef1 = DAG.getNode(ISD::UNDEF, N->getValueType(1));
|
||||||
|
SDOperand To[] = { Undef0, Undef1, Chain };
|
||||||
|
return CombineTo(N, To, 3);
|
||||||
}
|
}
|
||||||
VTs.push_back(N->getValueType(i));
|
|
||||||
}
|
|
||||||
if (!HasUses) {
|
|
||||||
SmallVector<SDOperand, 1> Ops;
|
|
||||||
return CombineTo(N, DAG.getNode(ISD::UNDEF, &VTs[0], VTs.size(), 0, 0),
|
|
||||||
Chain);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user