aboutsummaryrefslogtreecommitdiff
path: root/lib/Target
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2012-01-19 01:50:30 +0000
committerJim Grosbach <grosbach@apple.com>2012-01-19 01:50:30 +0000
commitd26bad079d6977309699e0bc9203451904acbd86 (patch)
tree3614e16097ff8448dda13bb8a0a8545498e2b690 /lib/Target
parent904b7be27ef12bf3c31a37e97710bd167fe37fda (diff)
Add comment and fix range check in condition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148455 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
index adedc208d0..2a8f7c6dc4 100644
--- a/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
+++ b/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
@@ -180,8 +180,10 @@ bool ARMAsmBackend::fixupNeedsRelaxation(const MCFixup &Fixup,
return Offset > 254 || Offset < -256;
}
case ARM::fixup_arm_thumb_cp: {
+ // If the immediate is negative, greater than 1020, or not a multiple
+ // of four, the wide version of the instruction must be used.
int64_t Offset = int64_t(Value) - 4;
- return Offset > 4095 || Offset < 0;
+ return Offset > 1020 || Offset < 0 || Offset & 3;
}
}
llvm_unreachable("Invalid switch/cash!?");