@@ -165,3 +165,35 @@ cond.end:
165
165
%sub = sub nsw i32 %v3 , %cond
166
166
ret i32 %sub
167
167
}
168
+
169
+ @g = extern_weak global i32
170
+ define void @pr50370 (i32 %x ) {
171
+ ; CHECK-LABEL: @pr50370(
172
+ ; CHECK-NEXT: entry:
173
+ ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[X:%.*]], 1
174
+ ; CHECK-NEXT: [[B15:%.*]] = srem i32 ashr (i32 65536, i32 or (i32 zext (i1 icmp eq (i32* @g, i32* null) to i32), i32 65537)), [[XOR]]
175
+ ; CHECK-NEXT: [[B22:%.*]] = add i32 [[B15]], sdiv (i32 or (i32 zext (i1 icmp eq (i32* @g, i32* null) to i32), i32 65537), i32 2147483647)
176
+ ; CHECK-NEXT: [[B14:%.*]] = srem i32 ashr (i32 65536, i32 or (i32 zext (i1 icmp eq (i32* @g, i32* null) to i32), i32 65537)), [[B22]]
177
+ ; CHECK-NEXT: [[B12:%.*]] = add nuw i32 [[B15]], ashr (i32 65536, i32 or (i32 zext (i1 icmp eq (i32* @g, i32* null) to i32), i32 65537))
178
+ ; CHECK-NEXT: [[B8:%.*]] = shl i32 sdiv (i32 or (i32 zext (i1 icmp eq (i32* @g, i32* null) to i32), i32 65537), i32 2147483647), [[B14]]
179
+ ; CHECK-NEXT: [[B2:%.*]] = xor i32 [[B12]], [[B8]]
180
+ ; CHECK-NEXT: [[B:%.*]] = xor i32 [[B2]], -1
181
+ ; CHECK-NEXT: store i32 [[B]], i32* undef, align 4
182
+ ; CHECK-NEXT: ret void
183
+ ;
184
+ entry:
185
+ %xor = xor i32 %x , 1
186
+ %or4 = or i32 or (i32 zext (i1 icmp eq (i32* @g , i32* null ) to i32 ), i32 1 ), 65536
187
+ %B6 = ashr i32 65536 , %or4
188
+ %B15 = srem i32 %B6 , %xor
189
+ %B20 = sdiv i32 %or4 , 2147483647
190
+ %B22 = add i32 %B15 , %B20
191
+ %B14 = srem i32 %B6 , %B22
192
+ %B12 = add i32 %B15 , %B6
193
+ %B8 = shl i32 %B20 , %B14
194
+ %B2 = xor i32 %B12 , %B8
195
+ %B3 = or i32 %B12 , undef
196
+ %B = xor i32 %B2 , %B3
197
+ store i32 %B , i32* undef , align 4
198
+ ret void
199
+ }
0 commit comments