forked from OSchip/llvm-project
[ARM] Fix typo when creating ISD::SUB nodes
In D35192, I accidentally introduced a typo when creating ISD::SUB nodes, giving them two values instead of one. This fails when the merge_values combiner finds one of these nodes. This change fixes PR34564. Differential Revision: https://reviews.llvm.org/D37690 llvm-svn: 313010
This commit is contained in:
parent
4f92b4162f
commit
9df2527b0b
|
@ -4029,7 +4029,7 @@ SDValue ARMTargetLowering::LowerUnsignedALUO(SDValue Op,
|
||||||
Overflow = ConvertCarryFlagToBooleanCarry(Value.getValue(1), VT, DAG);
|
Overflow = ConvertCarryFlagToBooleanCarry(Value.getValue(1), VT, DAG);
|
||||||
// ARMISD::SUBC returns 0 when we have to borrow, so make it an overflow
|
// ARMISD::SUBC returns 0 when we have to borrow, so make it an overflow
|
||||||
// value. So compute 1 - C.
|
// value. So compute 1 - C.
|
||||||
Overflow = DAG.getNode(ISD::SUB, dl, VTs,
|
Overflow = DAG.getNode(ISD::SUB, dl, MVT::i32,
|
||||||
DAG.getConstant(1, dl, MVT::i32), Overflow);
|
DAG.getConstant(1, dl, MVT::i32), Overflow);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -7469,8 +7469,8 @@ static SDValue LowerADDSUBCARRY(SDValue Op, SelectionDAG &DAG) {
|
||||||
} else {
|
} else {
|
||||||
// ARMISD::SUBE expects a carry not a borrow like ISD::SUBCARRY so we
|
// ARMISD::SUBE expects a carry not a borrow like ISD::SUBCARRY so we
|
||||||
// have to invert the carry first.
|
// have to invert the carry first.
|
||||||
Carry =
|
Carry = DAG.getNode(ISD::SUB, DL, MVT::i32,
|
||||||
DAG.getNode(ISD::SUB, DL, VTs, DAG.getConstant(1, DL, MVT::i32), Carry);
|
DAG.getConstant(1, DL, MVT::i32), Carry);
|
||||||
// This converts the boolean value carry into the carry flag.
|
// This converts the boolean value carry into the carry flag.
|
||||||
Carry = ConvertBooleanCarryToCarryFlag(Carry, DAG);
|
Carry = ConvertBooleanCarryToCarryFlag(Carry, DAG);
|
||||||
|
|
||||||
|
@ -7482,8 +7482,8 @@ static SDValue LowerADDSUBCARRY(SDValue Op, SelectionDAG &DAG) {
|
||||||
Carry = ConvertCarryFlagToBooleanCarry(Result.getValue(1), VT, DAG);
|
Carry = ConvertCarryFlagToBooleanCarry(Result.getValue(1), VT, DAG);
|
||||||
// But the carry returned by ARMISD::SUBE is not a borrow as expected
|
// But the carry returned by ARMISD::SUBE is not a borrow as expected
|
||||||
// by ISD::SUBCARRY, so compute 1 - C.
|
// by ISD::SUBCARRY, so compute 1 - C.
|
||||||
Carry =
|
Carry = DAG.getNode(ISD::SUB, DL, MVT::i32,
|
||||||
DAG.getNode(ISD::SUB, DL, VTs, DAG.getConstant(1, DL, MVT::i32), Carry);
|
DAG.getConstant(1, DL, MVT::i32), Carry);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return both values.
|
// Return both values.
|
||||||
|
|
Loading…
Reference in New Issue