xref: /llvm-project/llvm/test/Transforms/Inline/implicit-null-check.ll (revision 291223409c6139b5d56efc769088e23ecee44faf)
1*29122340SDenis Antrushin; RUN: opt -passes=inline -inline-threshold=10 -S < %s | FileCheck %s
2*29122340SDenis Antrushin
3*29122340SDenis Antrushindeclare void @foo()
4*29122340SDenis Antrushin
5*29122340SDenis Antrushin; CHECK-LABEL: @caller
6*29122340SDenis Antrushin; CHECK-NOT:   %res = call i64 @callee(ptr %p)
7*29122340SDenis Antrushindefine i64 @caller(ptr %p) {
8*29122340SDenis Antrushin  %res = call i64 @callee(ptr %p)
9*29122340SDenis Antrushin  ret i64 %res
10*29122340SDenis Antrushin}
11*29122340SDenis Antrushin
12*29122340SDenis Antrushindefine i64 @callee(ptr %p) {
13*29122340SDenis Antrushin  %null_check = icmp eq ptr %p, null
14*29122340SDenis Antrushin  br i1 %null_check, label %is_null, label %non_null, !make.implicit !0
15*29122340SDenis Antrushin
16*29122340SDenis Antrushinis_null:
17*29122340SDenis Antrushin  call void @foo()
18*29122340SDenis Antrushin  ret i64 0
19*29122340SDenis Antrushin
20*29122340SDenis Antrushinnon_null:
21*29122340SDenis Antrushin  ret i64 1
22*29122340SDenis Antrushin}
23*29122340SDenis Antrushin
24*29122340SDenis Antrushin!0 = !{}
25