| ; RUN: opt -passes=inline -S < %s | FileCheck %s | |
| ; Ensure `noipa` does _not_ control inlining. The `noipa` attribute controls | |
| ; _other_ interprocedural optimisations by affecting the result of | |
| ; `isInterposable` and `isDefinitionExact` checks, but inlining is | |
| ; controlled separately by the `noinline` attribute. | |
| define internal i32 @noipa(i32 %x) noipa { | |
| ret i32 %x | |
| } | |
| define internal i32 @noipa_noinline(i32 %x) noipa noinline { | |
| ret i32 %x | |
| } | |
| define i32 @bob() { | |
| %a = call i32 @noipa(i32 1) | |
| %b = call i32 @noipa_noinline(i32 %a) | |
| ret i32 %b | |
| } | |
| ; CHECK-NOT: call i32 @noipa( | |
| ; CHECK: call i32 @noipa_noinline( |