; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -passes=argpromotion,inline -S %s | FileCheck %s ; argpromo removes @b's parameter (removing @c's reference to @a without updating the ref edge in the call graph), then the inliner inlines @a into @d and attempts to remove @a. define internal void @a() alwaysinline { call void @e(ptr @c) ret void } define internal void @b(ptr) noinline { ; CHECK-LABEL: @b( ; CHECK-NEXT: ret void ; ret void } define internal void @c() noinline { ; CHECK-LABEL: @c( ; CHECK-NEXT: call void @b() ; CHECK-NEXT: ret void ; call void @b(ptr @a) ret void } define void @d() { ; CHECK-LABEL: @d( ; CHECK-NEXT: call void @e(ptr @c) ; CHECK-NEXT: ret void ; call void @a() ret void } declare void @e(ptr);