Fix thinko: alias always defines new symbol. Even is aliasee itself is undefined.

llvm-svn: 48203
This commit is contained in:
Anton Korobeynikov 2008-03-11 00:24:53 +00:00
parent c5b9cc70ce
commit 2591afca0a
2 changed files with 4 additions and 11 deletions

View File

@ -207,10 +207,8 @@ static void getSymbols(Module*M, std::vector<std::string>& symbols) {
// Loop over aliases
for (Module::alias_iterator AI = M->alias_begin(), AE = M->alias_end();
AI != AE; ++AI) {
const GlobalValue *Aliased = AI->getAliasedGlobal();
if (!Aliased->isDeclaration())
if (AI->hasName())
symbols.push_back(AI->getName());
if (AI->hasName())
symbols.push_back(AI->getName());
}
}

View File

@ -71,13 +71,8 @@ GetAllUndefinedSymbols(Module *M, std::set<std::string> &UndefinedSymbols) {
for (Module::alias_iterator I = M->alias_begin(), E = M->alias_end();
I != E; ++I)
if (I->hasName()) {
const GlobalValue *Aliased = I->getAliasedGlobal();
if (Aliased->isDeclaration())
UndefinedSymbols.insert(I->getName());
else
DefinedSymbols.insert(I->getName());
}
if (I->hasName())
DefinedSymbols.insert(I->getName());
// Prune out any defined symbols from the undefined symbols set...
for (std::set<std::string>::iterator I = UndefinedSymbols.begin();