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 60