Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / JumpThreading / phi-copy-to-pred.ll
blob17f3b1a3c4c2de139d63e919a8aafe3a3488eb85
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -passes=jump-threading -S < %s | FileCheck %s
4 declare void @f()
5 declare void @g()
6 declare void @h()
8 define i32 @test(i1 %cond, i1 %a, i1 %b) {
9 ; CHECK-LABEL: @test(
10 ; CHECK-NEXT:    br i1 [[COND:%.*]], label [[A:%.*]], label [[C:%.*]]
11 ; CHECK:       A:
12 ; CHECK-NEXT:    call void @f()
13 ; CHECK-NEXT:    br i1 [[A:%.*]], label [[EXIT1:%.*]], label [[EXIT2:%.*]]
14 ; CHECK:       C:
15 ; CHECK-NEXT:    call void @g()
16 ; CHECK-NEXT:    br i1 [[B:%.*]], label [[EXIT1]], label [[EXIT2]]
17 ; CHECK:       EXIT1:
18 ; CHECK-NEXT:    ret i32 0
19 ; CHECK:       EXIT2:
20 ; CHECK-NEXT:    ret i32 1
22   br i1 %cond, label %A, label %B
24   call void @f()
25   br label %C
27   call void @g()
28   br label %C
30   %p = phi i1 [%a, %A], [%b, %B] ; Check that this is removed
31   br i1 %p, label %EXIT1, label %EXIT2
32 EXIT1:
33   ret i32 0
34 EXIT2:
35   ret i32 1
38 define i32 @test2(i1 %cond, i1 %a, i1 %b) {
39 ; CHECK-LABEL: @test2(
40 ; CHECK-NEXT:    br i1 [[COND:%.*]], label [[A:%.*]], label [[C:%.*]]
41 ; CHECK:       A:
42 ; CHECK-NEXT:    call void @f()
43 ; CHECK-NEXT:    [[P_FR1:%.*]] = freeze i1 [[A:%.*]]
44 ; CHECK-NEXT:    br i1 [[P_FR1]], label [[EXIT1:%.*]], label [[EXIT2:%.*]]
45 ; CHECK:       C:
46 ; CHECK-NEXT:    call void @g()
47 ; CHECK-NEXT:    [[P_FR:%.*]] = freeze i1 [[B:%.*]]
48 ; CHECK-NEXT:    br i1 [[P_FR]], label [[EXIT1]], label [[EXIT2]]
49 ; CHECK:       EXIT1:
50 ; CHECK-NEXT:    ret i32 0
51 ; CHECK:       EXIT2:
52 ; CHECK-NEXT:    ret i32 1
54   br i1 %cond, label %A, label %B
56   call void @f()
57   br label %C
59   call void @g()
60   br label %C
62   %p = phi i1 [%a, %A], [%b, %B] ; Check that this is removed
63   %p.fr = freeze i1 %p
64   br i1 %p.fr, label %EXIT1, label %EXIT2
65 EXIT1:
66   ret i32 0
67 EXIT2:
68   ret i32 1