1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00

LTO: Cleanup parameter names and header docs, NFC

Follow LLVM style for the parameter names (`CamelCase` not `camelCase`),
and surface the header docs in doxygen.  No functionality change
intended.

llvm-svn: 246509
This commit is contained in:
Duncan P. N. Exon Smith 2015-08-31 23:44:06 +00:00
parent 2e700a48c1
commit 54c273cc35
2 changed files with 105 additions and 108 deletions

View File

@ -65,79 +65,81 @@ struct LTOCodeGenerator {
LTOCodeGenerator(std::unique_ptr<LLVMContext> Context);
~LTOCodeGenerator();
// Merge given module, return true on success.
/// Merge given module. Return true on success.
bool addModule(struct LTOModule *);
// Set the destination module.
/// Set the destination module.
void setModule(std::unique_ptr<LTOModule> M);
void setTargetOptions(TargetOptions options);
void setTargetOptions(TargetOptions Options);
void setDebugInfo(lto_debug_model);
void setCodePICModel(Reloc::Model model) { RelocModel = model; }
void setCodePICModel(Reloc::Model Model) { RelocModel = Model; }
void setCpu(const char *mCpu) { MCpu = mCpu; }
void setAttr(const char *mAttr) { MAttr = mAttr; }
void setOptLevel(unsigned optLevel);
void setCpu(const char *MCpu) { this->MCpu = MCpu; }
void setAttr(const char *MAttr) { this->MAttr = MAttr; }
void setOptLevel(unsigned OptLevel);
void setShouldInternalize(bool Value) { ShouldInternalize = Value; }
void setShouldEmbedUselists(bool Value) { ShouldEmbedUselists = Value; }
void addMustPreserveSymbol(StringRef sym) { MustPreserveSymbols[sym] = 1; }
void addMustPreserveSymbol(StringRef Sym) { MustPreserveSymbols[Sym] = 1; }
// To pass options to the driver and optimization passes. These options are
// not necessarily for debugging purpose (The function name is misleading).
// This function should be called before LTOCodeGenerator::compilexxx(),
// and LTOCodeGenerator::writeMergedModules().
void setCodeGenDebugOptions(const char *opts);
/// Pass options to the driver and optimization passes.
///
/// These options are not necessarily for debugging purpose (the function
/// name is misleading). This function should be called before
/// LTOCodeGenerator::compilexxx(), and
/// LTOCodeGenerator::writeMergedModules().
void setCodeGenDebugOptions(const char *Opts);
// Parse the options set in setCodeGenDebugOptions. Like
// setCodeGenDebugOptions, this must be called before
// LTOCodeGenerator::compilexxx() and LTOCodeGenerator::writeMergedModules()
/// Parse the options set in setCodeGenDebugOptions.
///
/// Like \a setCodeGenDebugOptions(), this must be called before
/// LTOCodeGenerator::compilexxx() and
/// LTOCodeGenerator::writeMergedModules().
void parseCodeGenDebugOptions();
// Write the merged module to the file specified by the given path.
// Return true on success.
bool writeMergedModules(const char *path, std::string &errMsg);
/// Write the merged module to the file specified by the given path. Return
/// true on success.
bool writeMergedModules(const char *Path, std::string &ErrMsg);
// Compile the merged module into a *single* object file; the path to object
// file is returned to the caller via argument "name". Return true on
// success.
//
// NOTE that it is up to the linker to remove the intermediate object file.
// Do not try to remove the object file in LTOCodeGenerator's destructor
// as we don't who (LTOCodeGenerator or the obj file) will last longer.
bool compile_to_file(const char **name,
bool disableInline,
bool disableGVNLoadPRE,
bool disableVectorization,
std::string &errMsg);
/// Compile the merged module into a *single* object file; the path to object
/// file is returned to the caller via argument "name". Return true on
/// success.
///
/// \note It is up to the linker to remove the intermediate object file. Do
/// not try to remove the object file in LTOCodeGenerator's destructor as we
/// don't who (LTOCodeGenerator or the obj file) will last longer.
bool compile_to_file(const char **Name, bool DisableInline,
bool DisableGVNLoadPRE, bool DisableVectorization,
std::string &ErrMsg);
// As with compile_to_file(), this function compiles the merged module into
// single object file. Instead of returning the object-file-path to the caller
// (linker), it brings the object to a buffer, and return the buffer to the
// caller. This function should delete intermediate object file once its content
// is brought to memory. Return NULL if the compilation was not successful.
std::unique_ptr<MemoryBuffer> compile(bool disableInline,
bool disableGVNLoadPRE,
bool disableVectorization,
/// As with compile_to_file(), this function compiles the merged module into
/// single object file. Instead of returning the object-file-path to the
/// caller (linker), it brings the object to a buffer, and return the buffer
/// to the caller. This function should delete intermediate object file once
/// its content is brought to memory. Return NULL if the compilation was not
/// successful.
std::unique_ptr<MemoryBuffer> compile(bool DisableInline,
bool DisableGVNLoadPRE,
bool DisableVectorization,
std::string &errMsg);
// Optimizes the merged module. Returns true on success.
bool optimize(bool disableInline,
bool disableGVNLoadPRE,
bool disableVectorization,
std::string &errMsg);
/// Optimizes the merged module. Returns true on success.
bool optimize(bool DisableInline, bool DisableGVNLoadPRE,
bool DisableVectorization, std::string &ErrMsg);
// Compiles the merged optimized module into a single object file. It brings
// the object to a buffer, and returns the buffer to the caller. Return NULL
// if the compilation was not successful.
std::unique_ptr<MemoryBuffer> compileOptimized(std::string &errMsg);
/// Compiles the merged optimized module into a single object file. It brings
/// the object to a buffer, and returns the buffer to the caller. Return NULL
/// if the compilation was not successful.
std::unique_ptr<MemoryBuffer> compileOptimized(std::string &ErrMsg);
// Compile the merged optimized module into out.size() object files each
// representing a linkable partition of the module. If out contains more than
// one element, code generation is done in parallel with out.size() threads.
// Object files will be written to members of out. Returns true on success.
bool compileOptimized(ArrayRef<raw_pwrite_stream *> out, std::string &errMsg);
/// Compile the merged optimized module into out.size() object files each
/// representing a linkable partition of the module. If out contains more
/// than one element, code generation is done in parallel with out.size()
/// threads. Object files will be written to members of out. Returns true on
/// success.
bool compileOptimized(ArrayRef<raw_pwrite_stream *> Out, std::string &ErrMsg);
void setDiagnosticHandler(lto_diagnostic_handler_t, void *);
@ -146,13 +148,13 @@ struct LTOCodeGenerator {
private:
void initializeLTOPasses();
bool compileOptimizedToFile(const char **name, std::string &errMsg);
bool compileOptimizedToFile(const char **Name, std::string &ErrMsg);
void applyScopeRestrictions();
void applyRestriction(GlobalValue &GV, ArrayRef<StringRef> Libcalls,
std::vector<const char *> &MustPreserveList,
SmallPtrSetImpl<GlobalValue *> &AsmUsed,
Mangler &Mangler);
bool determineTarget(std::string &errMsg);
bool determineTarget(std::string &ErrMsg);
static void DiagnosticHandler(const DiagnosticInfo &DI, void *Context);

View File

@ -110,13 +110,13 @@ void LTOCodeGenerator::initializeLTOPasses() {
initializeCFGSimplifyPassPass(R);
}
bool LTOCodeGenerator::addModule(LTOModule *mod) {
assert(&mod->getModule().getContext() == &Context &&
bool LTOCodeGenerator::addModule(LTOModule *Mod) {
assert(&Mod->getModule().getContext() == &Context &&
"Expected module in same context");
bool ret = IRLinker.linkInModule(&mod->getModule());
bool ret = IRLinker.linkInModule(&Mod->getModule());
const std::vector<const char*> &undefs = mod->getAsmUndefinedRefs();
const std::vector<const char *> &undefs = Mod->getAsmUndefinedRefs();
for (int i = 0, e = undefs.size(); i != e; ++i)
AsmUndefinedRefs[undefs[i]] = 1;
@ -137,12 +137,12 @@ void LTOCodeGenerator::setModule(std::unique_ptr<LTOModule> Mod) {
AsmUndefinedRefs[Undefs[I]] = 1;
}
void LTOCodeGenerator::setTargetOptions(TargetOptions options) {
Options = options;
void LTOCodeGenerator::setTargetOptions(TargetOptions Options) {
this->Options = Options;
}
void LTOCodeGenerator::setDebugInfo(lto_debug_model debug) {
switch (debug) {
void LTOCodeGenerator::setDebugInfo(lto_debug_model Debug) {
switch (Debug) {
case LTO_DEBUG_MODEL_NONE:
EmitDwarfDebugInfo = false;
return;
@ -154,8 +154,8 @@ void LTOCodeGenerator::setDebugInfo(lto_debug_model debug) {
llvm_unreachable("Unknown debug format!");
}
void LTOCodeGenerator::setOptLevel(unsigned level) {
OptLevel = level;
void LTOCodeGenerator::setOptLevel(unsigned Level) {
OptLevel = Level;
switch (OptLevel) {
case 0:
CGOptLevel = CodeGenOpt::None;
@ -172,9 +172,9 @@ void LTOCodeGenerator::setOptLevel(unsigned level) {
}
}
bool LTOCodeGenerator::writeMergedModules(const char *path,
std::string &errMsg) {
if (!determineTarget(errMsg))
bool LTOCodeGenerator::writeMergedModules(const char *Path,
std::string &ErrMsg) {
if (!determineTarget(ErrMsg))
return false;
// mark which symbols can not be internalized
@ -182,10 +182,10 @@ bool LTOCodeGenerator::writeMergedModules(const char *path,
// create output file
std::error_code EC;
tool_output_file Out(path, EC, sys::fs::F_None);
tool_output_file Out(Path, EC, sys::fs::F_None);
if (EC) {
errMsg = "could not open bitcode file for writing: ";
errMsg += path;
ErrMsg = "could not open bitcode file for writing: ";
ErrMsg += Path;
return false;
}
@ -194,8 +194,8 @@ bool LTOCodeGenerator::writeMergedModules(const char *path,
Out.os().close();
if (Out.os().has_error()) {
errMsg = "could not write bitcode file: ";
errMsg += path;
ErrMsg = "could not write bitcode file: ";
ErrMsg += Path;
Out.os().clear_error();
return false;
}
@ -204,22 +204,22 @@ bool LTOCodeGenerator::writeMergedModules(const char *path,
return true;
}
bool LTOCodeGenerator::compileOptimizedToFile(const char **name,
std::string &errMsg) {
bool LTOCodeGenerator::compileOptimizedToFile(const char **Name,
std::string &ErrMsg) {
// make unique temp .o file to put generated object file
SmallString<128> Filename;
int FD;
std::error_code EC =
sys::fs::createTemporaryFile("lto-llvm", "o", FD, Filename);
if (EC) {
errMsg = EC.message();
ErrMsg = EC.message();
return false;
}
// generate object file
tool_output_file objFile(Filename.c_str(), FD);
bool genResult = compileOptimized(&objFile.os(), errMsg);
bool genResult = compileOptimized(&objFile.os(), ErrMsg);
objFile.os().close();
if (objFile.os().has_error()) {
objFile.os().clear_error();
@ -234,21 +234,21 @@ bool LTOCodeGenerator::compileOptimizedToFile(const char **name,
}
NativeObjectPath = Filename.c_str();
*name = NativeObjectPath.c_str();
*Name = NativeObjectPath.c_str();
return true;
}
std::unique_ptr<MemoryBuffer>
LTOCodeGenerator::compileOptimized(std::string &errMsg) {
LTOCodeGenerator::compileOptimized(std::string &ErrMsg) {
const char *name;
if (!compileOptimizedToFile(&name, errMsg))
if (!compileOptimizedToFile(&name, ErrMsg))
return nullptr;
// read .o file into memory buffer
ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrErr =
MemoryBuffer::getFile(name, -1, false);
if (std::error_code EC = BufferOrErr.getError()) {
errMsg = EC.message();
ErrMsg = EC.message();
sys::fs::remove(NativeObjectPath);
return nullptr;
}
@ -259,30 +259,26 @@ LTOCodeGenerator::compileOptimized(std::string &errMsg) {
return std::move(*BufferOrErr);
}
bool LTOCodeGenerator::compile_to_file(const char **name,
bool disableInline,
bool disableGVNLoadPRE,
bool disableVectorization,
std::string &errMsg) {
if (!optimize(disableInline, disableGVNLoadPRE,
disableVectorization, errMsg))
bool LTOCodeGenerator::compile_to_file(const char **Name, bool DisableInline,
bool DisableGVNLoadPRE,
bool DisableVectorization,
std::string &ErrMsg) {
if (!optimize(DisableInline, DisableGVNLoadPRE, DisableVectorization, ErrMsg))
return false;
return compileOptimizedToFile(name, errMsg);
return compileOptimizedToFile(Name, ErrMsg);
}
std::unique_ptr<MemoryBuffer>
LTOCodeGenerator::compile(bool disableInline, bool disableGVNLoadPRE,
bool disableVectorization, std::string &errMsg) {
if (!optimize(disableInline, disableGVNLoadPRE,
disableVectorization, errMsg))
LTOCodeGenerator::compile(bool DisableInline, bool DisableGVNLoadPRE,
bool DisableVectorization, std::string &ErrMsg) {
if (!optimize(DisableInline, DisableGVNLoadPRE, DisableVectorization, ErrMsg))
return nullptr;
return compileOptimized(errMsg);
return compileOptimized(ErrMsg);
}
bool LTOCodeGenerator::determineTarget(std::string &errMsg) {
bool LTOCodeGenerator::determineTarget(std::string &ErrMsg) {
if (TargetMach)
return true;
@ -294,7 +290,7 @@ bool LTOCodeGenerator::determineTarget(std::string &errMsg) {
llvm::Triple Triple(TripleStr);
// create target machine from info for merged modules
const Target *march = TargetRegistry::lookupTarget(TripleStr, errMsg);
const Target *march = TargetRegistry::lookupTarget(TripleStr, ErrMsg);
if (!march)
return false;
@ -457,11 +453,10 @@ void LTOCodeGenerator::applyScopeRestrictions() {
}
/// Optimize merged modules using various IPO passes
bool LTOCodeGenerator::optimize(bool DisableInline,
bool DisableGVNLoadPRE,
bool LTOCodeGenerator::optimize(bool DisableInline, bool DisableGVNLoadPRE,
bool DisableVectorization,
std::string &errMsg) {
if (!this->determineTarget(errMsg))
std::string &ErrMsg) {
if (!this->determineTarget(ErrMsg))
return false;
// Mark which symbols can not be internalized
@ -496,9 +491,9 @@ bool LTOCodeGenerator::optimize(bool DisableInline,
return true;
}
bool LTOCodeGenerator::compileOptimized(ArrayRef<raw_pwrite_stream *> out,
std::string &errMsg) {
if (!this->determineTarget(errMsg))
bool LTOCodeGenerator::compileOptimized(ArrayRef<raw_pwrite_stream *> Out,
std::string &ErrMsg) {
if (!this->determineTarget(ErrMsg))
return false;
legacy::PassManager preCodeGenPasses;
@ -514,7 +509,7 @@ bool LTOCodeGenerator::compileOptimized(ArrayRef<raw_pwrite_stream *> out,
// original module at parallelism level 1 which we then assign back to
// MergedModule.
MergedModule =
splitCodeGen(std::move(MergedModule), out, MCpu, FeatureStr, Options,
splitCodeGen(std::move(MergedModule), Out, MCpu, FeatureStr, Options,
RelocModel, CodeModel::Default, CGOptLevel);
return true;
@ -522,9 +517,9 @@ bool LTOCodeGenerator::compileOptimized(ArrayRef<raw_pwrite_stream *> out,
/// setCodeGenDebugOptions - Set codegen debugging options to aid in debugging
/// LTO problems.
void LTOCodeGenerator::setCodeGenDebugOptions(const char *options) {
for (std::pair<StringRef, StringRef> o = getToken(options);
!o.first.empty(); o = getToken(o.second))
void LTOCodeGenerator::setCodeGenDebugOptions(const char *Options) {
for (std::pair<StringRef, StringRef> o = getToken(Options); !o.first.empty();
o = getToken(o.second))
CodegenOptions.push_back(o.first);
}