aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2011-08-11 18:41:59 +0000
committerOwen Anderson <resistor@mac.com>2011-08-11 18:41:59 +0000
commit3dac0bec7e7874ffb378385b6160bd2117184ca9 (patch)
treebcf3c9b06159f41b2f52f2b20d688f7b2aec3fb0 /lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
parent0fa5e053a914cbbea7c66f13da190d96f8fe2a2c (diff)
downloadexternal_llvm-3dac0bec7e7874ffb378385b6160bd2117184ca9.zip
external_llvm-3dac0bec7e7874ffb378385b6160bd2117184ca9.tar.gz
external_llvm-3dac0bec7e7874ffb378385b6160bd2117184ca9.tar.bz2
Correct immediate range for shifter operands. Patch by James Molloy, with additional encoding fixes added by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137322 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp')
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp b/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
index e047fb8..ee720d7 100644
--- a/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
+++ b/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
@@ -1032,7 +1032,10 @@ getSORegImmOpValue(const MCInst &MI, unsigned OpIdx,
// Encode shift_imm bit[11:7].
Binary |= SBits << 4;
- return Binary | ARM_AM::getSORegOffset(MO1.getImm()) << 7;
+ unsigned Offset = ARM_AM::getSORegOffset(MO1.getImm());
+ assert(Offset && "Offset must be in range 1-32!");
+ if (Offset == 32) Offset = 0;
+ return Binary | (Offset << 7);
}