; RUN: opt < %s -inline -S | FileCheck %s ; Check that functions with "returns_twice" calls are only inlined, ; if they are themselve marked as such. declare i32 @a() returns_twice declare i32 @b() returns_twice define i32 @f() { entry: %call = call i32 @a() returns_twice %add = add nsw i32 1, %call ret i32 %add } define i32 @g() { entry: ; CHECK: define i32 @g ; CHECK: call i32 @f() ; CHECK-NOT: call i32 @a() %call = call i32 @f() %add = add nsw i32 1, %call ret i32 %add } define i32 @h() returns_twice { entry: %call = call i32 @b() returns_twice %add = add nsw i32 1, %call ret i32 %add } define i32 @i() { entry: ; CHECK: define i32 @i ; CHECK: call i32 @b() ; CHECK-NOT: call i32 @h() %call = call i32 @h() returns_twice %add = add nsw i32 1, %call ret i32 %add }