[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / Transforms / Inline / inline-history-noinline.ll
blob742bd25ecd9bb9507c97db5ca9175e3dc6f10cf0
1 ; RUN: opt -passes=inline -S < %s | FileCheck %s
3 ; This will inline @f1 into @a, causing two new calls to @f2, which will get inlined for two calls to @f1.
4 ; The inline history should stop recursive inlining here, and make sure to mark the inlined calls as noinline so we don't repeat the inlining later on when @a gets inlined into @b.
6 define internal void @f1(ptr %p) {
7   call void %p(ptr @f1)
8   ret void
11 define internal void @f2(ptr %p) {
12   call void %p(ptr @f2)
13   call void %p(ptr @f2)
14   ret void
17 define void @b() {
18 ; CHECK-LABEL: define void @b() {
19 ; CHECK-NEXT:    call void @f1(ptr @f2) #[[NOINLINE:[0-9]+]]
20 ; CHECK-NEXT:    call void @f1(ptr @f2) #[[NOINLINE]]
21 ; CHECK-NEXT:    ret void
23   call void @a()
24   ret void
27 define internal void @a() {
28   call void @f1(ptr @f2)
29   ret void
32 ; CHECK: [[NOINLINE]] = { noinline }