1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| ; RUN: opt < %s -instcombine -S | FileCheck %s
|
| ; InstCombine should mark null-checked argument as nonnull at callsite
| declare void @dummy(i32*, i32)
|
| define void @test(i32* %a, i32 %b) {
| ; CHECK-LABEL: @test
| ; CHECK: call void @dummy(i32* nonnull %a, i32 %b)
| entry:
| %cond1 = icmp eq i32* %a, null
| br i1 %cond1, label %dead, label %not_null
| not_null:
| %cond2 = icmp eq i32 %b, 0
| br i1 %cond2, label %dead, label %not_zero
| not_zero:
| call void @dummy(i32* %a, i32 %b)
| ret void
| dead:
| unreachable
| }
|
|