available_externall linkage is not local, this was confusing the codegenerator,

and it wasn't generating calls through @PLT for these functions.
hasLocalLinkage() is now false for available_externally,
I attempted to fix the inliner and dce to handle available_externally properly.
It passed make check.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72328 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Torok Edwin
2009-05-23 14:06:57 +00:00
parent d14ce2f1fc
commit f5ff1d335b
6 changed files with 28 additions and 7 deletions
+2 -2
View File
@@ -64,7 +64,7 @@ bool GlobalDCE::runOnModule(Module &M) {
Changed |= RemoveUnusedGlobalValue(*I);
// Functions with external linkage are needed if they have a body
if (!I->hasLocalLinkage() && !I->hasLinkOnceLinkage() &&
!I->isDeclaration())
!I->isDeclaration() && !I->hasAvailableExternallyLinkage())
GlobalIsNeeded(I);
}
@@ -74,7 +74,7 @@ bool GlobalDCE::runOnModule(Module &M) {
// Externally visible & appending globals are needed, if they have an
// initializer.
if (!I->hasLocalLinkage() && !I->hasLinkOnceLinkage() &&
!I->isDeclaration())
!I->isDeclaration() && !I->hasAvailableExternallyLinkage())
GlobalIsNeeded(I);
}