diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-05-21 23:04:21 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-05-21 23:04:21 +0000 |
| commit | 27e89ba24c60a917b4db63844db500c307014e50 (patch) | |
| tree | 0ed0fba052f770aec13653c259aeaca19a008e99 /llvm/test/Transforms/InstCombine | |
| parent | eb31b68cefd5ab38ba61ac11c73108a5e344272d (diff) | |
| download | bcm5719-llvm-27e89ba24c60a917b4db63844db500c307014e50.tar.gz bcm5719-llvm-27e89ba24c60a917b4db63844db500c307014e50.zip | |
[InstCombine] X - 0 is equal to X, not undef
A refactoring made @llvm.ssub.with.overflow.i32(i32 %X, i32 0) transform
into undef instead of %X.
This fixes PR23624.
llvm-svn: 237968
Diffstat (limited to 'llvm/test/Transforms/InstCombine')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/intrinsics.ll | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/intrinsics.ll b/llvm/test/Transforms/InstCombine/intrinsics.ll index f9ccf51a621..974ee4395b8 100644 --- a/llvm/test/Transforms/InstCombine/intrinsics.ll +++ b/llvm/test/Transforms/InstCombine/intrinsics.ll @@ -417,3 +417,11 @@ define %ov.result.32 @ssubtest_reorder(i8 %a) { ; CHECK-NEXT: %1 = insertvalue %ov.result.32 { i32 undef, i1 false }, i32 %x, 0 ; CHECK-NEXT: ret %ov.result.32 %1 } + +define %ov.result.32 @never_overflows_ssub(i32 %a) { + %x = call %ov.result.32 @llvm.ssub.with.overflow.i32(i32 %a, i32 0) + ret %ov.result.32 %x +; CHECK-LABEL: @never_overflows_ssub +; CHECK-NEXT: %[[x:.*]] = insertvalue %ov.result.32 { i32 undef, i1 false }, i32 %a, 0 +; CHECK-NEXT: ret %ov.result.32 %[[x]] +} |

