diff options
author | Artyom Skrobov <Artyom.Skrobov@arm.com> | 2017-03-15 10:19:16 +0000 |
---|---|---|
committer | Artyom Skrobov <Artyom.Skrobov@arm.com> | 2017-03-15 10:19:16 +0000 |
commit | 3fa5fd1dd278004d4f9b9427814a916e8cafadc9 (patch) | |
tree | 2681f4adb094fa8fc0f9f66e7fc968030308a910 /llvm/lib/Target/ARM/ARMISelLowering.cpp | |
parent | c17966280709cfd7e5171f16e1de46187bcf7e2c (diff) | |
download | bcm5719-llvm-3fa5fd1dd278004d4f9b9427814a916e8cafadc9.tar.gz bcm5719-llvm-3fa5fd1dd278004d4f9b9427814a916e8cafadc9.zip |
[Thumb1] Fix the bug when adding/subtracting -2147483648
Differential Revision: https://reviews.llvm.org/D30829
llvm-svn: 297820
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index 15ae0c7940b..a13ef5820bf 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -9788,8 +9788,8 @@ static SDValue PerformAddcSubcCombine(SDNode *N, SelectionDAG &DAG, if (Subtarget->isThumb1Only()) { SDValue RHS = N->getOperand(1); if (ConstantSDNode *C = dyn_cast<ConstantSDNode>(RHS)) { - int64_t imm = C->getSExtValue(); - if (imm < 0) { + int32_t imm = C->getSExtValue(); + if (-imm > 0) { SDLoc DL(N); RHS = DAG.getConstant(-imm, DL, MVT::i32); unsigned Opcode = (N->getOpcode() == ARMISD::ADDC) ? ARMISD::SUBC @@ -9806,8 +9806,8 @@ static SDValue PerformAddeSubeCombine(SDNode *N, SelectionDAG &DAG, if (Subtarget->isThumb1Only()) { SDValue RHS = N->getOperand(1); if (ConstantSDNode *C = dyn_cast<ConstantSDNode>(RHS)) { - int64_t imm = C->getSExtValue(); - if (imm < 0) { + int32_t imm = C->getSExtValue(); + if (-imm > 0) { SDLoc DL(N); // The with-carry-in form matches bitwise not instead of the negation. |