diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-10-01 21:55:55 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-10-01 21:55:55 +0000 |
| commit | 912870573c5f55b3f6dc4494a608e3ee9c2f730d (patch) | |
| tree | 50ca6982e08a99c302d427cd01305a51fa1063a5 /llvm/lib/Target | |
| parent | f7133b797749c4edd91d4ddd8a7a64e319650fad (diff) | |
| download | bcm5719-llvm-912870573c5f55b3f6dc4494a608e3ee9c2f730d.tar.gz bcm5719-llvm-912870573c5f55b3f6dc4494a608e3ee9c2f730d.zip | |
[X86] convertToThreeAddress, make sure second operand of SUB32ri is really an immediate before calling getImm().
It might be a symbol instead. We can't fold those since we can't
negate them.
Similar for other SUB with immediates.
Fixes PR43529.
llvm-svn: 373397
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp index 7fba03c6425..3c68ac2291f 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -1122,6 +1122,8 @@ X86InstrInfo::convertToThreeAddress(MachineFunction::iterator &MFI, return nullptr; case X86::SUB32ri8: case X86::SUB32ri: { + if (!MI.getOperand(2).isImm()) + return nullptr; int64_t Imm = MI.getOperand(2).getImm(); if (!isInt<32>(-Imm)) return nullptr; @@ -1148,6 +1150,8 @@ X86InstrInfo::convertToThreeAddress(MachineFunction::iterator &MFI, case X86::SUB64ri8: case X86::SUB64ri32: { + if (!MI.getOperand(2).isImm()) + return nullptr; int64_t Imm = MI.getOperand(2).getImm(); if (!isInt<32>(-Imm)) return nullptr; |

