66 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: -p --function-signature2; RUN: opt -passes=deadargelim -S < %s | FileCheck %s3 4define internal i32 @test_caller(ptr %fptr, i32 %a, i32 %b) {5; CHECK-LABEL: define {{[^@]+}}@test_caller(ptr %fptr, i32 %a, i32 %b) {6; CHECK-NEXT: %r = musttail call i32 @test(ptr %fptr, i32 %a, i32 poison)7; CHECK-NEXT: ret i32 %r8;9 %r = musttail call i32 @test(ptr %fptr, i32 %a, i32 %b)10 ret i32 %r11}12 13define internal i32 @test(ptr %fptr, i32 %a, i32 %b) {14; CHECK-LABEL: define {{[^@]+}}@test(ptr %fptr, i32 %a, i32 %b) {15; CHECK-NEXT: %r = musttail call i32 %fptr(ptr %fptr, i32 %a, i32 0)16; CHECK-NEXT: ret i32 %r17;18 %r = musttail call i32 %fptr(ptr %fptr, i32 %a, i32 0)19 ret i32 %r20}21 22define internal i32 @direct_test() {23; CHECK-LABEL: define {{[^@]+}}@direct_test() {24; CHECK-NEXT: %r = musttail call i32 @foo()25; CHECK-NEXT: ret i32 %r26;27 %r = musttail call i32 @foo()28 ret i32 %r29}30 31declare i32 @foo()32 33define internal i32 @ping(i32 %x) {34; CHECK-LABEL: define {{[^@]+}}@ping(i32 %x) {35; CHECK-NEXT: %r = musttail call i32 @pong(i32 %x)36; CHECK-NEXT: ret i32 %r37;38 %r = musttail call i32 @pong(i32 %x)39 ret i32 %r40}41 42define internal i32 @pong(i32 %x) {43; CHECK-LABEL: define {{[^@]+}}@pong(i32 %x) {44; CHECK-NEXT: %cond = icmp eq i32 %x, 245; CHECK-NEXT: br i1 %cond, label %yes, label %no46; CHECK: yes:47; CHECK-NEXT: %r1 = musttail call i32 @ping(i32 %x)48; CHECK-NEXT: ret i32 %r149; CHECK: no:50; CHECK-NEXT: %r2 = musttail call i32 @bar(i32 %x)51; CHECK-NEXT: ret i32 %r252;53 %cond = icmp eq i32 %x, 254 br i1 %cond, label %yes, label %no55 56yes:57 %r1 = musttail call i32 @ping(i32 %x)58 ret i32 %r159no:60 %r2 = musttail call i32 @bar(i32 %x)61 ret i32 %r262}63 64declare i32 @bar(i32 %x)65 66