diff options
Diffstat (limited to 'llvm/test/Transforms/InstCombine/constant-fold-shifts.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/constant-fold-shifts.ll | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/constant-fold-shifts.ll b/llvm/test/Transforms/InstCombine/constant-fold-shifts.ll new file mode 100644 index 00000000000..1a5e0c35f51 --- /dev/null +++ b/llvm/test/Transforms/InstCombine/constant-fold-shifts.ll @@ -0,0 +1,36 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -S -instcombine < %s | FileCheck %s + +@A = external constant i32 + +; OSS-Fuzz #14169 +; https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14169 +define void @ossfuzz_14169_test1(i32* %a0) { +; CHECK-LABEL: @ossfuzz_14169_test1( +; CHECK-NEXT: bb: +; CHECK-NEXT: ret void +; +bb: + %B = ptrtoint i32* @A to i64 + %C = icmp sge i64 %B, 0 + %X = select i1 %C, i712 0, i712 1 + %B9 = lshr i712 %X, 146783911423364576743092537299333564210980159306769991919205685720763064069663027716481187399048043939495936 + %G5 = getelementptr i64, i64* undef, i712 %B9 + store i64* %G5, i64** undef + ret void +} + +define void @ossfuzz_14169_test2(i32* %a0) { +; CHECK-LABEL: @ossfuzz_14169_test2( +; CHECK-NEXT: bb: +; CHECK-NEXT: ret void +; +bb: + %B = ptrtoint i32* @A to i64 + %C = icmp sge i64 %B, 0 + %X = select i1 %C, i712 0, i712 1 + %B9 = shl i712 %X, 146783911423364576743092537299333564210980159306769991919205685720763064069663027716481187399048043939495936 + %G5 = getelementptr i64, i64* undef, i712 %B9 + store i64* %G5, i64** undef + ret void +} |