AArch64/ARM64: disentangle the "B.CC" and "LDR lit" operands
authorTim Northover <tnorthover@apple.com>
Thu, 24 Apr 2014 12:12:10 +0000 (12:12 +0000)
committerTim Northover <tnorthover@apple.com>
Thu, 24 Apr 2014 12:12:10 +0000 (12:12 +0000)
commitd4b4f400e85470a1e8c0b90f23080f9c9c563603
treed8cf394419b6e942861dd77356aacdd6f99932d1
parent92f4b34653f303aa94a06969dcc72d74c614ea23
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207105 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
lib/Target/ARM64/ARM64InstrFormats.td
lib/Target/ARM64/AsmParser/ARM64AsmParser.cpp
lib/Target/ARM64/Disassembler/ARM64Disassembler.cpp
lib/Target/ARM64/InstPrinter/ARM64InstPrinter.cpp
lib/Target/ARM64/InstPrinter/ARM64InstPrinter.h
lib/Target/ARM64/MCTargetDesc/ARM64AsmBackend.cpp
lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
lib/Target/ARM64/MCTargetDesc/ARM64FixupKinds.h
lib/Target/ARM64/MCTargetDesc/ARM64MCCodeEmitter.cpp
lib/Target/ARM64/MCTargetDesc/ARM64MachObjectWriter.cpp
test/MC/AArch64/elf-reloc-ldrlit.s
test/MC/ARM64/branch-encoding.s
test/MC/ARM64/diags.s
test/MC/ARM64/tls-relocs.s