summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2010-12-09 00:27:41 +0000
committerOwen Anderson <resistor@mac.com>2010-12-09 00:27:41 +0000
commit302d5fd0d870d9fc45816cc03d63d7fc75d06bf5 (patch)
tree295a099729b747a7025cfbee6625b72d32b37ca4 /llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp
parentc2dc95ae00e0972d673a1ed220a20038571259e4 (diff)
downloadbcm5719-llvm-302d5fd0d870d9fc45816cc03d63d7fc75d06bf5.tar.gz
bcm5719-llvm-302d5fd0d870d9fc45816cc03d63d7fc75d06bf5.zip
Fix Thumb2 BCC encoding and fixups.
llvm-svn: 121329
Diffstat (limited to 'llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp b/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp
index ef9fac436c7..ebcab8b8d33 100644
--- a/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp
+++ b/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp
@@ -51,6 +51,7 @@ public:
{ "fixup_t2_pcrel_10", 0, 32, MCFixupKindInfo::FKF_IsPCRel },
{ "fixup_arm_adr_pcrel_12", 1, 24, MCFixupKindInfo::FKF_IsPCRel },
{ "fixup_arm_branch", 1, 24, MCFixupKindInfo::FKF_IsPCRel },
+ { "fixup_t2_branch", 0, 32, MCFixupKindInfo::FKF_IsPCRel },
{ "fixup_arm_thumb_bl", 0, 32, MCFixupKindInfo::FKF_IsPCRel },
{ "fixup_arm_thumb_br", 0, 16, MCFixupKindInfo::FKF_IsPCRel },
{ "fixup_arm_thumb_cp", 1, 8, MCFixupKindInfo::FKF_IsPCRel },
@@ -454,6 +455,9 @@ getThumbBRTargetOpValue(const MCInst &MI, unsigned OpIdx,
uint32_t ARMMCCodeEmitter::
getBranchTargetOpValue(const MCInst &MI, unsigned OpIdx,
SmallVectorImpl<MCFixup> &Fixups) const {
+ const ARMSubtarget &Subtarget = TM.getSubtarget<ARMSubtarget>();
+ if (Subtarget.isThumb2())
+ return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_t2_branch, Fixups);
return ::getBranchTargetOpValue(MI, OpIdx, ARM::fixup_arm_branch, Fixups);
}
OpenPOWER on IntegriCloud