File tree 1 file changed +23
-0
lines changed
llvm/test/Transforms/InstCombine
1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -1348,6 +1348,29 @@ define i32 @PR27137(i32 %a) {
1348
1348
ret i32 %s1
1349
1349
}
1350
1350
1351
+ ; ub-safe negation pattern
1352
+ define i32 @PR27817 (i32 %x ) {
1353
+ ; CHECK-LABEL: @PR27817(
1354
+ ; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[X:%.*]]
1355
+ ; CHECK-NEXT: ret i32 [[SUB]]
1356
+ ;
1357
+ %cmp = icmp eq i32 %x , -2147483648
1358
+ %sub = sub i32 0 , %x
1359
+ %sel = select i1 %cmp , i32 -2147483648 , i32 %sub
1360
+ ret i32 %sel
1361
+ }
1362
+
1363
+ define i32 @PR27817_nsw (i32 %x ) {
1364
+ ; CHECK-LABEL: @PR27817_nsw(
1365
+ ; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[X:%.*]]
1366
+ ; CHECK-NEXT: ret i32 [[SUB]]
1367
+ ;
1368
+ %cmp = icmp eq i32 %x , -2147483648
1369
+ %sub = sub nsw i32 0 , %x
1370
+ %sel = select i1 %cmp , i32 -2147483648 , i32 %sub
1371
+ ret i32 %sel
1372
+ }
1373
+
1351
1374
define i32 @select_icmp_slt0_xor (i32 %x ) {
1352
1375
; CHECK-LABEL: @select_icmp_slt0_xor(
1353
1376
; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[X:%.*]], -2147483648
You can’t perform that action at this time.
0 commit comments