The command line options need to be processed before we create the TargetMachine.

Move the processing of the command line options to right before we create the
TargetMachine instead of after.
<rdar://problem/13468287>

llvm-svn: 182611
This commit is contained in:
Bill Wendling 2013-05-23 21:21:50 +00:00
parent c836ae7d36
commit f44b2a2e2d
1 changed files with 8 additions and 9 deletions

View File

@ -220,10 +220,15 @@ const void* LTOCodeGenerator::compile(size_t* length, std::string& errMsg) {
return _nativeObjectFile->getBufferStart();
}
bool LTOCodeGenerator::determineTarget(std::string& errMsg) {
bool LTOCodeGenerator::determineTarget(std::string &errMsg) {
if (_target != NULL)
return false;
// if options were requested, set them
if (!_codegenOptions.empty())
cl::ParseCommandLineOptions(_codegenOptions.size(),
const_cast<char **>(&_codegenOptions[0]));
std::string TripleStr = _linker.getModule()->getTargetTriple();
if (TripleStr.empty())
TripleStr = sys::getDefaultTargetTriple();
@ -361,12 +366,7 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
Module* mergedModule = _linker.getModule();
// if options were requested, set them
if (!_codegenOptions.empty())
cl::ParseCommandLineOptions(_codegenOptions.size(),
const_cast<char **>(&_codegenOptions[0]));
// mark which symbols can not be internalized
// Mark which symbols can not be internalized
this->applyScopeRestrictions();
// Instantiate the pass manager to organize the passes.
@ -382,12 +382,11 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
// Enabling internalize here would use its AllButMain variant. It
// keeps only main if it exists and does nothing for libraries. Instead
// we create the pass ourselves with the symbol list provided by the linker.
if (!DisableOpt) {
if (!DisableOpt)
PassManagerBuilder().populateLTOPassManager(passes,
/*Internalize=*/false,
!DisableInline,
DisableGVNLoadPRE);
}
// Make sure everything is still good.
passes.add(createVerifierPass());