LTO: Simplify code generator initialization

Simplify `LTOCodeGenerator` initialization by initializing simple fields
at their definition.

llvm-svn: 235939
This commit is contained in:
Duncan P. N. Exon Smith 2015-04-27 23:19:26 +00:00
parent e0bca755d8
commit 7832e0a2f0
2 changed files with 11 additions and 25 deletions

View File

@ -155,15 +155,14 @@ private:
typedef StringMap<uint8_t> StringSet; typedef StringMap<uint8_t> StringSet;
void initialize();
void destroyMergedModule(); void destroyMergedModule();
std::unique_ptr<LLVMContext> OwnedContext; std::unique_ptr<LLVMContext> OwnedContext;
LLVMContext &Context; LLVMContext &Context;
Linker IRLinker; Linker IRLinker;
TargetMachine *TargetMach; TargetMachine *TargetMach = nullptr;
bool EmitDwarfDebugInfo; bool EmitDwarfDebugInfo = false;
bool ScopeRestrictionsDone; bool ScopeRestrictionsDone = false;
lto_codegen_model CodeModel; lto_codegen_model CodeModel = LTO_CODEGEN_PIC_MODEL_DEFAULT;
StringSet MustPreserveSymbols; StringSet MustPreserveSymbols;
StringSet AsmUndefinedRefs; StringSet AsmUndefinedRefs;
std::unique_ptr<MemoryBuffer> NativeObjectFile; std::unique_ptr<MemoryBuffer> NativeObjectFile;
@ -172,11 +171,11 @@ private:
std::string MAttr; std::string MAttr;
std::string NativeObjectPath; std::string NativeObjectPath;
TargetOptions Options; TargetOptions Options;
unsigned OptLevel; unsigned OptLevel = 2;
lto_diagnostic_handler_t DiagHandler; lto_diagnostic_handler_t DiagHandler = nullptr;
void *DiagContext; void *DiagContext = nullptr;
LTOModule *OwnedModule; LTOModule *OwnedModule = nullptr;
bool ShouldInternalize; bool ShouldInternalize = true;
}; };
} }
#endif #endif

View File

@ -65,25 +65,12 @@ const char* LTOCodeGenerator::getVersionString() {
LTOCodeGenerator::LTOCodeGenerator() LTOCodeGenerator::LTOCodeGenerator()
: Context(getGlobalContext()), IRLinker(new Module("ld-temp.o", Context)) { : Context(getGlobalContext()), IRLinker(new Module("ld-temp.o", Context)) {
initialize(); initializeLTOPasses();
} }
LTOCodeGenerator::LTOCodeGenerator(std::unique_ptr<LLVMContext> Context) LTOCodeGenerator::LTOCodeGenerator(std::unique_ptr<LLVMContext> Context)
: OwnedContext(std::move(Context)), Context(*OwnedContext), : OwnedContext(std::move(Context)), Context(*OwnedContext),
IRLinker(new Module("ld-temp.o", *OwnedContext)), OptLevel(2) { IRLinker(new Module("ld-temp.o", *OwnedContext)) {
initialize();
}
void LTOCodeGenerator::initialize() {
TargetMach = nullptr;
EmitDwarfDebugInfo = false;
ScopeRestrictionsDone = false;
CodeModel = LTO_CODEGEN_PIC_MODEL_DEFAULT;
DiagHandler = nullptr;
DiagContext = nullptr;
OwnedModule = nullptr;
ShouldInternalize = true;
initializeLTOPasses(); initializeLTOPasses();
} }