diff options
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp | 14 | ||||
-rw-r--r-- | llvm/tools/sancov/sancov.cc | 6 | ||||
-rw-r--r-- | llvm/tools/sanstats/sanstats.cpp | 6 |
3 files changed, 17 insertions, 9 deletions
diff --git a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp index 950349377bf..4a3a7b3d2f3 100644 --- a/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ b/llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -86,10 +86,12 @@ static cl::opt<int> ClPrintSourceContextLines( "print-source-context-lines", cl::init(0), cl::desc("Print N number of source file context")); -static bool error(std::error_code ec) { - if (!ec) +template<typename T> +static bool error(Expected<T> &ResOrErr) { + if (ResOrErr) return false; - errs() << "LLVMSymbolizer: error reading file: " << ec.message() << ".\n"; + logAllUnhandledErrors(ResOrErr.takeError(), errs(), + "LLVMSymbolizer: error reading file: "); return true; } @@ -185,14 +187,14 @@ int main(int argc, char **argv) { } if (IsData) { auto ResOrErr = Symbolizer.symbolizeData(ModuleName, ModuleOffset); - Printer << (error(ResOrErr.getError()) ? DIGlobal() : ResOrErr.get()); + Printer << (error(ResOrErr) ? DIGlobal() : ResOrErr.get()); } else if (ClPrintInlining) { auto ResOrErr = Symbolizer.symbolizeInlinedCode(ModuleName, ModuleOffset); - Printer << (error(ResOrErr.getError()) ? DIInliningInfo() + Printer << (error(ResOrErr) ? DIInliningInfo() : ResOrErr.get()); } else { auto ResOrErr = Symbolizer.symbolizeCode(ModuleName, ModuleOffset); - Printer << (error(ResOrErr.getError()) ? DILineInfo() : ResOrErr.get()); + Printer << (error(ResOrErr) ? DILineInfo() : ResOrErr.get()); } outs() << "\n"; outs().flush(); diff --git a/llvm/tools/sancov/sancov.cc b/llvm/tools/sancov/sancov.cc index efeb46a1faa..e4e83b0bbc8 100644 --- a/llvm/tools/sancov/sancov.cc +++ b/llvm/tools/sancov/sancov.cc @@ -135,6 +135,12 @@ template <typename T> static void FailIfError(const ErrorOr<T> &E) { FailIfError(E.getError()); } +template <typename T> static void FailIfError(Expected<T> &E) { + if (E) + return; + logAllUnhandledErrors(E.takeError(), errs(), "Error: "); +} + static void FailIfNotEmpty(const llvm::Twine &E) { if (E.str().empty()) return; diff --git a/llvm/tools/sanstats/sanstats.cpp b/llvm/tools/sanstats/sanstats.cpp index 3a8cc9aea8c..b2216eab119 100644 --- a/llvm/tools/sanstats/sanstats.cpp +++ b/llvm/tools/sanstats/sanstats.cpp @@ -76,12 +76,12 @@ const char *ReadModule(char SizeofPtr, const char *Begin, const char *End) { if (Begin == End) return nullptr; - ErrorOr<DILineInfo> LineInfo = Symbolizer.symbolizeCode(Filename, Addr); - if (LineInfo) { + if (Expected<DILineInfo> LineInfo = + Symbolizer.symbolizeCode(Filename, Addr)) { llvm::outs() << LineInfo->FileName << ':' << LineInfo->Line << ' ' << LineInfo->FunctionName << ' '; } else { - llvm::outs() << "<error> "; + logAllUnhandledErrors(LineInfo.takeError(), llvm::outs(), "<error> "); } switch (KindFromData(Data, SizeofPtr)) { |