summaryrefslogtreecommitdiff
path: root/tools/bugpoint/OptimizerDriver.cpp
diff options
context:
space:
mode:
authorAndrew Lenharth <andrewl@lenharth.org>2006-01-26 18:37:21 +0000
committerAndrew Lenharth <andrewl@lenharth.org>2006-01-26 18:37:21 +0000
commite4da1ddadae9aebac6265060626bb7cced4fc863 (patch)
treefc518ea754b77b614cb5e22e58bf833bb0a09eeb /tools/bugpoint/OptimizerDriver.cpp
parent4b934766bde8989b4eeb3f4a1cc222327e262379 (diff)
downloadllvm-e4da1ddadae9aebac6265060626bb7cced4fc863.tar.gz
llvm-e4da1ddadae9aebac6265060626bb7cced4fc863.tar.bz2
llvm-e4da1ddadae9aebac6265060626bb7cced4fc863.tar.xz
Pass plugins on to children when optimizing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25650 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/bugpoint/OptimizerDriver.cpp')
-rw-r--r--tools/bugpoint/OptimizerDriver.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/bugpoint/OptimizerDriver.cpp b/tools/bugpoint/OptimizerDriver.cpp
index bad68d1f0a..7cfc4fb499 100644
--- a/tools/bugpoint/OptimizerDriver.cpp
+++ b/tools/bugpoint/OptimizerDriver.cpp
@@ -30,6 +30,10 @@
#include "llvm/System/Path.h"
#include "llvm/System/Program.h"
#include "llvm/Config/alloca.h"
+
+#define DONT_GET_PLUGIN_LOADER_OPTION
+#include "llvm/Support/PluginLoader.h"
+
#include <fstream>
using namespace llvm;
@@ -149,13 +153,18 @@ bool BugDriver::runPasses(const std::vector<const PassInfo*> &Passes,
// setup the child process' arguments
const char** args = (const char**)
- alloca(sizeof(const char*)*(Passes.size()+10));
+ alloca(sizeof(const char*) *
+ (Passes.size()+10+2*PluginLoader::getNumPlugins()));
int n = 0;
args[n++] = ToolName.c_str();
args[n++] = "-as-child";
args[n++] = "-child-output";
args[n++] = OutputFilename.c_str();
std::vector<std::string> pass_args;
+ for (unsigned i = 0, e = PluginLoader::getNumPlugins(); i != e; ++i) {
+ pass_args.push_back( std::string("-load"));
+ pass_args.push_back( PluginLoader::getPlugin(i));
+ }
for (std::vector<const PassInfo*>::const_iterator I = Passes.begin(),
E = Passes.end(); I != E; ++I )
pass_args.push_back( std::string("-") + (*I)->getPassArgument() );