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 | a07496f56ab22b54a0575bb54461db785dfc3049 (patch) | |
tree | 365a1a0eda994b61cd6998e856f67be4c90d1c79 /lib | |
parent | f805775e099a8ed0fb6f5f5dfd6c4504f7187fcf (diff) | |
download | llvm-a07496f56ab22b54a0575bb54461db785dfc3049.tar.gz |
[Symbolizer]: Add -pretty-print option
Differential Revision: http://reviews.llvm.org/D13671
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252798 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/DebugInfo/Symbolize/DIPrinter.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/DebugInfo/Symbolize/DIPrinter.cpp b/lib/DebugInfo/Symbolize/DIPrinter.cpp index ad5f693d77e..c6bfbc07dcf 100644 --- a/lib/DebugInfo/Symbolize/DIPrinter.cpp +++ b/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; } |