aboutsummaryrefslogtreecommitdiff
path: root/tools/lto/LTOCodeGenerator.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-07-03 22:53:14 +0000
committerDevang Patel <dpatel@apple.com>2008-07-03 22:53:14 +0000
commita93ae711a91dd151ca4d28e4172e0de89d1594f3 (patch)
treece345679fb8069e4bea6a3d9204d868044aac42e /tools/lto/LTOCodeGenerator.cpp
parenta122f2f51e4cc9edc5f1c4020e51909b585a0f90 (diff)
Provide a hook to set the code generation debug options to investigate lto failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53119 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/lto/LTOCodeGenerator.cpp')
-rw-r--r--tools/lto/LTOCodeGenerator.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index d82279d494..a07247e28e 100644
--- a/tools/lto/LTOCodeGenerator.cpp
+++ b/tools/lto/LTOCodeGenerator.cpp
@@ -40,6 +40,7 @@
#include "llvm/Target/TargetAsmInfo.h"
#include "llvm/Transforms/IPO.h"
#include "llvm/Transforms/Scalar.h"
+#include "llvm/ADT/StringExtras.h"
#include "llvm/Config/config.h"
@@ -116,7 +117,6 @@ bool LTOCodeGenerator::setCodePICModel(lto_codegen_model model,
return true;
}
-
void LTOCodeGenerator::addMustPreserveSymbol(const char* sym)
{
_mustPreserveSymbols[sym] = 1;
@@ -334,6 +334,18 @@ bool LTOCodeGenerator::generateAssemblyCode(std::ostream& out, std::string& errM
break;
}
+ for (unsigned opt_index = 0, opt_size = _codegenOptions.size();
+ opt_index < opt_size; ++opt_index) {
+ std::vector<const char *> cgOpts;
+ std::string &optString = _codegenOptions[opt_index];
+ for (std::string Opt = getToken(optString);
+ !Opt.empty(); Opt = getToken(optString))
+ cgOpts.push_back(Opt.c_str());
+
+ int pseudo_argc = cgOpts.size()-1;
+ cl::ParseCommandLineOptions(pseudo_argc, (char**)&cgOpts[0]);
+ }
+
// Instantiate the pass manager to organize the passes.
PassManager passes;