mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 04:39:44 +00:00
Revert r169656.
The linker will call `lto_codegen_add_must_preserve_symbol' on all globals that should be kept around. The linker will pretend that a dylib is being created. <rdar://problem/12528059> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169770 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e1dee8a06e
commit
50f318384c
@ -250,13 +250,6 @@ extern void
|
||||
lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args,
|
||||
int nargs);
|
||||
|
||||
/**
|
||||
* If set, then codegen will export all symbols (e.g. the internalize
|
||||
* pass won't run).
|
||||
*/
|
||||
extern void
|
||||
lto_codegen_set_export_dynamic(lto_code_gen_t cg, bool val);
|
||||
|
||||
/**
|
||||
* Adds to a list of all global symbols that must exist in the final
|
||||
* generated code. If a function is not listed, it might be
|
||||
|
@ -66,7 +66,7 @@ LTOCodeGenerator::LTOCodeGenerator()
|
||||
: _context(getGlobalContext()),
|
||||
_linker("LinkTimeOptimizer", "ld-temp.o", _context), _target(NULL),
|
||||
_emitDwarfDebugInfo(false), _scopeRestrictionsDone(false),
|
||||
_exportDynamic(false), _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
|
||||
_codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
|
||||
_nativeObjectFile(NULL) {
|
||||
InitializeAllTargets();
|
||||
InitializeAllTargetMCs();
|
||||
@ -339,8 +339,7 @@ void LTOCodeGenerator::applyScopeRestrictions() {
|
||||
|
||||
LLVMCompilerUsed->setSection("llvm.metadata");
|
||||
|
||||
if (!_exportDynamic)
|
||||
passes.add(createInternalizePass(mustPreserveList));
|
||||
passes.add(createInternalizePass(mustPreserveList));
|
||||
|
||||
// apply scope restrictions
|
||||
passes.run(*mergedModule);
|
||||
@ -379,12 +378,7 @@ bool LTOCodeGenerator::generateObjectFile(raw_ostream &out,
|
||||
// keeps only main if it exists and does nothing for libraries. Instead
|
||||
// we create the pass ourselves with the symbol list provided by the linker.
|
||||
PassManagerBuilder().populateLTOPassManager(passes,
|
||||
/*Internalize=*/
|
||||
// FIXME: remove 'false' once
|
||||
// Darwin linker can pass this
|
||||
// option.
|
||||
// <rdar://problem/12839986>
|
||||
false /*!_exportDynamic*/,
|
||||
/*Internalize=*/false,
|
||||
!DisableInline,
|
||||
DisableGVNLoadPRE);
|
||||
|
||||
|
@ -44,7 +44,6 @@ struct LTOCodeGenerator {
|
||||
bool setCodePICModel(lto_codegen_model, std::string &errMsg);
|
||||
|
||||
void setCpu(const char* mCpu) { _mCpu = mCpu; }
|
||||
void setExportDynamic(bool V) { _exportDynamic = V; }
|
||||
|
||||
void addMustPreserveSymbol(const char* sym) {
|
||||
_mustPreserveSymbols[sym] = 1;
|
||||
@ -71,7 +70,6 @@ private:
|
||||
llvm::TargetMachine* _target;
|
||||
bool _emitDwarfDebugInfo;
|
||||
bool _scopeRestrictionsDone;
|
||||
bool _exportDynamic;
|
||||
lto_codegen_model _codeModel;
|
||||
StringSet _mustPreserveSymbols;
|
||||
StringSet _asmUndefinedRefs;
|
||||
|
@ -174,12 +174,6 @@ void lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args,
|
||||
// In here only for backwards compatibility. We use MC now.
|
||||
}
|
||||
|
||||
/// lto_codegen_set_export_dynamic - If set, then codegen will export all
|
||||
/// symbols (e.g. the internalize pass won't run).
|
||||
void lto_codegen_set_export_dynamic(lto_code_gen_t cg, bool val) {
|
||||
cg->setExportDynamic(val);
|
||||
}
|
||||
|
||||
/// lto_codegen_add_must_preserve_symbol - Adds to a list of all global symbols
|
||||
/// that must exist in the final generated code. If a function is not listed
|
||||
/// there, it might be inlined into every usage and optimized away.
|
||||
|
@ -27,7 +27,6 @@ lto_codegen_debug_options
|
||||
lto_codegen_set_assembler_args
|
||||
lto_codegen_set_assembler_path
|
||||
lto_codegen_set_cpu
|
||||
lto_codegen_set_export_dynamic
|
||||
lto_codegen_compile_to_file
|
||||
LLVMCreateDisasm
|
||||
LLVMCreateDisasmCPU
|
||||
|
Loading…
Reference in New Issue
Block a user