[llvm-commits] [llvm] r110333 - in /llvm/trunk/tools/bugpoint: BugDriver.cpp BugDriver.h OptimizerDriver.cpp bugpoint.cpp
Bob Wilson
bob.wilson at apple.com
Thu Aug 5 09:27:01 PDT 2010
This broke a bunch of buildbots. I've reverted it for now.
On Aug 5, 2010, at 8:25 AM, Rafael Espindola wrote:
> Author: rafael
> Date: Thu Aug 5 10:25:38 2010
> New Revision: 110333
>
> URL: http://llvm.org/viewvc/llvm-project?rev=110333&view=rev
> Log:
> Run opt instead of bugpoint itself.
>
> Fixes PR753.
>
> Modified:
> llvm/trunk/tools/bugpoint/BugDriver.cpp
> llvm/trunk/tools/bugpoint/BugDriver.h
> llvm/trunk/tools/bugpoint/OptimizerDriver.cpp
> llvm/trunk/tools/bugpoint/bugpoint.cpp
>
> Modified: llvm/trunk/tools/bugpoint/BugDriver.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/BugDriver.cpp?rev=110333&r1=110332&r2=110333&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/BugDriver.cpp (original)
> +++ llvm/trunk/tools/bugpoint/BugDriver.cpp Thu Aug 5 10:25:38 2010
> @@ -66,12 +66,12 @@
> return Result;
> }
>
> -BugDriver::BugDriver(const char *toolname, bool as_child, bool find_bugs,
> +BugDriver::BugDriver(const char *toolname, bool find_bugs,
> unsigned timeout, unsigned memlimit, bool use_valgrind,
> LLVMContext& ctxt)
> : Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile),
> Program(0), Interpreter(0), SafeInterpreter(0), gcc(0),
> - run_as_child(as_child), run_find_bugs(find_bugs), Timeout(timeout),
> + run_find_bugs(find_bugs), Timeout(timeout),
> MemoryLimit(memlimit), UseValgrind(use_valgrind) {}
>
> BugDriver::~BugDriver() {
> @@ -119,15 +119,13 @@
> Program = ParseInputFile(Filenames[0], Context);
> if (Program == 0) return true;
>
> - if (!run_as_child)
> - outs() << "Read input file : '" << Filenames[0] << "'\n";
> + outs() << "Read input file : '" << Filenames[0] << "'\n";
>
> for (unsigned i = 1, e = Filenames.size(); i != e; ++i) {
> std::auto_ptr<Module> M(ParseInputFile(Filenames[i], Context));
> if (M.get() == 0) return true;
>
> - if (!run_as_child)
> - outs() << "Linking in input file: '" << Filenames[i] << "'\n";
> + outs() << "Linking in input file: '" << Filenames[i] << "'\n";
> std::string ErrorMessage;
> if (Linker::LinkModules(Program, M.get(), &ErrorMessage)) {
> errs() << ToolName << ": error linking in '" << Filenames[i] << "': "
> @@ -136,8 +134,7 @@
> }
> }
>
> - if (!run_as_child)
> - outs() << "*** All input ok\n";
> + outs() << "*** All input ok\n";
>
> // All input files read successfully!
> return false;
> @@ -149,14 +146,6 @@
> /// variables are set up from command line arguments.
> ///
> bool BugDriver::run(std::string &ErrMsg) {
> - // The first thing to do is determine if we're running as a child. If we are,
> - // then what to do is very narrow. This form of invocation is only called
> - // from the runPasses method to actually run those passes in a child process.
> - if (run_as_child) {
> - // Execute the passes
> - return runPassesAsChild(PassesToRun);
> - }
> -
> if (run_find_bugs) {
> // Rearrange the passes and apply them to the program. Repeat this process
> // until the user kills the program or we find a bug.
>
> Modified: llvm/trunk/tools/bugpoint/BugDriver.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/BugDriver.h?rev=110333&r1=110332&r2=110333&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/BugDriver.h (original)
> +++ llvm/trunk/tools/bugpoint/BugDriver.h Thu Aug 5 10:25:38 2010
> @@ -51,7 +51,6 @@
> AbstractInterpreter *Interpreter; // How to run the program
> AbstractInterpreter *SafeInterpreter; // To generate reference output, etc.
> GCC *gcc;
> - bool run_as_child;
> bool run_find_bugs;
> unsigned Timeout;
> unsigned MemoryLimit;
> @@ -62,7 +61,7 @@
> friend class ReduceMisCodegenFunctions;
>
> public:
> - BugDriver(const char *toolname, bool as_child, bool find_bugs,
> + BugDriver(const char *toolname, bool find_bugs,
> unsigned timeout, unsigned memlimit, bool use_valgrind,
> LLVMContext& ctxt);
> ~BugDriver();
> @@ -290,9 +289,6 @@
> return runPasses(M, PassesToRun, Filename, DeleteOutput);
> }
>
> - /// runAsChild - The actual "runPasses" guts that runs in a child process.
> - int runPassesAsChild(const std::vector<const PassInfo*> &PassesToRun);
> -
> /// initializeExecutionEnvironment - This method is used to set up the
> /// environment for executing LLVM programs.
> ///
>
> Modified: llvm/trunk/tools/bugpoint/OptimizerDriver.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/OptimizerDriver.cpp?rev=110333&r1=110332&r2=110333&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/OptimizerDriver.cpp (original)
> +++ llvm/trunk/tools/bugpoint/OptimizerDriver.cpp Thu Aug 5 10:25:38 2010
> @@ -27,6 +27,7 @@
> #include "llvm/Target/TargetData.h"
> #include "llvm/Support/FileUtilities.h"
> #include "llvm/Support/CommandLine.h"
> +#include "llvm/Support/Debug.h"
> #include "llvm/Support/raw_ostream.h"
> #include "llvm/System/Path.h"
> #include "llvm/System/Program.h"
> @@ -85,37 +86,6 @@
> outs() << getPassesString(PassesToRun) << "\n";
> }
>
> -int BugDriver::runPassesAsChild(const std::vector<const PassInfo*> &Passes) {
> - std::string ErrInfo;
> - raw_fd_ostream OutFile(ChildOutput.c_str(), ErrInfo,
> - raw_fd_ostream::F_Binary);
> - if (!ErrInfo.empty()) {
> - errs() << "Error opening bitcode file: " << ChildOutput << "\n";
> - return 1;
> - }
> -
> - PassManager PM;
> - // Make sure that the appropriate target data is always used...
> - PM.add(new TargetData(Program));
> -
> - for (unsigned i = 0, e = Passes.size(); i != e; ++i) {
> - if (Passes[i]->getNormalCtor())
> - PM.add(Passes[i]->getNormalCtor()());
> - else
> - errs() << "Cannot create pass yet: " << Passes[i]->getPassName() << "\n";
> - }
> - // Check that the module is well formed on completion of optimization
> - PM.add(createVerifierPass());
> -
> - // Write bitcode out to disk as the last step...
> - PM.add(createBitcodeWriterPass(OutFile));
> -
> - // Run all queued passes.
> - PM.run(*Program);
> -
> - return 0;
> -}
> -
> cl::opt<bool> SilencePasses("silence-passes", cl::desc("Suppress output of running passes (both stdout and stderr)"));
>
> /// runPasses - Run the specified passes on Program, outputting a bitcode file
> @@ -164,17 +134,25 @@
>
> // setup the child process' arguments
> SmallVector<const char*, 8> Args;
> - sys::Path tool = sys::Program::FindProgramByName(ToolName);
> + std::string Opt;
> + llvm::StringRef TN(ToolName);
> + if (TN.find('/') == llvm::StringRef::npos) {
> + Opt = ToolName;
> + } else {
> + std::pair<llvm::StringRef, llvm::StringRef> P = TN.rsplit('/');
> + Opt = P.first.str() + "/" + "opt";
> + }
> +
> + sys::Path tool = sys::Program::FindProgramByName(Opt);
> if (UseValgrind) {
> Args.push_back("valgrind");
> Args.push_back("--error-exitcode=1");
> Args.push_back("-q");
> Args.push_back(tool.c_str());
> } else
> - Args.push_back(ToolName);
> + Args.push_back(Opt.c_str());
>
> - Args.push_back("-as-child");
> - Args.push_back("-child-output");
> + Args.push_back("-o");
> Args.push_back(OutputFilename.c_str());
> std::vector<std::string> pass_args;
> for (unsigned i = 0, e = PluginLoader::getNumPlugins(); i != e; ++i) {
> @@ -192,6 +170,12 @@
> Args.push_back(*ExtraArgs);
> Args.push_back(0);
>
> + DEBUG(errs() << "\nAbout to run:\t";
> + for (unsigned i = 0, e = Args.size()-1; i != e; ++i)
> + errs() << " " << Args[i];
> + errs() << "\n";
> + );
> +
> sys::Path prog;
> if (UseValgrind)
> prog = sys::Program::FindProgramByName("valgrind");
>
> Modified: llvm/trunk/tools/bugpoint/bugpoint.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/bugpoint/bugpoint.cpp?rev=110333&r1=110332&r2=110333&view=diff
> ==============================================================================
> --- llvm/trunk/tools/bugpoint/bugpoint.cpp (original)
> +++ llvm/trunk/tools/bugpoint/bugpoint.cpp Thu Aug 5 10:25:38 2010
> @@ -29,13 +29,6 @@
> #include "llvm/LinkAllVMCore.h"
> using namespace llvm;
>
> -// AsChild - Specifies that this invocation of bugpoint is being generated
> -// from a parent process. It is not intended to be used by users so the
> -// option is hidden.
> -static cl::opt<bool>
> -AsChild("as-child", cl::desc("Run bugpoint as child process"),
> - cl::ReallyHidden);
> -
> static cl::opt<bool>
> FindBugs("find-bugs", cl::desc("Run many different optimization sequences "
> "on program to find bugs"), cl::init(false));
> @@ -123,7 +116,7 @@
> MemoryLimit = 100;
> }
>
> - BugDriver D(argv[0], AsChild, FindBugs, TimeoutValue, MemoryLimit,
> + BugDriver D(argv[0], FindBugs, TimeoutValue, MemoryLimit,
> UseValgrind, Context);
> if (D.addSources(InputFilenames)) return 1;
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list