summaryrefslogtreecommitdiff
path: root/include/llvm/LTO/LTOCodeGenerator.h
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-10-03 18:29:09 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-10-03 18:29:09 +0000
commit438900938c3ac9d7fac2dd5d2c85ca4b9b2e35f7 (patch)
treeee292d94cfa7c8661cc4cd598f32e66289df9aeb /include/llvm/LTO/LTOCodeGenerator.h
parent1df59ef1aa271a4e33cf8973e14bcaf55c585231 (diff)
downloadllvm-438900938c3ac9d7fac2dd5d2c85ca4b9b2e35f7.tar.gz
llvm-438900938c3ac9d7fac2dd5d2c85ca4b9b2e35f7.tar.bz2
llvm-438900938c3ac9d7fac2dd5d2c85ca4b9b2e35f7.tar.xz
Optimize linkonce_odr unnamed_addr functions during LTO.
Generalize the API so we can distinguish symbols that are needed just for a DSO symbol table from those that are used from some native .o. The symbols that are only wanted for the dso symbol table can be dropped if llvm can prove every other dso has a copy (linkonce_odr) and the address is not important (unnamed_addr). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191922 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/LTO/LTOCodeGenerator.h')
-rw-r--r--include/llvm/LTO/LTOCodeGenerator.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/llvm/LTO/LTOCodeGenerator.h b/include/llvm/LTO/LTOCodeGenerator.h
index 97a5066339..9f50770dcd 100644
--- a/include/llvm/LTO/LTOCodeGenerator.h
+++ b/include/llvm/LTO/LTOCodeGenerator.h
@@ -73,6 +73,10 @@ struct LTOCodeGenerator {
void addMustPreserveSymbol(const char *sym) { MustPreserveSymbols[sym] = 1; }
+ void addDSOSymbol(const char* Sym) {
+ DSOSymbols[Sym] = 1;
+ }
+
// To pass options to the driver and optimization passes. These options are
// not necessarily for debugging purpose (The function name is misleading).
// This function should be called before LTOCodeGenerator::compilexxx(),
@@ -126,6 +130,7 @@ private:
void applyScopeRestrictions();
void applyRestriction(llvm::GlobalValue &GV,
std::vector<const char*> &MustPreserveList,
+ std::vector<const char*> &SymtabList,
llvm::SmallPtrSet<llvm::GlobalValue*, 8> &AsmUsed,
llvm::Mangler &Mangler);
bool determineTarget(std::string &errMsg);
@@ -138,6 +143,7 @@ private:
bool EmitDwarfDebugInfo;
bool ScopeRestrictionsDone;
lto_codegen_model CodeModel;
+ StringSet DSOSymbols;
StringSet MustPreserveSymbols;
StringSet AsmUndefinedRefs;
llvm::MemoryBuffer *NativeObjectFile;