Don't change the visibility when converting a definition to a declaration.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242030 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2015-07-13 14:18:22 +00:00
parent b3e72a7c9d
commit 94162a044b
4 changed files with 13 additions and 3 deletions

View File

@ -176,6 +176,7 @@ namespace {
(void) llvm::createStraightLineStrengthReducePass(); (void) llvm::createStraightLineStrengthReducePass();
(void) llvm::createMemDerefPrinter(); (void) llvm::createMemDerefPrinter();
(void) llvm::createFloat2IntPass(); (void) llvm::createFloat2IntPass();
(void) llvm::createEliminateAvailableExternallyPass();
(void)new llvm::IntervalPartition(); (void)new llvm::IntervalPartition();
(void)new llvm::ScalarEvolution(); (void)new llvm::ScalarEvolution();

View File

@ -67,7 +67,6 @@ bool EliminateAvailableExternally::runOnModule(Module &M) {
} }
I->removeDeadConstantUsers(); I->removeDeadConstantUsers();
I->setLinkage(GlobalValue::ExternalLinkage); I->setLinkage(GlobalValue::ExternalLinkage);
I->setVisibility(GlobalValue::DefaultVisibility);
NumVariables++; NumVariables++;
} }
@ -78,7 +77,6 @@ bool EliminateAvailableExternally::runOnModule(Module &M) {
if (!I->isDeclaration()) if (!I->isDeclaration())
// This will set the linkage to external // This will set the linkage to external
I->deleteBody(); I->deleteBody();
I->setVisibility(GlobalValue::DefaultVisibility);
I->removeDeadConstantUsers(); I->removeDeadConstantUsers();
NumFunctions++; NumFunctions++;
} }
@ -91,7 +89,6 @@ bool EliminateAvailableExternally::runOnModule(Module &M) {
I->setAliasee(nullptr); I->setAliasee(nullptr);
I->removeDeadConstantUsers(); I->removeDeadConstantUsers();
I->setLinkage(GlobalValue::ExternalLinkage); I->setLinkage(GlobalValue::ExternalLinkage);
I->setVisibility(GlobalValue::DefaultVisibility);
NumAliases++; NumAliases++;
} }

View File

@ -46,6 +46,7 @@ void llvm::initializeIPO(PassRegistry &Registry) {
initializeStripDeadDebugInfoPass(Registry); initializeStripDeadDebugInfoPass(Registry);
initializeStripNonDebugSymbolsPass(Registry); initializeStripNonDebugSymbolsPass(Registry);
initializeBarrierNoopPass(Registry); initializeBarrierNoopPass(Registry);
initializeEliminateAvailableExternallyPass(Registry);
} }
void LLVMInitializeIPO(LLVMPassRegistryRef R) { void LLVMInitializeIPO(LLVMPassRegistryRef R) {

View File

@ -0,0 +1,11 @@
; RUN: opt -elim-avail-extern -S < %s | FileCheck %s
; CHECK: declare hidden void @f()
define available_externally hidden void @f() {
ret void
}
define void @g() {
call void @f()
ret void
}