; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --check-globals all --version 5 ; RUN: opt -passes=norecurse-lto-inference -S %s | FileCheck %s ; This is a negative test which results in RefSCC with size > 1. ; RefSCC : [(f2), (f1)] ; --- SCC A (f1) --- size() = 1 define internal void @f1() { ; CHECK-LABEL: define internal void @f1() { ; CHECK-NEXT: call void @f2() ; CHECK-NEXT: ret void ; call void @f2() ret void } ; --- SCC B (f2) --- size() = 1 ; f2 indirectly calls f1 using locally allocated function pointer define internal void @f2() { ; CHECK-LABEL: define internal void @f2() { ; CHECK-NEXT: [[FP:%.*]] = alloca ptr, align 8 ; CHECK-NEXT: store ptr @f1, ptr [[FP]], align 8 ; CHECK-NEXT: [[TMP:%.*]] = load ptr, ptr [[FP]], align 8 ; CHECK-NEXT: call void [[TMP]]() ; CHECK-NEXT: ret void ; %fp = alloca void ()* store void ()* @f1, void ()** %fp %tmp = load void ()*, void ()** %fp call void %tmp() ret void } define i32 @main() { ; CHECK-LABEL: define i32 @main() { ; CHECK-NEXT: call void @f1() ; CHECK-NEXT: ret i32 0 ; call void @f1() ret i32 0 }