summaryrefslogtreecommitdiffstats
path: root/llvm/test/Bitcode
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-05-07 22:57:20 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-05-07 22:57:20 +0000
commitb80de1012ae346786dbb019ed6bdf8ba8820d8ab (patch)
treecefe0c88c0db0714dd993397bfcc0685254cd7c1 /llvm/test/Bitcode
parentb2becfdbaee499538f4d1c8aa514daa29e3c6b6d (diff)
downloadbcm5719-llvm-b80de1012ae346786dbb019ed6bdf8ba8820d8ab.tar.gz
bcm5719-llvm-b80de1012ae346786dbb019ed6bdf8ba8820d8ab.zip
IR: Don't allow non-default visibility on local linkage
Visibilities of `hidden` and `protected` are meaningless for symbols with local linkage. - Change the assembler to reject non-default visibility on symbols with local linkage. - Change the bitcode reader to auto-upgrade `hidden` and `protected` to `default` when the linkage is local. - Update LangRef. <rdar://problem/16141113> llvm-svn: 208263
Diffstat (limited to 'llvm/test/Bitcode')
-rw-r--r--llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll79
-rw-r--r--llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll.bcbin0 -> 924 bytes
2 files changed, 79 insertions, 0 deletions
diff --git a/llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll b/llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll
new file mode 100644
index 00000000000..45a7b1213a8
--- /dev/null
+++ b/llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll
@@ -0,0 +1,79 @@
+; RUN: llvm-dis < %s.bc | FileCheck %s
+
+; local-linkage-default-visibility.3.4.ll.bc was generated by passing this file
+; to llvm-as-3.4. The test checks that LLVM upgrades visibility of symbols
+; with local linkage to default visibility.
+
+@default.internal.var = internal global i32 0
+; CHECK: @default.internal.var = internal global i32 0
+
+@hidden.internal.var = internal hidden global i32 0
+; CHECK: @hidden.internal.var = internal global i32 0
+
+@protected.internal.var = internal protected global i32 0
+; CHECK: @protected.internal.var = internal global i32 0
+
+@default.private.var = private global i32 0
+; CHECK: @default.private.var = private global i32 0
+
+@hidden.private.var = private hidden global i32 0
+; CHECK: @hidden.private.var = private global i32 0
+
+@protected.private.var = private protected global i32 0
+; CHECK: @protected.private.var = private global i32 0
+
+@global = global i32 0
+
+@default.internal.alias = alias internal i32* @global
+; CHECK: @default.internal.alias = alias internal i32* @global
+
+@hidden.internal.alias = hidden alias internal i32* @global
+; CHECK: @hidden.internal.alias = alias internal i32* @global
+
+@protected.internal.alias = protected alias internal i32* @global
+; CHECK: @protected.internal.alias = alias internal i32* @global
+
+@default.private.alias = alias private i32* @global
+; CHECK: @default.private.alias = alias private i32* @global
+
+@hidden.private.alias = hidden alias private i32* @global
+; CHECK: @hidden.private.alias = alias private i32* @global
+
+@protected.private.alias = protected alias private i32* @global
+; CHECK: @protected.private.alias = alias private i32* @global
+
+define internal void @default.internal() {
+; CHECK: define internal void @default.internal
+entry:
+ ret void
+}
+
+define internal hidden void @hidden.internal() {
+; CHECK: define internal void @hidden.internal
+entry:
+ ret void
+}
+
+define internal protected void @protected.internal() {
+; CHECK: define internal void @protected.internal
+entry:
+ ret void
+}
+
+define private void @default.private() {
+; CHECK: define private void @default.private
+entry:
+ ret void
+}
+
+define private hidden void @hidden.private() {
+; CHECK: define private void @hidden.private
+entry:
+ ret void
+}
+
+define private protected void @protected.private() {
+; CHECK: define private void @protected.private
+entry:
+ ret void
+}
diff --git a/llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc b/llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc
new file mode 100644
index 00000000000..6e49f7e365b
--- /dev/null
+++ b/llvm/test/Bitcode/local-linkage-default-visibility.3.4.ll.bc
Binary files differ
OpenPOWER on IntegriCloud