summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Transforms/IPO/FunctionImport.cpp5
-rw-r--r--llvm/test/ThinLTO/X86/Inputs/alias_import.ll2
-rw-r--r--llvm/test/ThinLTO/X86/alias_import.ll8
3 files changed, 8 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/IPO/FunctionImport.cpp b/llvm/lib/Transforms/IPO/FunctionImport.cpp
index 71a76a6a67c..9207f5fe0ef 100644
--- a/llvm/lib/Transforms/IPO/FunctionImport.cpp
+++ b/llvm/lib/Transforms/IPO/FunctionImport.cpp
@@ -1053,9 +1053,10 @@ static Function *replaceAliasWithAliasee(Module *SrcModule, GlobalAlias *GA) {
ValueToValueMapTy VMap;
Function *NewFn = CloneFunction(Fn, VMap);
- // Clone should use the original alias's linkage and name, and we ensure
- // all uses of alias instead use the new clone (casted if necessary).
+ // Clone should use the original alias's linkage, visibility and name, and we
+ // ensure all uses of alias instead use the new clone (casted if necessary).
NewFn->setLinkage(GA->getLinkage());
+ NewFn->setVisibility(GA->getVisibility());
GA->replaceAllUsesWith(ConstantExpr::getBitCast(NewFn, GA->getType()));
NewFn->takeName(GA);
return NewFn;
diff --git a/llvm/test/ThinLTO/X86/Inputs/alias_import.ll b/llvm/test/ThinLTO/X86/Inputs/alias_import.ll
index 7425f23fd3f..740ab4baa35 100644
--- a/llvm/test/ThinLTO/X86/Inputs/alias_import.ll
+++ b/llvm/test/ThinLTO/X86/Inputs/alias_import.ll
@@ -5,7 +5,7 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
@globalfuncLinkonceAlias = linkonce alias void (...), bitcast (void ()* @globalfunc to void (...)*)
@globalfuncWeakODRAlias = weak_odr alias void (...), bitcast (void ()* @globalfunc to void (...)*)
@globalfuncLinkonceODRAlias = linkonce_odr alias void (...), bitcast (void ()* @globalfunc to void (...)*)
-define void @globalfunc() {
+define hidden void @globalfunc() {
entry:
ret void
}
diff --git a/llvm/test/ThinLTO/X86/alias_import.ll b/llvm/test/ThinLTO/X86/alias_import.ll
index af131e145bb..6c6716a958d 100644
--- a/llvm/test/ThinLTO/X86/alias_import.ll
+++ b/llvm/test/ThinLTO/X86/alias_import.ll
@@ -38,7 +38,7 @@
; PROMOTE-DAG: @linkonceODRfuncLinkonceAlias = weak alias void (...), bitcast (void ()* @linkonceODRfunc to void (...)*)
; PROMOTE-DAG: @linkonceODRfuncLinkonceODRAlias = weak_odr alias void (...), bitcast (void ()* @linkonceODRfunc to void (...)*)
-; PROMOTE-DAG: define void @globalfunc()
+; PROMOTE-DAG: define hidden void @globalfunc()
; PROMOTE-DAG: define internal void @internalfunc()
; PROMOTE-DAG: define weak_odr void @linkonceODRfunc()
; PROMOTE-DAG: define weak_odr void @weakODRfunc()
@@ -52,11 +52,11 @@
; IMPORT-DAG: define available_externally void @linkonceODRfuncAlias
; IMPORT-DAG: define available_externally void @linkonceODRfuncWeakODRAlias
; IMPORT-DAG: define available_externally void @linkonceODRfuncLinkonceODRAlias
-; IMPORT-DAG: define available_externally void @globalfuncAlias()
+; IMPORT-DAG: define available_externally dso_local void @globalfuncAlias()
; IMPORT-DAG: declare void @globalfuncWeakAlias()
; IMPORT-DAG: declare void @globalfuncLinkonceAlias()
-; IMPORT-DAG: define available_externally void @globalfuncWeakODRAlias()
-; IMPORT-DAG: define available_externally void @globalfuncLinkonceODRAlias()
+; IMPORT-DAG: define available_externally dso_local void @globalfuncWeakODRAlias()
+; IMPORT-DAG: define available_externally dso_local void @globalfuncLinkonceODRAlias()
; IMPORT-DAG: define available_externally dso_local void @internalfuncAlias()
; IMPORT-DAG: declare void @internalfuncWeakAlias()
; IMPORT-DAG: declare void @internalfuncLinkonceAlias()
OpenPOWER on IntegriCloud