xref: /llvm-project/llvm/test/Transforms/FunctionAttrs/returned.ll (revision 3528e63d89305907b3d6e0f59f7b03b94a12dacc)
1; RUN: opt < %s -passes=function-attrs -S | FileCheck %s
2
3; CHECK: define i32 @test1(i32 %p, i32 %q)
4define i32 @test1(i32 %p, i32 %q) {
5entry:
6  %cmp = icmp sgt i32 %p, %q
7  br i1 %cmp, label %cond.end, label %lor.lhs.false
8
9lor.lhs.false:                                    ; preds = %entry
10  %tobool = icmp ne i32 %p, 0
11  %tobool1 = icmp ne i32 %q, 0
12  %or.cond = and i1 %tobool, %tobool1
13  %p.q = select i1 %or.cond, i32 %p, i32 %q
14  ret i32 %p.q
15
16cond.end:                                         ; preds = %entry
17  ret i32 %p
18}
19
20; CHECK: define i32 @test2(i32 %p1, i32 returned %p2)
21define i32 @test2(i32 %p1, i32 returned %p2) {
22  %_tmp4 = icmp eq i32 %p1, %p2
23  br i1 %_tmp4, label %bb2, label %bb1
24
25bb2:                                              ; preds = %0
26  ret i32 %p1
27
28bb1:                                              ; preds = %bb1, %0
29  br label %bb1
30}
31