diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-11-28 23:32:19 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-11-28 23:32:19 +0000 |
commit | 54b92113e227db1d982172df18c4ad5058aae4e9 (patch) | |
tree | c563971eed0efd869bdb47e5ad6cf2e865dd1179 /test/Transforms/InstCombine/overflow.ll | |
parent | 4544da484d5b8488d1827340b4187654bec28818 (diff) | |
download | external_llvm-54b92113e227db1d982172df18c4ad5058aae4e9.zip external_llvm-54b92113e227db1d982172df18c4ad5058aae4e9.tar.gz external_llvm-54b92113e227db1d982172df18c4ad5058aae4e9.tar.bz2 |
Add a missing safety check to ProcessUGT_ADDCST_ADD. Fixes PR11438.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145316 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine/overflow.ll')
-rw-r--r-- | test/Transforms/InstCombine/overflow.ll | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/overflow.ll b/test/Transforms/InstCombine/overflow.ll index 9123283..81ceef8 100644 --- a/test/Transforms/InstCombine/overflow.ll +++ b/test/Transforms/InstCombine/overflow.ll @@ -130,4 +130,26 @@ entry: ret i64 %Q } +; CHECK: @test8 +; PR11438 +; This is @test1, but the operands are not sign-extended. Make sure +; we don't transform this case. +define i32 @test8(i64 %a, i64 %b) nounwind ssp { +entry: +; CHECK-NOT: llvm.sadd +; CHECK: add i64 %a, %b +; CHECK-NOT: llvm.sadd +; CHECK: ret + %add = add i64 %a, %b + %add.off = add i64 %add, 2147483648 + %0 = icmp ugt i64 %add.off, 4294967295 + br i1 %0, label %if.then, label %if.end + +if.then: + tail call void @throwAnExceptionOrWhatever() nounwind + br label %if.end +if.end: + %conv9 = trunc i64 %add to i32 + ret i32 %conv9 +} |