[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / Transforms / Mem2Reg / undef-order.ll
blobb579ffec4a908e713bc5681ecedd12462a47d453
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ;RUN: opt -passes=mem2reg -S < %s | FileCheck %s
4 declare i1 @cond()
6 define i32 @foo() {
7 ; CHECK-LABEL: @foo(
8 ; CHECK-NEXT:  Entry:
9 ; CHECK-NEXT:    [[C1:%.*]] = call i1 @cond()
10 ; CHECK-NEXT:    br i1 [[C1]], label [[STORE1:%.*]], label [[STORE2:%.*]]
11 ; CHECK:       Block1:
12 ; CHECK-NEXT:    br label [[JOIN:%.*]]
13 ; CHECK:       Block2:
14 ; CHECK-NEXT:    br label [[JOIN]]
15 ; CHECK:       Block3:
16 ; CHECK-NEXT:    br label [[JOIN]]
17 ; CHECK:       Block4:
18 ; CHECK-NEXT:    br label [[JOIN]]
19 ; CHECK:       Block5:
20 ; CHECK-NEXT:    br label [[JOIN]]
21 ; CHECK:       Store1:
22 ; CHECK-NEXT:    br label [[JOIN]]
23 ; CHECK:       Block6:
24 ; CHECK-NEXT:    br label [[JOIN]]
25 ; CHECK:       Block7:
26 ; CHECK-NEXT:    br label [[JOIN]]
27 ; CHECK:       Block8:
28 ; CHECK-NEXT:    br label [[JOIN]]
29 ; CHECK:       Block9:
30 ; CHECK-NEXT:    br label [[JOIN]]
31 ; CHECK:       Block10:
32 ; CHECK-NEXT:    br label [[JOIN]]
33 ; CHECK:       Store2:
34 ; CHECK-NEXT:    br label [[JOIN]]
35 ; CHECK:       Block11:
36 ; CHECK-NEXT:    br label [[JOIN]]
37 ; CHECK:       Block12:
38 ; CHECK-NEXT:    br label [[JOIN]]
39 ; CHECK:       Block13:
40 ; CHECK-NEXT:    br label [[JOIN]]
41 ; CHECK:       Block14:
42 ; CHECK-NEXT:    br label [[JOIN]]
43 ; CHECK:       Block15:
44 ; CHECK-NEXT:    br label [[JOIN]]
45 ; CHECK:       Block16:
46 ; CHECK-NEXT:    br label [[JOIN]]
47 ; CHECK:       Join:
48 ; CHECK-NEXT:    [[VAL_0:%.*]] = phi i32 [ 1, [[STORE1]] ], [ 2, [[STORE2]] ], [ undef, [[BLOCK1:%.*]] ], [ undef, [[BLOCK2:%.*]] ], [ undef, [[BLOCK3:%.*]] ], [ undef, [[BLOCK4:%.*]] ], [ undef, [[BLOCK5:%.*]] ], [ undef, [[BLOCK6:%.*]] ], [ undef, [[BLOCK7:%.*]] ], [ undef, [[BLOCK8:%.*]] ], [ undef, [[BLOCK9:%.*]] ], [ undef, [[BLOCK10:%.*]] ], [ undef, [[BLOCK11:%.*]] ], [ undef, [[BLOCK12:%.*]] ], [ undef, [[BLOCK13:%.*]] ], [ undef, [[BLOCK14:%.*]] ], [ undef, [[BLOCK15:%.*]] ], [ undef, [[BLOCK16:%.*]] ]
49 ; CHECK-NEXT:    ret i32 [[VAL_0]]
51 Entry:
52   %val = alloca i32
53   %c1 = call i1 @cond()
54   br i1 %c1, label %Store1, label %Store2
55 Block1:
56   br label %Join
57 Block2:
58   br label %Join
59 Block3:
60   br label %Join
61 Block4:
62   br label %Join
63 Block5:
64   br label %Join
65 Store1:
66   store i32 1, i32* %val
67   br label %Join
68 Block6:
69   br label %Join
70 Block7:
71   br label %Join
72 Block8:
73   br label %Join
74 Block9:
75   br label %Join
76 Block10:
77   br label %Join
78 Store2:
79   store i32 2, i32* %val
80   br label %Join
81 Block11:
82   br label %Join
83 Block12:
84   br label %Join
85 Block13:
86   br label %Join
87 Block14:
88   br label %Join
89 Block15:
90   br label %Join
91 Block16:
92   br label %Join
93 Join:
94 ; Phi inserted here should have operands appended deterministically
95   %result = load i32, i32* %val
96   ret i32 %result