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() { 32define 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() { 40define 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() { 48define 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() { 56define dllexport void @export_foo() { 57 ret void 58} 59 60