summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/GlobalOpt
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-06-25 14:30:31 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-06-25 14:30:31 +0000
commit540c3d23df1fa0c0e369be768e9ff08bd87799ae (patch)
tree3828e23886b338b7c42bd10e0304bcfb2897bd60 /llvm/test/Transforms/GlobalOpt
parent9ed4f506bb8aac05286828402d3602959420af21 (diff)
downloadbcm5719-llvm-540c3d23df1fa0c0e369be768e9ff08bd87799ae.tar.gz
bcm5719-llvm-540c3d23df1fa0c0e369be768e9ff08bd87799ae.zip
If a constant or a function has linkonce_odr linkage and unnamed_addr, mark it
hidden. Being linkonce_odr guarantees that it is available in every dso that needs it. Being a constant/function with unnamed_addr guarantees that the copies don't have to be merged. llvm-svn: 159136
Diffstat (limited to 'llvm/test/Transforms/GlobalOpt')
-rw-r--r--llvm/test/Transforms/GlobalOpt/hidden.ll14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/Transforms/GlobalOpt/hidden.ll b/llvm/test/Transforms/GlobalOpt/hidden.ll
new file mode 100644
index 00000000000..301e158d534
--- /dev/null
+++ b/llvm/test/Transforms/GlobalOpt/hidden.ll
@@ -0,0 +1,14 @@
+; RUN: opt %s -globalopt -S | FileCheck %s
+
+@foo = linkonce_odr unnamed_addr constant i32 42
+; CHECK: @foo = linkonce_odr hidden unnamed_addr constant i32 42
+
+define linkonce_odr void @bar() unnamed_addr {
+; CHECK: define linkonce_odr hidden void @bar() unnamed_addr {
+ ret void
+}
+
+define i32* @zed() {
+ call void @bar()
+ ret i32* @foo
+}
OpenPOWER on IntegriCloud