diff options
Diffstat (limited to 'llvm/lib/Target/ARM64/MCTargetDesc/ARM64AsmBackend.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM64/MCTargetDesc/ARM64AsmBackend.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64AsmBackend.cpp b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64AsmBackend.cpp index 55ba91d7267..c9b95a2c163 100644 --- a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64AsmBackend.cpp +++ b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64AsmBackend.cpp @@ -45,9 +45,10 @@ public: { "fixup_arm64_ldst_imm12_scale4", 10, 12, 0 }, { "fixup_arm64_ldst_imm12_scale8", 10, 12, 0 }, { "fixup_arm64_ldst_imm12_scale16", 10, 12, 0 }, + { "fixup_arm64_ldr_pcrel_imm19", 5, 19, PCRelFlagVal }, { "fixup_arm64_movw", 5, 16, 0 }, { "fixup_arm64_pcrel_branch14", 5, 14, PCRelFlagVal }, - { "fixup_arm64_pcrel_imm19", 5, 19, PCRelFlagVal }, + { "fixup_arm64_pcrel_branch19", 5, 19, PCRelFlagVal }, { "fixup_arm64_pcrel_branch26", 0, 26, PCRelFlagVal }, { "fixup_arm64_pcrel_call26", 0, 26, PCRelFlagVal }, { "fixup_arm64_tlsdesc_call", 0, 0, 0 } @@ -101,7 +102,8 @@ static unsigned getFixupKindNumBytes(unsigned Kind) { case ARM64::fixup_arm64_ldst_imm12_scale4: case ARM64::fixup_arm64_ldst_imm12_scale8: case ARM64::fixup_arm64_ldst_imm12_scale16: - case ARM64::fixup_arm64_pcrel_imm19: + case ARM64::fixup_arm64_ldr_pcrel_imm19: + case ARM64::fixup_arm64_pcrel_branch19: return 3; case ARM64::fixup_arm64_pcrel_adr_imm21: @@ -133,7 +135,8 @@ static uint64_t adjustFixupValue(unsigned Kind, uint64_t Value) { return AdrImmBits(Value & 0x1fffffULL); case ARM64::fixup_arm64_pcrel_adrp_imm21: return AdrImmBits((Value & 0x1fffff000ULL) >> 12); - case ARM64::fixup_arm64_pcrel_imm19: + case ARM64::fixup_arm64_ldr_pcrel_imm19: + case ARM64::fixup_arm64_pcrel_branch19: // Signed 21-bit immediate if (SignedValue > 2097151 || SignedValue < -2097152) report_fatal_error("fixup value out of range"); |

