1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2 ; RUN: opt -passes=newgvn -disable-output < %s
4 define void @test(i1 %arg, i1 %arg1) {
6 %alloca = alloca i64, i32 0, align 8
7 %alloca2 = alloca i64, i32 0, align 8
8 %load = load i64, ptr null, align 8
9 %icmp = icmp ult i64 0, %load
10 br i1 %icmp, label %bb24, label %bb25
16 store i64 %load, ptr %alloca, align 8
17 %load26 = load i64, ptr addrspace(1) null, align 8
18 %icmp27 = icmp ugt i64 %load26, 1
19 br i1 %icmp27, label %bb28, label %bb29
25 %icmp30 = icmp ugt i64 %load26, 0
26 br i1 %icmp30, label %bb34, label %bb31
28 bb31: ; preds = %bb38, %bb29
29 %load32 = load i64, ptr addrspace(1) null, align 8
30 %icmp33 = icmp ugt i64 %load32, 1
31 br i1 %icmp33, label %bb42, label %bb43
34 %load35 = load i64, ptr addrspace(1) null, align 8
35 store i64 %load35, ptr null, align 8
36 %load36 = load i64, ptr null, align 8
39 bb37: ; preds = %bb37, %bb34
40 %phi = phi i64 [ 0, %bb37 ], [ %load36, %bb34 ]
41 %inttoptr = inttoptr i64 %phi to ptr addrspace(1)
42 br i1 false, label %bb37, label %bb38
45 %load39 = load i64, ptr null, align 8
46 %inttoptr40 = inttoptr i64 %load39 to ptr addrspace(1)
47 %load41 = load i64, ptr addrspace(1) %inttoptr40, align 8
48 %shl = shl i64 %load26, 0
49 %and = and i64 %shl, 0
56 %load44 = load i64, ptr null, align 8
57 %load45 = load i64, ptr null, align 8
58 %icmp46 = icmp ugt i64 1, %load45
59 br i1 %icmp46, label %bb51, label %bb60
61 bb47: ; preds = %bb60, %bb55, %bb51
62 %load48 = load i64, ptr %alloca, align 8
63 %inttoptr49 = inttoptr i64 %load48 to ptr addrspace(1)
64 %load50 = load i64, ptr addrspace(1) %inttoptr49, align 8
65 br i1 %arg, label %bb63, label %bb75
68 %load52 = load i64, ptr addrspace(1) null, align 8
69 store i64 %load52, ptr %alloca2, align 8
70 %load53 = load i64, ptr null, align 8
71 store i64 %load53, ptr null, align 8
72 %icmp54 = icmp ult i64 0, %load32
73 br i1 %icmp54, label %bb55, label %bb47
76 %load56 = load i64, ptr null, align 8
77 %or = or i64 %load56, 0
78 %inttoptr57 = inttoptr i64 %or to ptr addrspace(1)
79 %load58 = load i64, ptr addrspace(1) %inttoptr57, align 8
80 %and59 = and i64 %load32, 0
84 %or61 = or i64 %load44, 0
85 %load62 = load i64, ptr addrspace(1) null, align 8
86 store i64 %load62, ptr null, align 8
90 %load64 = load i64, ptr addrspace(1) inttoptr (i64 64 to ptr addrspace(1)), align 8
91 %inttoptr65 = inttoptr i64 %load64 to ptr addrspace(1)
92 store i64 0, ptr addrspace(1) %inttoptr65, align 8
93 %or66 = or i64 %load64, 4
94 %inttoptr67 = inttoptr i64 %or66 to ptr addrspace(1)
95 store i64 0, ptr addrspace(1) %inttoptr67, align 8
96 %or68 = or i64 %load64, 36
97 %inttoptr69 = inttoptr i64 %or68 to ptr addrspace(1)
98 store i64 0, ptr addrspace(1) %inttoptr69, align 8
99 %or70 = or i64 %load64, 68
100 %inttoptr71 = inttoptr i64 %or70 to ptr addrspace(1)
101 store i64 0, ptr addrspace(1) %inttoptr71, align 8
102 %load72 = load i64, ptr null, align 8
103 %shl73 = shl i64 %load72, 0
104 %or74 = or i64 %shl73, 0
105 store i64 %or74, ptr null, align 8
108 bb75: ; preds = %bb47
109 br i1 %arg1, label %bb88, label %bb76
111 bb76: ; preds = %bb75
112 %load77 = load i64, ptr addrspace(1) inttoptr (i64 64 to ptr addrspace(1)), align 8
113 %inttoptr78 = inttoptr i64 %load77 to ptr addrspace(1)
114 store i64 0, ptr addrspace(1) %inttoptr78, align 8
115 %or79 = or i64 %load77, 4
116 %inttoptr80 = inttoptr i64 %or79 to ptr addrspace(1)
117 store i64 0, ptr addrspace(1) %inttoptr80, align 8
118 %or81 = or i64 %load77, 36
119 %inttoptr82 = inttoptr i64 %or81 to ptr addrspace(1)
120 store i64 0, ptr addrspace(1) %inttoptr82, align 8
121 %or83 = or i64 %load77, 68
122 %inttoptr84 = inttoptr i64 %or83 to ptr addrspace(1)
123 store i64 0, ptr addrspace(1) %inttoptr84, align 8
124 %load85 = load i64, ptr null, align 8
125 %shl86 = shl i64 %load85, 0
126 %or87 = or i64 %shl86, 0
127 store i64 %or87, ptr null, align 8
130 bb88: ; preds = %bb75
131 %load89 = load i64, ptr addrspace(1) null, align 8
132 %icmp90 = icmp ugt i64 %load89, 0
133 br i1 %icmp90, label %bb91, label %bb92
135 bb91: ; preds = %bb88
138 bb92: ; preds = %bb88
139 br i1 false, label %bb93, label %bb95
141 bb93: ; preds = %bb93, %bb92
142 %phi94 = phi i64 [ 0, %bb93 ], [ %load89, %bb92 ]
145 bb95: ; preds = %bb92
146 %load96 = load i64, ptr null, align 8
149 bb97: ; preds = %bb98
152 bb98: ; preds = %bb98, %bb95
153 %phi99 = phi i64 [ %load96, %bb95 ], [ 0, %bb98 ]
154 %inttoptr100 = inttoptr i64 %phi99 to ptr
155 %load101 = load i64, ptr %inttoptr100, align 8
156 br i1 false, label %bb98, label %bb97