[llvm] a23d1e9 - [llvm-objdump] Simplify reportError() and prepend outs().flush()

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat May 30 17:26:12 PDT 2020


Author: Fangrui Song
Date: 2020-05-30T17:25:59-07:00
New Revision: a23d1e9aff4d8cb752e227b3e16f887cf49c15d4

URL: https://github.com/llvm/llvm-project/commit/a23d1e9aff4d8cb752e227b3e16f887cf49c15d4
DIFF: https://github.com/llvm/llvm-project/commit/a23d1e9aff4d8cb752e227b3e16f887cf49c15d4.diff

LOG: [llvm-objdump] Simplify reportError() and prepend outs().flush()

As noticed by dblaikie.

I don't know what code paths using reportError can cause stdout output
to be interleaved with stderr, so no test is added now.

Also drop an unneeded use of errs().fflush() in reportWarning().
I requested this in D64165.

Added: 
    

Modified: 
    llvm/tools/llvm-objdump/llvm-objdump.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 6eebf98744aa..d62839a8686c 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -420,10 +420,10 @@ void reportWarning(Twine Message, StringRef File) {
   outs().flush();
   WithColor::warning(errs(), ToolName)
       << "'" << File << "': " << Message << "\n";
-  errs().flush();
 }
 
 LLVM_ATTRIBUTE_NORETURN void reportError(StringRef File, Twine Message) {
+  outs().flush();
   WithColor::error(errs(), ToolName) << "'" << File << "': " << Message << "\n";
   exit(1);
 }
@@ -432,6 +432,7 @@ LLVM_ATTRIBUTE_NORETURN void reportError(Error E, StringRef FileName,
                                          StringRef ArchiveName,
                                          StringRef ArchitectureName) {
   assert(E);
+  outs().flush();
   WithColor::error(errs(), ToolName);
   if (ArchiveName != "")
     errs() << ArchiveName << "(" << FileName << ")";
@@ -439,11 +440,8 @@ LLVM_ATTRIBUTE_NORETURN void reportError(Error E, StringRef FileName,
     errs() << "'" << FileName << "'";
   if (!ArchitectureName.empty())
     errs() << " (for architecture " << ArchitectureName << ")";
-  std::string Buf;
-  raw_string_ostream OS(Buf);
-  logAllUnhandledErrors(std::move(E), OS);
-  OS.flush();
-  errs() << ": " << Buf;
+  errs() << ": ";
+  logAllUnhandledErrors(std::move(E), errs());
   exit(1);
 }
 


        


More information about the llvm-commits mailing list