mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Thumb2 load/store fixups don't set the thumb bit.
Load/store instructions w/ a fixup to be relative a function marked as thumb don't use the low bit to specify thumb vs. non-thumb like interworking branches do, so don't set it when dealing with those fixups. rdar://10348687. llvm-svn: 148366
This commit is contained in:
parent
700e5901a7
commit
b3bef2861c
@ -109,10 +109,14 @@ public:
|
||||
MCValue &Target, uint64_t &Value) {
|
||||
// Some fixups to thumb function symbols need the low bit (thumb bit)
|
||||
// twiddled.
|
||||
if (const MCSymbolRefExpr *A = Target.getSymA()) {
|
||||
const MCSymbol &Sym = A->getSymbol().AliasedSymbol();
|
||||
if (Asm.isThumbFunc(&Sym))
|
||||
Value |= 1;
|
||||
if ((unsigned)Fixup.getKind() != ARM::fixup_arm_ldst_pcrel_12 &&
|
||||
(unsigned)Fixup.getKind() != ARM::fixup_t2_ldst_pcrel_12 &&
|
||||
(unsigned)Fixup.getKind() != ARM::fixup_arm_thumb_cp) {
|
||||
if (const MCSymbolRefExpr *A = Target.getSymA()) {
|
||||
const MCSymbol &Sym = A->getSymbol().AliasedSymbol();
|
||||
if (Asm.isThumbFunc(&Sym))
|
||||
Value |= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user