diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-06-25 14:30:31 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-06-25 14:30:31 +0000 |
| commit | 540c3d23df1fa0c0e369be768e9ff08bd87799ae (patch) | |
| tree | 3828e23886b338b7c42bd10e0304bcfb2897bd60 /llvm/test/Transforms/GlobalOpt | |
| parent | 9ed4f506bb8aac05286828402d3602959420af21 (diff) | |
| download | bcm5719-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.ll | 14 |
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 +} |

