diff options
| author | Dale Johannesen <dalej@apple.com> | 2010-04-26 20:05:01 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2010-04-26 20:05:01 +0000 |
| commit | bc41cfa78faef7206011a4e1cf7ec1ef959d2c21 (patch) | |
| tree | f4e9b792be0e0ad9c129547dc10c77655a8b19e0 /llvm/lib/Target/PowerPC | |
| parent | 954daf9aa59f1eb7458e43ba982f313cb8e45917 (diff) | |
| download | bcm5719-llvm-bc41cfa78faef7206011a4e1cf7ec1ef959d2c21.tar.gz bcm5719-llvm-bc41cfa78faef7206011a4e1cf7ec1ef959d2c21.zip | |
Add PPC AsmPrinter handling for target-specific form of
DBG_VALUE, and a cautionary comment.
llvm-svn: 102371
Diffstat (limited to 'llvm/lib/Target/PowerPC')
| -rw-r--r-- | llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp index 17446b0dcd6..f85ebae8dec 100644 --- a/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp +++ b/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp @@ -21,6 +21,7 @@ #include "PPCPredicates.h" #include "PPCTargetMachine.h" #include "PPCSubtarget.h" +#include "llvm/Analysis/DebugInfo.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" #include "llvm/Module.h" @@ -535,6 +536,23 @@ void PPCAsmPrinter::EmitInstruction(const MachineInstr *MI) { SmallString<128> Str; raw_svector_ostream O(Str); + if (MI->getOpcode() == TargetOpcode::DBG_VALUE) { + unsigned NOps = MI->getNumOperands(); + assert(NOps==4); + O << '\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())); + O << V.getName(); + O << " <- "; + // Frame address. Currently handles register +- offset only. + assert(MI->getOperand(0).isReg() && MI->getOperand(1).isImm()); + O << '['; printOperand(MI, 0, O); O << '+'; printOperand(MI, 1, O); + O << ']'; + O << "+"; + printOperand(MI, NOps-2, O); + OutStreamer.EmitRawText(O.str()); + return; + } // Check for slwi/srwi mnemonics. if (MI->getOpcode() == PPC::RLWINM) { unsigned char SH = MI->getOperand(2).getImm(); |

