[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / Internalize / lists.ll
blob548c8aa267b5c6b2a370d38031f94c785acab942
1 ; No arguments means internalize everything
2 ; RUN: opt < %s -internalize -S | FileCheck --check-prefix=ALL %s
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
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
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
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
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
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
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
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
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
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