mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-21 19:20:50 +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
|
* \since prior to LTO_API_VERSION=3
|
||||||
@ -548,6 +548,16 @@ lto_codegen_debug_options(lto_code_gen_t cg, const char *);
|
|||||||
extern void
|
extern void
|
||||||
lto_initialize_disassembler(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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -79,6 +79,8 @@ struct LTOCodeGenerator {
|
|||||||
void setAttr(const char *mAttr) { MAttr = mAttr; }
|
void setAttr(const char *mAttr) { MAttr = mAttr; }
|
||||||
void setOptLevel(unsigned optLevel) { OptLevel = optLevel; }
|
void setOptLevel(unsigned optLevel) { OptLevel = optLevel; }
|
||||||
|
|
||||||
|
void setShouldInternalize(bool Value) { ShouldInternalize = Value; }
|
||||||
|
|
||||||
void addMustPreserveSymbol(const char *sym) { MustPreserveSymbols[sym] = 1; }
|
void addMustPreserveSymbol(const char *sym) { MustPreserveSymbols[sym] = 1; }
|
||||||
|
|
||||||
// To pass options to the driver and optimization passes. These options are
|
// To pass options to the driver and optimization passes. These options are
|
||||||
@ -174,6 +176,7 @@ private:
|
|||||||
lto_diagnostic_handler_t DiagHandler;
|
lto_diagnostic_handler_t DiagHandler;
|
||||||
void *DiagContext;
|
void *DiagContext;
|
||||||
LTOModule *OwnedModule;
|
LTOModule *OwnedModule;
|
||||||
|
bool ShouldInternalize;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -82,6 +82,7 @@ void LTOCodeGenerator::initialize() {
|
|||||||
DiagHandler = nullptr;
|
DiagHandler = nullptr;
|
||||||
DiagContext = nullptr;
|
DiagContext = nullptr;
|
||||||
OwnedModule = nullptr;
|
OwnedModule = nullptr;
|
||||||
|
ShouldInternalize = true;
|
||||||
|
|
||||||
initializeLTOPasses();
|
initializeLTOPasses();
|
||||||
}
|
}
|
||||||
@ -464,7 +465,7 @@ static void accumulateAndSortLibcalls(std::vector<StringRef> &Libcalls,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LTOCodeGenerator::applyScopeRestrictions() {
|
void LTOCodeGenerator::applyScopeRestrictions() {
|
||||||
if (ScopeRestrictionsDone)
|
if (ScopeRestrictionsDone || !ShouldInternalize)
|
||||||
return;
|
return;
|
||||||
Module *mergedModule = IRLinker.getModule();
|
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; }
|
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_compile_to_file
|
||||||
lto_codegen_optimize
|
lto_codegen_optimize
|
||||||
lto_codegen_compile_optimized
|
lto_codegen_compile_optimized
|
||||||
|
lto_codegen_set_should_internalize
|
||||||
LLVMCreateDisasm
|
LLVMCreateDisasm
|
||||||
LLVMCreateDisasmCPU
|
LLVMCreateDisasmCPU
|
||||||
LLVMDisasmDispose
|
LLVMDisasmDispose
|
||||||
|
Loading…
x
Reference in New Issue
Block a user