[bugpoint] Report non-existent opt binary
authorVedant Kumar <vsk@apple.com>
Fri, 9 Feb 2018 06:09:15 +0000 (06:09 +0000)
committerVedant Kumar <vsk@apple.com>
Fri, 9 Feb 2018 06:09:15 +0000 (06:09 +0000)
Bugpoint will keep going even if the opt binary it's given doesn't
exist. It should at least alert the user, so it's clear why reductions
are failing.

llvm-svn: 324713

llvm/test/BugPoint/unsymbolized.ll
llvm/tools/bugpoint/OptimizerDriver.cpp

index 8547f22..ae47682 100644 (file)
@@ -4,6 +4,7 @@
 ; RUN: echo "exit(1)" >> %t.py
 ; RUN: not bugpoint -load %llvmshlibdir/BugpointPasses%shlibext %s -output-prefix %t -bugpoint-crashcalls -opt-command="%python" -opt-args %t.py | FileCheck %s
 ; RUN: not --crash opt -load %llvmshlibdir/BugpointPasses%shlibext %s -bugpoint-crashcalls -disable-symbolication 2>&1 | FileCheck --check-prefix=CRASH %s
+; RUN: not bugpoint -load %llvmshlibdir/BugpointPasses%shlibext %s -output-prefix %t -bugpoint-crashcalls -opt-command=%t.non.existent.opt.binary -opt-args %t.py 2>&1 | FileCheck %s --check-prefix=BAD-OPT
 
 ; Test that bugpoint disables symbolication on the opt tool to reduce runtime overhead when opt crashes
 ; CHECK: args = {{.*}}'-disable-symbolication'
@@ -15,6 +16,7 @@
 ; now.
 ; CRASH-NOT: Signals.inc
 
+; BAD-OPT: Specified `opt' binary does not exist: {{.*}}non.existent.opt.binary
 define void @f() {
   call void @f()
   ret void
index fd4b498..6fd6317 100644 (file)
@@ -177,6 +177,10 @@ bool BugDriver::runPasses(Module *Program,
     errs() << "Cannot find `opt' in PATH!\n";
     return 1;
   }
+  if (!sys::fs::exists(tool)) {
+    errs() << "Specified `opt' binary does not exist: " << tool << "\n";
+    return 1;
+  }
 
   std::string Prog;
   if (UseValgrind) {