diff options
author | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-03-05 20:04:21 +0000 |
---|---|---|
committer | Ahmed Bougacha <ahmed.bougacha@gmail.com> | 2015-03-05 20:04:21 +0000 |
commit | 1b67630cb3fca0253da08c8793750cc47c9588d0 (patch) | |
tree | a1cdc2c2409567f9f277358aa17f0fbbaf599f38 /llvm/lib | |
parent | 03ea8642b1c980389e3972eff833d67b66c0149e (diff) | |
download | bcm5719-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.cpp | 12 |
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; + } } } |