mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-01 15:40:46 +00:00
[LTO API] add lto_codegen_set_should_internalize.
When debugging LTO issues with ld64, we use -save-temps to save the merged optimized bitcode file, then invoke ld64 again on the single bitcode file. The saved bitcode file is already internalized, so we can call lto_codegen_set_should_internalize and skip running internalization again. rdar://20227235 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235211 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c7b16819e8
commit
44b800f44d
@ -40,7 +40,7 @@ typedef bool lto_bool_t;
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define LTO_API_VERSION 13
|
||||
#define LTO_API_VERSION 14
|
||||
|
||||
/**
|
||||
* \since prior to LTO_API_VERSION=3
|
||||
@ -548,6 +548,16 @@ lto_codegen_debug_options(lto_code_gen_t cg, const char *);
|
||||
extern void
|
||||
lto_initialize_disassembler(void);
|
||||
|
||||
/**
|
||||
* Sets if we should run internalize pass during optimization and code
|
||||
* generation.
|
||||
*
|
||||
* \since prior to LTO_API_VERSION=14
|
||||
*/
|
||||
extern void
|
||||
lto_codegen_set_should_internalize(lto_code_gen_t cg,
|
||||
lto_bool_t ShouldInternalize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -79,6 +79,8 @@ struct LTOCodeGenerator {
|
||||
void setAttr(const char *mAttr) { MAttr = mAttr; }
|
||||
void setOptLevel(unsigned optLevel) { OptLevel = optLevel; }
|
||||
|
||||
void setShouldInternalize(bool Value) { ShouldInternalize = Value; }
|
||||
|
||||
void addMustPreserveSymbol(const char *sym) { MustPreserveSymbols[sym] = 1; }
|
||||
|
||||
// To pass options to the driver and optimization passes. These options are
|
||||
@ -174,6 +176,7 @@ private:
|
||||
lto_diagnostic_handler_t DiagHandler;
|
||||
void *DiagContext;
|
||||
LTOModule *OwnedModule;
|
||||
bool ShouldInternalize;
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
@ -82,6 +82,7 @@ void LTOCodeGenerator::initialize() {
|
||||
DiagHandler = nullptr;
|
||||
DiagContext = nullptr;
|
||||
OwnedModule = nullptr;
|
||||
ShouldInternalize = true;
|
||||
|
||||
initializeLTOPasses();
|
||||
}
|
||||
@ -464,7 +465,7 @@ static void accumulateAndSortLibcalls(std::vector<StringRef> &Libcalls,
|
||||
}
|
||||
|
||||
void LTOCodeGenerator::applyScopeRestrictions() {
|
||||
if (ScopeRestrictionsDone)
|
||||
if (ScopeRestrictionsDone || !ShouldInternalize)
|
||||
return;
|
||||
Module *mergedModule = IRLinker.getModule();
|
||||
|
||||
|
@ -333,3 +333,8 @@ void lto_codegen_debug_options(lto_code_gen_t cg, const char *opt) {
|
||||
}
|
||||
|
||||
unsigned int lto_api_version() { return LTO_API_VERSION; }
|
||||
|
||||
void lto_codegen_set_should_internalize(lto_code_gen_t cg,
|
||||
bool ShouldInternalize) {
|
||||
unwrap(cg)->setShouldInternalize(ShouldInternalize);
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ lto_codegen_set_cpu
|
||||
lto_codegen_compile_to_file
|
||||
lto_codegen_optimize
|
||||
lto_codegen_compile_optimized
|
||||
lto_codegen_set_should_internalize
|
||||
LLVMCreateDisasm
|
||||
LLVMCreateDisasmCPU
|
||||
LLVMDisasmDispose
|
||||
|
Loading…
Reference in New Issue
Block a user