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:
Bill Wendling 2012-12-10 21:33:45 +00:00
parent e1dee8a06e
commit 50f318384c
5 changed files with 3 additions and 25 deletions

View File

@ -250,13 +250,6 @@ extern void
lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args, lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args,
int nargs); 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 * 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 * generated code. If a function is not listed, it might be

View File

@ -66,7 +66,7 @@ LTOCodeGenerator::LTOCodeGenerator()
: _context(getGlobalContext()), : _context(getGlobalContext()),
_linker("LinkTimeOptimizer", "ld-temp.o", _context), _target(NULL), _linker("LinkTimeOptimizer", "ld-temp.o", _context), _target(NULL),
_emitDwarfDebugInfo(false), _scopeRestrictionsDone(false), _emitDwarfDebugInfo(false), _scopeRestrictionsDone(false),
_exportDynamic(false), _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC), _codeModel(LTO_CODEGEN_PIC_MODEL_DYNAMIC),
_nativeObjectFile(NULL) { _nativeObjectFile(NULL) {
InitializeAllTargets(); InitializeAllTargets();
InitializeAllTargetMCs(); InitializeAllTargetMCs();
@ -339,8 +339,7 @@ void LTOCodeGenerator::applyScopeRestrictions() {
LLVMCompilerUsed->setSection("llvm.metadata"); LLVMCompilerUsed->setSection("llvm.metadata");
if (!_exportDynamic) passes.add(createInternalizePass(mustPreserveList));
passes.add(createInternalizePass(mustPreserveList));
// apply scope restrictions // apply scope restrictions
passes.run(*mergedModule); 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 // 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. // we create the pass ourselves with the symbol list provided by the linker.
PassManagerBuilder().populateLTOPassManager(passes, PassManagerBuilder().populateLTOPassManager(passes,
/*Internalize=*/ /*Internalize=*/false,
// FIXME: remove 'false' once
// Darwin linker can pass this
// option.
// <rdar://problem/12839986>
false /*!_exportDynamic*/,
!DisableInline, !DisableInline,
DisableGVNLoadPRE); DisableGVNLoadPRE);

View File

@ -44,7 +44,6 @@ struct LTOCodeGenerator {
bool setCodePICModel(lto_codegen_model, std::string &errMsg); bool setCodePICModel(lto_codegen_model, std::string &errMsg);
void setCpu(const char* mCpu) { _mCpu = mCpu; } void setCpu(const char* mCpu) { _mCpu = mCpu; }
void setExportDynamic(bool V) { _exportDynamic = V; }
void addMustPreserveSymbol(const char* sym) { void addMustPreserveSymbol(const char* sym) {
_mustPreserveSymbols[sym] = 1; _mustPreserveSymbols[sym] = 1;
@ -71,7 +70,6 @@ private:
llvm::TargetMachine* _target; llvm::TargetMachine* _target;
bool _emitDwarfDebugInfo; bool _emitDwarfDebugInfo;
bool _scopeRestrictionsDone; bool _scopeRestrictionsDone;
bool _exportDynamic;
lto_codegen_model _codeModel; lto_codegen_model _codeModel;
StringSet _mustPreserveSymbols; StringSet _mustPreserveSymbols;
StringSet _asmUndefinedRefs; StringSet _asmUndefinedRefs;

View File

@ -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. // 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 /// 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 /// 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. /// there, it might be inlined into every usage and optimized away.

View File

@ -27,7 +27,6 @@ lto_codegen_debug_options
lto_codegen_set_assembler_args lto_codegen_set_assembler_args
lto_codegen_set_assembler_path lto_codegen_set_assembler_path
lto_codegen_set_cpu lto_codegen_set_cpu
lto_codegen_set_export_dynamic
lto_codegen_compile_to_file lto_codegen_compile_to_file
LLVMCreateDisasm LLVMCreateDisasm
LLVMCreateDisasmCPU LLVMCreateDisasmCPU