brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 8b81a90 Raw
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