diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-10-24 18:13:04 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-10-24 18:13:04 +0000 |
commit | d4bcefc7d9ff16710b2509e494614b5c08013567 (patch) | |
tree | b3737bb77e7daf33769e961cbb2cdf4e94d99faa /llvm/lib/Object/IRObjectFile.cpp | |
parent | f924e11967750e5e269e063a22fc495799cfab6d (diff) | |
download | bcm5719-llvm-d4bcefc7d9ff16710b2509e494614b5c08013567.tar.gz bcm5719-llvm-d4bcefc7d9ff16710b2509e494614b5c08013567.zip |
Don't ever call materializeAllPermanently during LTO.
To do this, change the representation of lazy loaded functions.
The previous representation cannot differentiate between a function whose body
has been removed and one whose body hasn't been read from the .bc file. That
means that in order to drop a function, the entire body had to be read.
llvm-svn: 220580
Diffstat (limited to 'llvm/lib/Object/IRObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/IRObjectFile.cpp | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/llvm/lib/Object/IRObjectFile.cpp b/llvm/lib/Object/IRObjectFile.cpp index f3bea51be97..7256a2fc007 100644 --- a/llvm/lib/Object/IRObjectFile.cpp +++ b/llvm/lib/Object/IRObjectFile.cpp @@ -204,16 +204,6 @@ std::error_code IRObjectFile::printSymbolName(raw_ostream &OS, return object_error::success; } -static bool isDeclaration(const GlobalValue &V) { - if (V.hasAvailableExternallyLinkage()) - return true; - - if (V.isMaterializable()) - return false; - - return V.isDeclaration(); -} - uint32_t IRObjectFile::getSymbolFlags(DataRefImpl Symb) const { const GlobalValue *GV = getGV(Symb); @@ -224,7 +214,7 @@ uint32_t IRObjectFile::getSymbolFlags(DataRefImpl Symb) const { } uint32_t Res = BasicSymbolRef::SF_None; - if (isDeclaration(*GV)) + if (GV->isDeclarationForLinker()) Res |= BasicSymbolRef::SF_Undefined; if (GV->hasPrivateLinkage()) Res |= BasicSymbolRef::SF_FormatSpecific; |