diff options
| author | Tim Northover <tnorthover@apple.com> | 2014-04-24 12:12:10 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2014-04-24 12:12:10 +0000 |
| commit | 79ec019261e44ad5c03194aa124e4a5b1be04f7d (patch) | |
| tree | dfecc805095d966b2839f8e68f902fcc6ecc384b /llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp | |
| parent | cf16ec238e469dcc83d335fddaa25a713231a2aa (diff) | |
| download | bcm5719-llvm-79ec019261e44ad5c03194aa124e4a5b1be04f7d.tar.gz bcm5719-llvm-79ec019261e44ad5c03194aa124e4a5b1be04f7d.zip | |
AArch64/ARM64: disentangle the "B.CC" and "LDR lit" operands
These can have different relocations in ELF. In particular both:
b.eq global
ldr x0, global
are valid, giving different relocations. The only possible way to distinguish
them is via a different fixup, so the operands had to be separated throughout
the backend.
llvm-svn: 207105
Diffstat (limited to 'llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp b/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp index 097594f0340..2ada4a4cf9e 100644 --- a/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp +++ b/llvm/lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp @@ -87,9 +87,8 @@ static DecodeStatus DecodeFixedPointScaleImm32(llvm::MCInst &Inst, unsigned Imm, static DecodeStatus DecodeFixedPointScaleImm64(llvm::MCInst &Inst, unsigned Imm, uint64_t Address, const void *Decoder); -static DecodeStatus DecodeCondBranchTarget(llvm::MCInst &Inst, unsigned Imm, - uint64_t Address, - const void *Decoder); +static DecodeStatus DecodePCRelLabel19(llvm::MCInst &Inst, unsigned Imm, + uint64_t Address, const void *Decoder); static DecodeStatus DecodeMRSSystemRegister(llvm::MCInst &Inst, unsigned Imm, uint64_t Address, const void *Decoder); static DecodeStatus DecodeMSRSystemRegister(llvm::MCInst &Inst, unsigned Imm, @@ -582,8 +581,8 @@ static DecodeStatus DecodeFixedPointScaleImm64(llvm::MCInst &Inst, unsigned Imm, return Success; } -static DecodeStatus DecodeCondBranchTarget(llvm::MCInst &Inst, unsigned Imm, - uint64_t Addr, const void *Decoder) { +static DecodeStatus DecodePCRelLabel19(llvm::MCInst &Inst, unsigned Imm, + uint64_t Addr, const void *Decoder) { int64_t ImmVal = Imm; const ARM64Disassembler *Dis = static_cast<const ARM64Disassembler *>(Decoder); |

