forked from OSchip/llvm-project
[ELF] Remove redundant isDefined() in Symbol::computeBinding() and delete one redundant call site
After r367869, VER_NDX_LOCAL can only be assigned to Defined and CommonSymbol. CommonSymbol becomes Defined after replaceCommonSymbols(), thus `versionId == VER_NDX_LOCAL` will imply `isDefined()`. In maybeReportUndefined(), computeBinding() is called when the symbol is unknown to be Undefined. computeBinding() != STB_LOCAL will always be true. llvm-svn: 368536
This commit is contained in:
parent
635eda8bb0
commit
cfdd4589f1
|
@ -770,8 +770,7 @@ static bool maybeReportUndefined(Symbol &sym, InputSectionBase &sec,
|
|||
if (!sym.isUndefined() || sym.isWeak())
|
||||
return false;
|
||||
|
||||
bool canBeExternal = !sym.isLocal() && sym.computeBinding() != STB_LOCAL &&
|
||||
sym.visibility == STV_DEFAULT;
|
||||
bool canBeExternal = !sym.isLocal() && sym.visibility == STV_DEFAULT;
|
||||
if (config->unresolvedSymbols == UnresolvedPolicy::Ignore && canBeExternal)
|
||||
return false;
|
||||
|
||||
|
|
|
@ -276,9 +276,8 @@ MemoryBufferRef LazyArchive::getMemberBuffer() {
|
|||
uint8_t Symbol::computeBinding() const {
|
||||
if (config->relocatable)
|
||||
return binding;
|
||||
if (visibility != STV_DEFAULT && visibility != STV_PROTECTED)
|
||||
return STB_LOCAL;
|
||||
if (versionId == VER_NDX_LOCAL && isDefined())
|
||||
if ((visibility != STV_DEFAULT && visibility != STV_PROTECTED) ||
|
||||
versionId == VER_NDX_LOCAL)
|
||||
return STB_LOCAL;
|
||||
if (!config->gnuUnique && binding == STB_GNU_UNIQUE)
|
||||
return STB_GLOBAL;
|
||||
|
|
Loading…
Reference in New Issue