Don't change the visibility when converting a definition to a declaration.
llvm-svn: 242030
diff --git a/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp b/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp
index 1566e85..e70ab87 100644
--- a/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp
+++ b/llvm/lib/Transforms/IPO/ElimAvailExtern.cpp
@@ -67,7 +67,6 @@
}
I->removeDeadConstantUsers();
I->setLinkage(GlobalValue::ExternalLinkage);
- I->setVisibility(GlobalValue::DefaultVisibility);
NumVariables++;
}
@@ -78,7 +77,6 @@
if (!I->isDeclaration())
// This will set the linkage to external
I->deleteBody();
- I->setVisibility(GlobalValue::DefaultVisibility);
I->removeDeadConstantUsers();
NumFunctions++;
}
@@ -91,7 +89,6 @@
I->setAliasee(nullptr);
I->removeDeadConstantUsers();
I->setLinkage(GlobalValue::ExternalLinkage);
- I->setVisibility(GlobalValue::DefaultVisibility);
NumAliases++;
}
diff --git a/llvm/lib/Transforms/IPO/IPO.cpp b/llvm/lib/Transforms/IPO/IPO.cpp
index fcacec3..50f56b0 100644
--- a/llvm/lib/Transforms/IPO/IPO.cpp
+++ b/llvm/lib/Transforms/IPO/IPO.cpp
@@ -46,6 +46,7 @@
initializeStripDeadDebugInfoPass(Registry);
initializeStripNonDebugSymbolsPass(Registry);
initializeBarrierNoopPass(Registry);
+ initializeEliminateAvailableExternallyPass(Registry);
}
void LLVMInitializeIPO(LLVMPassRegistryRef R) {