| ; Check that @callee1 gets inlined while @callee2 is not, because of | |
| ; SemanticInterposition. | |
| ; RUN: opt < %s -passes=inline -S | FileCheck %s | |
| define internal i32 @callee1(i32 %A) { | |
| ret i32 %A | |
| } | |
| define i32 @callee2(i32 %A) { | |
| ret i32 %A | |
| } | |
| ; CHECK-LABEL: @caller | |
| define i32 @caller(i32 %A) { | |
| ; CHECK-NOT: call i32 @callee1(i32 %A) | |
| %A1 = call i32 @callee1(i32 %A) | |
| ; CHECK: %A2 = call i32 @callee2(i32 %A) | |
| %A2 = call i32 @callee2(i32 %A) | |
| ; CHECK: add i32 %A, %A2 | |
| %R = add i32 %A1, %A2 | |
| ret i32 %R | |
| } | |
| !llvm.module.flags = !{!0} | |
| !0 = !{i32 1, !"SemanticInterposition", i32 1} |