diff options
author | Hemant Kulkarni <khemant@codeaurora.org> | 2015-11-11 20:41:43 +0000 |
---|---|---|
committer | Hemant Kulkarni <khemant@codeaurora.org> | 2015-11-11 20:41:43 +0000 |
commit | bdce12a01bcb9e2f99c2092be4a1a1777a38385d (patch) | |
tree | e4a6b60f80e72a2514732121b9ac6ee72c631bb3 /llvm/lib | |
parent | 932d88ca051787a2db9e8bcd06a09100c03980cd (diff) | |
download | bcm5719-llvm-bdce12a01bcb9e2f99c2092be4a1a1777a38385d.tar.gz bcm5719-llvm-bdce12a01bcb9e2f99c2092be4a1a1777a38385d.zip |
[Symbolizer]: Add -pretty-print option
Differential Revision: http://reviews.llvm.org/D13671
llvm-svn: 252798
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp index ad5f693d77e..c6bfbc07dcf 100644 --- a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp +++ b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp @@ -24,27 +24,35 @@ namespace symbolize { static const char kDILineInfoBadString[] = "<invalid>"; static const char kBadString[] = "??"; -DIPrinter &DIPrinter::operator<<(const DILineInfo &Info) { +void DIPrinter::printName(const DILineInfo &Info, bool Inlined) { if (PrintFunctionNames) { std::string FunctionName = Info.FunctionName; if (FunctionName == kDILineInfoBadString) FunctionName = kBadString; - OS << FunctionName << "\n"; + + StringRef Delimiter = (PrintPretty == true) ? " at " : "\n"; + StringRef Prefix = (PrintPretty && Inlined) ? " (inlined by) " : ""; + OS << Prefix << FunctionName << Delimiter; } std::string Filename = Info.FileName; if (Filename == kDILineInfoBadString) Filename = kBadString; OS << Filename << ":" << Info.Line << ":" << Info.Column << "\n"; +} + +DIPrinter &DIPrinter::operator<<(const DILineInfo &Info) { + printName(Info, false); return *this; } DIPrinter &DIPrinter::operator<<(const DIInliningInfo &Info) { uint32_t FramesNum = Info.getNumberOfFrames(); - if (FramesNum == 0) - return (*this << DILineInfo()); - for (uint32_t i = 0; i < FramesNum; i++) { - *this << Info.getFrame(i); + if (FramesNum == 0) { + printName(DILineInfo(), false); + return *this; } + for (uint32_t i = 0; i < FramesNum; i++) + printName(Info.getFrame(i), i > 0); return *this; } |