aboutsummaryrefslogtreecommitdiff
path: root/llvm/test
diff options
context:
space:
mode:
authorYingwei Zheng <dtcxzyw2333@gmail.com>2024-02-26 15:55:56 +0800
committerTom Stellard <tstellar@redhat.com>2024-02-26 13:43:35 -0800
commit3aea3d2fd3996808ab39de0cf718b292a7d52a5f (patch)
treedd7925158e56812e19396c481965bc15e614da49 /llvm/test
parent9d51bd1c2476ce334b3370c5f073e24427171e5f (diff)
downloadllvm-3aea3d2fd3996808ab39de0cf718b292a7d52a5f.zip
llvm-3aea3d2fd3996808ab39de0cf718b292a7d52a5f.tar.gz
llvm-3aea3d2fd3996808ab39de0cf718b292a7d52a5f.tar.bz2
[GVN] Drop nsw/nuw flags when replacing the result of a with.overflow intrinsic with a overflowing binary operator (#82935)
Alive2: https://alive2.llvm.org/ce/z/gyL7mn Fixes https://github.com/llvm/llvm-project/issues/82884. (cherry picked from commit 892b4beeac50920e630f10905b2916295e2eb6d8)
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Transforms/GVN/pr82884.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/Transforms/GVN/pr82884.ll b/llvm/test/Transforms/GVN/pr82884.ll
new file mode 100644
index 0000000..71abafd
--- /dev/null
+++ b/llvm/test/Transforms/GVN/pr82884.ll
@@ -0,0 +1,21 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
+; RUN: opt -S -passes=gvn < %s | FileCheck %s
+
+; Make sure nsw/nuw flags are dropped.
+
+define i32 @pr82884(i32 %x) {
+; CHECK-LABEL: define i32 @pr82884(
+; CHECK-SAME: i32 [[X:%.*]]) {
+; CHECK-NEXT: [[MUL:%.*]] = mul i32 [[X]], [[X]]
+; CHECK-NEXT: call void @use(i32 [[MUL]])
+; CHECK-NEXT: [[MUL2:%.*]] = call { i32, i1 } @llvm.smul.with.overflow.i32(i32 [[X]], i32 [[X]])
+; CHECK-NEXT: ret i32 [[MUL]]
+;
+ %mul = mul nsw nuw i32 %x, %x
+ call void @use(i32 %mul)
+ %mul2 = call { i32, i1 } @llvm.smul.with.overflow.i32(i32 %x, i32 %x)
+ %ret = extractvalue { i32, i1 } %mul2, 0
+ ret i32 %ret
+}
+
+declare void @use(i32)