diff options
Diffstat (limited to 'tools/lto/LTOCodeGenerator.cpp')
-rw-r--r-- | tools/lto/LTOCodeGenerator.cpp | 14 |
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; |