diff options
| author | Dale Johannesen <dalej@apple.com> | 2010-04-26 20:07:31 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2010-04-26 20:07:31 +0000 |
| commit | 91358585d741ac32f8685c08ca698f049de632ff (patch) | |
| tree | fd2f080ca4fcf8b779d522ba9f37ce335c1071a6 /llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | |
| parent | e098352ed1662cc0ea3b4306518d23ffb212650d (diff) | |
| download | bcm5719-llvm-91358585d741ac32f8685c08ca698f049de632ff.tar.gz bcm5719-llvm-91358585d741ac32f8685c08ca698f049de632ff.zip | |
Handle target-specific form of DBG_VALUE in AsmPrinter.
llvm-svn: 102373
Diffstat (limited to 'llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp index 2a409aa6e54..80a9d2d714e 100644 --- a/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp @@ -21,6 +21,7 @@ #include "ARMMachineFunctionInfo.h" #include "ARMMCInstLower.h" #include "ARMTargetMachine.h" +#include "llvm/Analysis/DebugInfo.h" #include "llvm/Constants.h" #include "llvm/Module.h" #include "llvm/Type.h" @@ -1108,6 +1109,24 @@ void ARMAsmPrinter::EmitInstruction(const MachineInstr *MI) { SmallString<128> Str; raw_svector_ostream OS(Str); + if (MI->getOpcode() == ARM::DBG_VALUE) { + unsigned NOps = MI->getNumOperands(); + assert(NOps==4); + OS << '\t' << MAI->getCommentString() << "DEBUG_VALUE: "; + // cast away const; DIetc do not take const operands for some reason. + DIVariable V(const_cast<MDNode *>(MI->getOperand(NOps-1).getMetadata())); + OS << V.getName(); + OS << " <- "; + // Frame address. Currently handles register +- offset only. + assert(MI->getOperand(0).isReg() && MI->getOperand(1).isImm()); + OS << '['; printOperand(MI, 0, OS); OS << '+'; printOperand(MI, 1, OS); + OS << ']'; + OS << "+"; + printOperand(MI, NOps-2, OS); + OutStreamer.EmitRawText(OS.str()); + return; + } + printInstruction(MI, OS); OutStreamer.EmitRawText(OS.str()); |

