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
diff --git a/tools/lto/LTOCodeGenerator.cpp b/tools/lto/LTOCodeGenerator.cpp
index d82279d..a07247e 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 @@
return true;
}
-
void LTOCodeGenerator::addMustPreserveSymbol(const char* sym)
{
_mustPreserveSymbols[sym] = 1;
@@ -334,6 +334,18 @@
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;