42 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 52; RUN: opt -passes=norecurse-lto-inference -S %s | FileCheck %s3 4; This is a negative test which results in RefSCC with size > 1.5; RefSCC : [(f2), (f1)]6; --- SCC A (f1) --- size() = 17define internal void @f1() {8; CHECK-LABEL: define internal void @f1() {9; CHECK-NEXT: call void @f2()10; CHECK-NEXT: ret void11;12 call void @f2()13 ret void14}15 16; --- SCC B (f2) --- size() = 117; f2 indirectly calls f1 using locally allocated function pointer18define internal void @f2() {19; CHECK-LABEL: define internal void @f2() {20; CHECK-NEXT: [[FP:%.*]] = alloca ptr, align 821; CHECK-NEXT: store ptr @f1, ptr [[FP]], align 822; CHECK-NEXT: [[TMP:%.*]] = load ptr, ptr [[FP]], align 823; CHECK-NEXT: call void [[TMP]]()24; CHECK-NEXT: ret void25;26 %fp = alloca void ()*27 store void ()* @f1, void ()** %fp28 %tmp = load void ()*, void ()** %fp29 call void %tmp()30 ret void31}32 33define i32 @main() {34; CHECK-LABEL: define i32 @main() {35; CHECK-NEXT: call void @f1()36; CHECK-NEXT: ret i32 037;38 call void @f1()39 ret i32 040}41 42