Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / SimplifyCFG / SimplifyTerminatorOnSelect-domtree-preservation-edgecase.ll
blobd8ad40c876d69ccfb793481119847e4f8778a890
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -S -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s
4 declare void @widget()
5 declare void @baz(i8)
6 declare void @snork()
7 declare void @spam(i8)
8 declare void @zot()
10 define void @wombat(i64 %arg, i1 %arg1) {
11 ; CHECK-LABEL: @wombat(
12 ; CHECK-NEXT:  bb:
13 ; CHECK-NEXT:    [[COND:%.*]] = icmp eq i64 [[ARG:%.*]], 0
14 ; CHECK-NEXT:    br i1 [[COND]], label [[BB4:%.*]], label [[BB2:%.*]]
15 ; CHECK:       bb2:
16 ; CHECK-NEXT:    call void @widget()
17 ; CHECK-NEXT:    br label [[BB4]]
18 ; CHECK:       bb4:
19 ; CHECK-NEXT:    [[TMP:%.*]] = phi i8 [ 0, [[BB:%.*]] ], [ 1, [[BB2]] ]
20 ; CHECK-NEXT:    call void @baz(i8 [[TMP]])
21 ; CHECK-NEXT:    call void @snork()
22 ; CHECK-NEXT:    call void @spam(i8 4)
23 ; CHECK-NEXT:    ret void
25 bb:
26   switch i64 %arg, label %bb2 [
27   i64 0, label %bb3
28   ]
30 bb2:                                              ; preds = %bb
31   call void @widget()
32   br label %bb3
34 bb3:                                              ; preds = %bb2, %bb
35   %tmp = phi i8 [ 0, %bb ], [ 1, %bb2 ]
36   br label %bb4
38 bb4:                                              ; preds = %bb3
39   call void @baz(i8 %tmp)
40   %tmp5 = select i1 %arg1, i64 6, i64 3
41   switch i64 %tmp5, label %bb7 [
42   i64 1, label %bb6
43   i64 0, label %bb8
44   ]
46 bb6:                                              ; preds = %bb4
47   call void @zot()
48   br label %bb8
50 bb7:                                              ; preds = %bb4
51   call void @snork()
52   br label %bb8
54 bb8:                                              ; preds = %bb7, %bb6, %bb4
55   %tmp9 = phi i8 [ 2, %bb4 ], [ 3, %bb6 ], [ 4, %bb7 ]
56   call void @spam(i8 %tmp9)
57   ret void