diff options
| author | Eric Christopher <echristo@gmail.com> | 2019-04-17 04:52:47 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@gmail.com> | 2019-04-17 04:52:47 +0000 |
| commit | cee313d288a4faf0355d76fb6e0e927e211d08a5 (patch) | |
| tree | d386075318d761197779a96e5d8fc0dc7b06342b /llvm/test/Transforms/Internalize | |
| parent | c3d6a929fdd92fd06d4304675ade8d7210ee711a (diff) | |
| download | bcm5719-llvm-cee313d288a4faf0355d76fb6e0e927e211d08a5.tar.gz bcm5719-llvm-cee313d288a4faf0355d76fb6e0e927e211d08a5.zip | |
Revert "Temporarily Revert "Add basic loop fusion pass.""
The reversion apparently deleted the test/Transforms directory.
Will be re-reverting again.
llvm-svn: 358552
Diffstat (limited to 'llvm/test/Transforms/Internalize')
| -rw-r--r-- | llvm/test/Transforms/Internalize/2009-01-05-InternalizeAliases.ll | 17 | ||||
| -rw-r--r-- | llvm/test/Transforms/Internalize/apifile | 2 | ||||
| -rw-r--r-- | llvm/test/Transforms/Internalize/comdat.ll | 52 | ||||
| -rw-r--r-- | llvm/test/Transforms/Internalize/lists.ll | 59 | ||||
| -rw-r--r-- | llvm/test/Transforms/Internalize/local-visibility.ll | 25 | ||||
| -rw-r--r-- | llvm/test/Transforms/Internalize/stackguard.ll | 9 | ||||
| -rw-r--r-- | llvm/test/Transforms/Internalize/used.ll | 21 |
7 files changed, 185 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Internalize/2009-01-05-InternalizeAliases.ll b/llvm/test/Transforms/Internalize/2009-01-05-InternalizeAliases.ll new file mode 100644 index 00000000000..58f3c1d09cc --- /dev/null +++ b/llvm/test/Transforms/Internalize/2009-01-05-InternalizeAliases.ll @@ -0,0 +1,17 @@ +; RUN: opt < %s -internalize -internalize-public-api-list main -S | FileCheck %s + +@A = global i32 0 +; CHECK: @A = internal global i32 0 + +@B = alias i32, i32* @A +; CHECK: @B = internal alias i32, i32* @A + +@C = alias i32, i32* @A +; CHECK: @C = internal alias i32, i32* @A + +define i32 @main() { + %tmp = load i32, i32* @C + ret i32 %tmp +} + +; CHECK: define i32 @main() { diff --git a/llvm/test/Transforms/Internalize/apifile b/llvm/test/Transforms/Internalize/apifile new file mode 100644 index 00000000000..f6c58b80c1c --- /dev/null +++ b/llvm/test/Transforms/Internalize/apifile @@ -0,0 +1,2 @@ +foo +j diff --git a/llvm/test/Transforms/Internalize/comdat.ll b/llvm/test/Transforms/Internalize/comdat.ll new file mode 100644 index 00000000000..ac536f7eb65 --- /dev/null +++ b/llvm/test/Transforms/Internalize/comdat.ll @@ -0,0 +1,52 @@ +; RUN: opt < %s -internalize -internalize-public-api-list c1 -internalize-public-api-list c2 -internalize-public-api-list c3 -internalize-public-api-list c4 -S | FileCheck %s + +$c1 = comdat any +$c2 = comdat any +$c3 = comdat any +$c4 = comdat any + +; CHECK: @c1_c = global i32 0, comdat($c1) +@c1_c = global i32 0, comdat($c1) + +; CHECK: @c2_b = internal global i32 0{{$}} +@c2_b = global i32 0, comdat($c2) + +; CHECK: @c3 = global i32 0, comdat{{$}} +@c3 = global i32 0, comdat + +; CHECK: @c4_a = internal global i32 0, comdat($c4) +@c4_a = internal global i32 0, comdat($c4) + +; CHECK: @c1_d = alias i32, i32* @c1_c +@c1_d = alias i32, i32* @c1_c + +; CHECK: @c2_c = internal alias i32, i32* @c2_b +@c2_c = alias i32, i32* @c2_b + +; CHECK: @c4 = alias i32, i32* @c4_a +@c4 = alias i32, i32* @c4_a + +; CHECK: define void @c1() comdat { +define void @c1() comdat { + ret void +} + +; CHECK: define void @c1_a() comdat($c1) { +define void @c1_a() comdat($c1) { + ret void +} + +; CHECK: define internal void @c2() { +define internal void @c2() comdat { + ret void +} + +; CHECK: define internal void @c2_a() { +define void @c2_a() comdat($c2) { + ret void +} + +; CHECK: define void @c3_a() comdat($c3) { +define void @c3_a() comdat($c3) { + ret void +} diff --git a/llvm/test/Transforms/Internalize/lists.ll b/llvm/test/Transforms/Internalize/lists.ll new file mode 100644 index 00000000000..548c8aa267b --- /dev/null +++ b/llvm/test/Transforms/Internalize/lists.ll @@ -0,0 +1,59 @@ +; No arguments means internalize everything +; RUN: opt < %s -internalize -S | FileCheck --check-prefix=ALL %s + +; Non-existent files should be treated as if they were empty (so internalize +; everything) +; RUN: opt < %s -internalize -internalize-public-api-file /nonexistent/file 2> /dev/null -S | FileCheck --check-prefix=ALL %s + +; Internalize all but foo and j +; RUN: opt < %s -internalize -internalize-public-api-list foo -internalize-public-api-list j -S | FileCheck --check-prefix=FOO_AND_J %s + +; RUN: opt < %s -S -internalize -internalize-public-api-list bar -internalize-public-api-list foo -internalize-public-api-file /nonexistent/file 2> /dev/null | FileCheck --check-prefix=FOO_AND_BAR %s + +; -file and -list options should be merged, the apifile contains foo and j +; RUN: opt < %s -internalize -internalize-public-api-list bar -internalize-public-api-file %S/apifile -S | FileCheck --check-prefix=FOO_J_AND_BAR %s + +; ALL: @i = internal global +; FOO_AND_J: @i = internal global +; FOO_AND_BAR: @i = internal global +; FOO_J_AND_BAR: @i = internal global +@i = global i32 0 + +; ALL: @j = internal global +; FOO_AND_J: @j = global +; FOO_AND_BAR: @j = internal global +; FOO_J_AND_BAR: @j = global +@j = global i32 0 + +; ALL: define internal void @main() { +; FOO_AND_J: define internal void @main() { +; FOO_AND_BAR: define internal void @main() { +; FOO_J_AND_BAR: define internal void @main() { +define void @main() { + ret void +} + +; ALL: define internal void @foo() { +; FOO_AND_J: define void @foo() { +; FOO_AND_BAR: define void @foo() { +; FOO_J_AND_BAR: define void @foo() { +define void @foo() { + ret void +} + +; ALL: define available_externally void @bar() { +; FOO_AND_J: define available_externally void @bar() { +; FOO_AND_BAR: define available_externally void @bar() { +; FOO_J_AND_BAR: define available_externally void @bar() { +define available_externally void @bar() { + ret void +} + +; ALL: define dllexport void @export_foo() { +; FOO_AND_J: define dllexport void @export_foo() { +; FOO_AND_BAR: define dllexport void @export_foo() { +; FOO_J_AND_BAR: define dllexport void @export_foo() { +define dllexport void @export_foo() { + ret void +} + diff --git a/llvm/test/Transforms/Internalize/local-visibility.ll b/llvm/test/Transforms/Internalize/local-visibility.ll new file mode 100644 index 00000000000..0d73f21972a --- /dev/null +++ b/llvm/test/Transforms/Internalize/local-visibility.ll @@ -0,0 +1,25 @@ +; RUN: opt < %s -internalize -S | FileCheck %s +; Internalized symbols should have default visibility. + +; CHECK: @global = global i32 0 +@global = global i32 0 +@llvm.used = appending global [1 x i32*] [i32* @global] + +; CHECK: @hidden.variable = internal global i32 0 +@hidden.variable = hidden global i32 0 +; CHECK: @protected.variable = internal global i32 0 +@protected.variable = protected global i32 0 + +; CHECK: @hidden.alias = internal alias i32, i32* @global +@hidden.alias = hidden alias i32, i32* @global +; CHECK: @protected.alias = internal alias i32, i32* @global +@protected.alias = protected alias i32, i32* @global + +; CHECK: define internal void @hidden.function() { +define hidden void @hidden.function() { + ret void +} +; CHECK: define internal void @protected.function() { +define protected void @protected.function() { + ret void +} diff --git a/llvm/test/Transforms/Internalize/stackguard.ll b/llvm/test/Transforms/Internalize/stackguard.ll new file mode 100644 index 00000000000..e9dc6cc2365 --- /dev/null +++ b/llvm/test/Transforms/Internalize/stackguard.ll @@ -0,0 +1,9 @@ +; __stack_chk_guard and __stack_chk_fail should not be internalized. +; RUN: opt < %s -internalize -S | FileCheck %s +; RUN: opt < %s -passes=internalize -S | FileCheck %s + +; CHECK: @__stack_chk_guard = hidden global [8 x i64] zeroinitializer, align 16 +@__stack_chk_guard = hidden global [8 x i64] zeroinitializer, align 16 + +; CHECK: @__stack_chk_fail = hidden global [8 x i64] zeroinitializer, align 16 +@__stack_chk_fail = hidden global [8 x i64] zeroinitializer, align 16 diff --git a/llvm/test/Transforms/Internalize/used.ll b/llvm/test/Transforms/Internalize/used.ll new file mode 100644 index 00000000000..7c1c7413d46 --- /dev/null +++ b/llvm/test/Transforms/Internalize/used.ll @@ -0,0 +1,21 @@ +; RUN: opt < %s -internalize -S | FileCheck %s +; RUN: opt < %s -passes=internalize -S | FileCheck %s + +@llvm.used = appending global [1 x void ()*] [void ()* @f], section "llvm.metadata" + +@llvm.compiler.used = appending global [1 x void ()*] [void ()* @g], section "llvm.metadata" + +; CHECK: define void @f() +define void @f() { + ret void +} + +; CHECK: define internal void @g() +define void @g() { + ret void +} + +; CHECK: define internal void @h() +define void @h() { + ret void +} |

