mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-08 09:03:18 +00:00
This reverts commit r203762, "ARM: support emission of complex SO expressions".
The commit r203762 introduced silent failure for complext SO expression, and it's even worse than compiler crash. llvm-svn: 204427
This commit is contained in:
parent
531a5be4d0
commit
db55b02e1c
@ -271,20 +271,8 @@ public:
|
||||
unsigned getSOImmOpValue(const MCInst &MI, unsigned Op,
|
||||
SmallVectorImpl<MCFixup> &Fixups,
|
||||
const MCSubtargetInfo &STI) const {
|
||||
int SoImmVal = -1;
|
||||
|
||||
const MCOperand &MO = MI.getOperand(Op);
|
||||
if (MO.isImm()) {
|
||||
SoImmVal = ARM_AM::getSOImmVal(MO.getImm());
|
||||
} else if (MO.isExpr()) {
|
||||
int64_t Value;
|
||||
bool Invalid = MO.getExpr()->EvaluateAsAbsolute(Value);
|
||||
(void) Invalid;
|
||||
assert(!Invalid && "non-constant expression is not a valid SOImm operand");
|
||||
assert((Value >= INT32_MIN && Value <= INT32_MAX) &&
|
||||
"expression must be representable in 32 bits");
|
||||
SoImmVal = Value;
|
||||
}
|
||||
unsigned SoImm = MI.getOperand(Op).getImm();
|
||||
int SoImmVal = ARM_AM::getSOImmVal(SoImm);
|
||||
assert(SoImmVal != -1 && "Not a valid so_imm value!");
|
||||
|
||||
// Encode rotate_imm.
|
||||
|
@ -1,9 +0,0 @@
|
||||
@ RUN: llvm-mc -triple armv7-elf -filetype obj -o - %s \
|
||||
@ RUN: | llvm-objdump -disassemble -no-show-raw-insn - | FileCheck %s
|
||||
|
||||
cmp r0, #(.L2 - .L1)
|
||||
.L1:
|
||||
.L2:
|
||||
|
||||
@ CHECK: 0: cmp r0, #0
|
||||
|
Loading…
Reference in New Issue
Block a user