From 58916b5e2c367ae7cd1d6e2b5235656cfcfb28a5 Mon Sep 17 00:00:00 2001 From: noword <noword.forever@gmail.com> Date: Sat, 4 Mar 2017 10:28:45 +0800 Subject: [PATCH] ARM64(llvm): Disable range checking on instructions with a PC-relative offset (b/bl/cbz/cbnz/tbz/tbnz/ldr/ldrsw/prfm) --- .../Target/AArch64/AsmParser/AArch64AsmParser.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp index f96b913..7dbc71b 100644 --- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp +++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp @@ -768,9 +768,7 @@ public: if (!MCE) return true; int64_t Val = MCE->getValue(); - if (Val & 0x3) - return false; - return (Val >= -(0x2000000 << 2) && Val <= (0x1ffffff << 2)); + return ((Val & 0x3) == 0); } bool isPCRelLabel19() const { if (!isImm()) @@ -779,9 +777,7 @@ public: if (!MCE) return true; int64_t Val = MCE->getValue(); - if (Val & 0x3) - return false; - return (Val >= -(0x40000 << 2) && Val <= (0x3ffff << 2)); + return ((Val & 0x3) == 0); } bool isBranchTarget14() const { if (!isImm()) @@ -790,9 +786,7 @@ public: if (!MCE) return true; int64_t Val = MCE->getValue(); - if (Val & 0x3) - return false; - return (Val >= -(0x2000 << 2) && Val <= (0x1fff << 2)); + return ((Val & 0x3) == 0); } bool -- GitLab