128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --include-generated-funcs --version 52; RUN: opt -p mergefunc -S %s | FileCheck --implicit-check-not=linkonce_odr_caller_of_foo_2 --implicit-check-not=linkonce_odr_caller_of_foo_1 %s3 4define void @caller_of_callers(ptr %p) {5 call void @linkonce_odr_caller_of_foo_1(ptr %p)6 call void @linkonce_odr_caller_of_foo_2(ptr %p)7 call void @linkonce_odr_caller_of_foo_3(ptr %p)8 9 call void @internal_caller_of_bar_1(ptr %p)10 call void @linkonce_odr_caller_of_bar_2(ptr %p)11 call void @linkonce_odr_caller_of_bar_3(ptr %p)12 13 call void @hidden_caller_of_zar_1(ptr %p)14 call void @linkonce_odr_caller_of_zar_2(ptr %p)15 16 ret void17}18 19define linkonce_odr hidden void @linkonce_odr_caller_of_foo_1(ptr %p) {20entry:21 tail call void @foo(ptr %p)22 tail call void @foo(ptr %p)23 tail call void @foo(ptr %p)24 ret void25}26 27define linkonce_odr hidden void @linkonce_odr_caller_of_foo_2(ptr %p) {28entry:29 tail call void @foo(ptr %p)30 tail call void @foo(ptr %p)31 tail call void @foo(ptr %p)32 ret void33}34 35define linkonce_odr hidden void @linkonce_odr_caller_of_foo_3(ptr %p) {36entry:37 tail call void @foo(ptr %p)38 tail call void @foo(ptr %p)39 tail call void @foo(ptr %p)40 ret void41}42 43declare void @foo(ptr)44 45define internal void @internal_caller_of_bar_1(ptr %p) {46entry:47 tail call void @bar(ptr %p)48 tail call void @bar(ptr %p)49 tail call void @bar(ptr %p)50 ret void51}52 53define linkonce_odr hidden void @linkonce_odr_caller_of_bar_2(ptr %p) {54entry:55 tail call void @bar(ptr %p)56 tail call void @bar(ptr %p)57 tail call void @bar(ptr %p)58 ret void59}60 61define linkonce_odr hidden void @linkonce_odr_caller_of_bar_3(ptr %p) {62entry:63 tail call void @bar(ptr %p)64 tail call void @bar(ptr %p)65 tail call void @bar(ptr %p)66 ret void67}68 69declare void @bar(ptr)70 71define hidden void @hidden_caller_of_zar_1(ptr %p) {72entry:73 tail call void @zar(ptr %p)74 tail call void @zar(ptr %p)75 tail call void @zar(ptr %p)76 ret void77}78 79define linkonce_odr hidden void @linkonce_odr_caller_of_zar_2(ptr %p) {80entry:81 tail call void @zar(ptr %p)82 tail call void @zar(ptr %p)83 tail call void @zar(ptr %p)84 ret void85}86 87declare void @zar(ptr)88 89; CHECK-LABEL: define void @caller_of_callers(90; CHECK-SAME: ptr [[P:%.*]]) {91; CHECK-NEXT: call void @[[GLOB0:[0-9]+]](ptr [[P]])92; CHECK-NEXT: call void @[[GLOB0]](ptr [[P]])93; CHECK-NEXT: call void @[[GLOB0]](ptr [[P]])94; CHECK-NEXT: call void @internal_caller_of_bar_1(ptr [[P]])95; CHECK-NEXT: call void @internal_caller_of_bar_1(ptr [[P]])96; CHECK-NEXT: call void @internal_caller_of_bar_1(ptr [[P]])97; CHECK-NEXT: call void @hidden_caller_of_zar_1(ptr [[P]])98; CHECK-NEXT: call void @hidden_caller_of_zar_1(ptr [[P]])99; CHECK-NEXT: ret void100;101;102; CHECK-LABEL: define private void @0(103; CHECK-SAME: ptr [[P:%.*]]) {104; CHECK-NEXT: [[ENTRY:.*:]]105; CHECK-NEXT: tail call void @foo(ptr [[P]])106; CHECK-NEXT: tail call void @foo(ptr [[P]])107; CHECK-NEXT: tail call void @foo(ptr [[P]])108; CHECK-NEXT: ret void109;110;111; CHECK-LABEL: define internal void @internal_caller_of_bar_1(112; CHECK-SAME: ptr [[P:%.*]]) {113; CHECK-NEXT: [[ENTRY:.*:]]114; CHECK-NEXT: tail call void @bar(ptr [[P]])115; CHECK-NEXT: tail call void @bar(ptr [[P]])116; CHECK-NEXT: tail call void @bar(ptr [[P]])117; CHECK-NEXT: ret void118;119;120; CHECK-LABEL: define hidden void @hidden_caller_of_zar_1(121; CHECK-SAME: ptr [[P:%.*]]) {122; CHECK-NEXT: [[ENTRY:.*:]]123; CHECK-NEXT: tail call void @zar(ptr [[P]])124; CHECK-NEXT: tail call void @zar(ptr [[P]])125; CHECK-NEXT: tail call void @zar(ptr [[P]])126; CHECK-NEXT: ret void127;128