From d97ece972bf5b44f2d94efcb4b49a3a55147c0b1 Mon Sep 17 00:00:00 2001
From: noword <noword.forever@gmail.com>
Date: Thu, 9 Mar 2017 10:06:29 +0800
Subject: [PATCH] fix imm value in AArch64MCCodeEmitter::getLoadLiteralOpValue
 for issue #284

---
 llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
index e4e6143..3600a27 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
@@ -288,7 +288,7 @@ AArch64MCCodeEmitter::getLoadLiteralOpValue(const MCInst &MI, unsigned OpIdx,
 
   // If the destination is an immediate, we have nothing to do.
   if (MO.isImm())
-    return MO.getImm();
+    return (MO.getImm() * 4 - MI.getAddress()) / 4;
   assert(MO.isExpr() && "Unexpected target type!");
 
   MCFixupKind Kind = MCFixupKind(AArch64::fixup_aarch64_ldr_pcrel_imm19);
-- 
GitLab