]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Transforms/Internalize/lists.ll
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / test / Transforms / Internalize / lists.ll
1 ; No arguments means internalize everything
2 ; RUN: opt < %s -internalize -S | FileCheck --check-prefix=ALL %s
3
4 ; Non-existent files should be treated as if they were empty (so internalize
5 ; everything)
6 ; RUN: opt < %s -internalize -internalize-public-api-file /nonexistent/file 2> /dev/null -S | FileCheck --check-prefix=ALL %s
7
8 ; Internalize all but foo and j
9 ; RUN: opt < %s -internalize -internalize-public-api-list foo -internalize-public-api-list j -S | FileCheck --check-prefix=FOO_AND_J %s
10
11 ; 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
12
13 ; -file and -list options should be merged, the apifile contains foo and j
14 ; RUN: opt < %s -internalize -internalize-public-api-list bar -internalize-public-api-file %S/apifile -S | FileCheck --check-prefix=FOO_J_AND_BAR %s
15
16 ; ALL: @i = internal global
17 ; FOO_AND_J: @i = internal global
18 ; FOO_AND_BAR: @i = internal global
19 ; FOO_J_AND_BAR: @i = internal global
20 @i = global i32 0
21
22 ; ALL: @j = internal global
23 ; FOO_AND_J: @j = global
24 ; FOO_AND_BAR: @j = internal global
25 ; FOO_J_AND_BAR: @j = global
26 @j = global i32 0
27
28 ; ALL: define internal void @main() {
29 ; FOO_AND_J: define internal void @main() {
30 ; FOO_AND_BAR: define internal void @main() {
31 ; FOO_J_AND_BAR: define internal void @main() {
32 define void @main() {
33         ret void
34 }
35
36 ; ALL: define internal void @foo() {
37 ; FOO_AND_J: define void @foo() {
38 ; FOO_AND_BAR: define void @foo() {
39 ; FOO_J_AND_BAR: define void @foo() {
40 define void @foo() {
41         ret void
42 }
43
44 ; ALL: define available_externally void @bar() {
45 ; FOO_AND_J: define available_externally void @bar() {
46 ; FOO_AND_BAR: define available_externally void @bar() {
47 ; FOO_J_AND_BAR: define available_externally void @bar() {
48 define available_externally void @bar() {
49   ret void
50 }
51
52 ; ALL: define dllexport void @export_foo() {
53 ; FOO_AND_J: define dllexport void @export_foo() {
54 ; FOO_AND_BAR: define dllexport void @export_foo() {
55 ; FOO_J_AND_BAR: define dllexport void @export_foo() {
56 define dllexport void @export_foo() {
57   ret void
58 }
59