summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAhmed Bougacha <ahmed.bougacha@gmail.com>2015-03-05 20:04:21 +0000
committerAhmed Bougacha <ahmed.bougacha@gmail.com>2015-03-05 20:04:21 +0000
commit1b67630cb3fca0253da08c8793750cc47c9588d0 (patch)
treea1cdc2c2409567f9f277358aa17f0fbbaf599f38 /llvm/lib
parent03ea8642b1c980389e3972eff833d67b66c0149e (diff)
downloadbcm5719-llvm-1b67630cb3fca0253da08c8793750cc47c9588d0.tar.gz
bcm5719-llvm-1b67630cb3fca0253da08c8793750cc47c9588d0.zip
[AArch64] Teach AsmPrinter about GlobalAddress operands.
Fixes PR22761, rdar://20024866. Differential Revision: http://reviews.llvm.org/D8042 llvm-svn: 231400
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
index 5367f90f7c1..f8ebd66676b 100644
--- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
@@ -36,6 +36,7 @@
#include "llvm/MC/MCInstBuilder.h"
#include "llvm/MC/MCLinkerOptimizationHint.h"
#include "llvm/MC/MCStreamer.h"
+#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/TargetRegistry.h"
using namespace llvm;
@@ -221,6 +222,17 @@ void AArch64AsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNum,
O << '#' << Imm;
break;
}
+ case MachineOperand::MO_GlobalAddress: {
+ const GlobalValue *GV = MO.getGlobal();
+ MCSymbol *Sym = getSymbol(GV);
+
+ // FIXME: Can we get anything other than a plain symbol here?
+ assert(!MO.getTargetFlags() && "Unknown operand target flag!");
+
+ O << *Sym;
+ printOffset(MO.getOffset(), O);
+ break;
+ }
}
}
OpenPOWER on IntegriCloud