]> granicus.if.org Git - llvm/commitdiff
bugpoint: add flag -verbose-errors
authorSebastian Pop <sebpop@gmail.com>
Fri, 15 Jul 2016 23:15:06 +0000 (23:15 +0000)
committerSebastian Pop <sebpop@gmail.com>
Fri, 15 Jul 2016 23:15:06 +0000 (23:15 +0000)
The default behavior of bugpoint is to print "<crash>" when it finds a reduced
test that crashes compilation.  With this flag we now can see the output of the
crashing program.  This is useful to make sure it is the same error being
tracked down and not a different error that happens to crash the compiler as
well.

Differential Revision: https://reviews.llvm.org/D22411

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275646 91177308-0d34-0410-b5e6-96231b3b80d8

docs/CommandGuide/bugpoint.rst
tools/bugpoint/CrashDebugger.cpp

index 2e6341de719f73f37dd7621ed686659416d16707..8c2a0d124981b404f20a126ba191b959fe477f34 100644 (file)
@@ -176,6 +176,14 @@ OPTIONS
  **--safe-{int,jit,llc,custom}**
  option.
 
+**--verbose-errors**\ =\ *{true,false}*
+
+ The default behavior of bugpoint is to print "<crash>" when it finds a reduced
+ test that crashes compilation. This flag prints the output of the crashing
+ program to stderr. This is useful to make sure it is the same error being
+ tracked down and not a different error that happens to crash the compiler as
+ well. Defaults to false.
+
 EXIT STATUS
 -----------
 
index 07fe0d7acbdeb3a740661842cc3465a0ed27abfe..b25e6ecec19b68197d90b776900c8d2dd3cce4dc 100644 (file)
@@ -54,6 +54,9 @@ namespace {
   cl::opt<bool> NoNamedMDRM("disable-namedmd-remove",
                             cl::desc("Do not remove global named metadata"),
                             cl::init(false));
+  cl::opt<bool> VerboseErrors("verbose-errors",
+                            cl::desc("Print the output of crashing program"),
+                            cl::init(false));
 }
 
 namespace llvm {
@@ -905,7 +908,10 @@ static bool TestForCodeGenCrash(const BugDriver &BD, Module *M) {
   std::string Error;
   BD.compileProgram(M, &Error);
   if (!Error.empty()) {
-    errs() << "<crash>\n";
+    if (VerboseErrors)
+      errs() << Error << "\n";
+    else
+      errs() << "<crash>\n";
     return true;  // Tool is still crashing.
   }
   errs() << '\n';