bool LTOCodeGenerator::writeMergedModules(const char *path,
std::string &errMsg) {
- if (determineTarget(errMsg))
+ if (!determineTarget(errMsg))
return true;
// Run the verifier on the merged modules.
}
objFile.keep();
- if (genResult) {
+ if (!genResult) {
sys::fs::remove(Twine(Filename));
return true;
}
bool LTOCodeGenerator::determineTarget(std::string &errMsg) {
if (_target != NULL)
- return false;
+ return true;
// if options were requested, set them
if (!_codegenOptions.empty())
// create target machine from info for merged modules
const Target *march = TargetRegistry::lookupTarget(TripleStr, errMsg);
if (march == NULL)
- return true;
+ return false;
// The relocation model is actually a static member of TargetMachine and
// needs to be set before the TargetMachine is instantiated.
_target = march->createTargetMachine(TripleStr, _mCpu, FeatureStr, Options,
RelocModel, CodeModel::Default,
CodeGenOpt::Aggressive);
- return false;
+ return true;
}
void LTOCodeGenerator::
/// Optimize merged modules using various IPO passes
bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
std::string &errMsg) {
- if (this->determineTarget(errMsg))
- return true;
+ if (!this->determineTarget(errMsg))
+ return false;
Module* mergedModule = _linker.getModule();
if (_target->addPassesToEmitFile(codeGenPasses, Out,
TargetMachine::CGFT_ObjectFile)) {
errMsg = "target file type not supported";
- return true;
+ return false;
}
// Run our queue of passes all at once now, efficiently.
// Run the code generator, and write assembly file
codeGenPasses.run(*mergedModule);
- return false; // success
+ return true;
}
/// setCodeGenDebugOptions - Set codegen debugging options to aid in debugging