From cd197cfb6055e857eecfbba13f0226c2e859b973 Mon Sep 17 00:00:00 2001 From: Jun Bum Lim Date: Thu, 11 Feb 2016 17:11:49 +0000 Subject: [PATCH] Add a test case to show isKnownNonZero() returns correctly; NFC Summary: Added a test case just to make sure that isKnownNonZero() returns false when we cannot guarantee that a ConstantExpr is a non-zero constant. Reviewers: sanjoy, majnemer, mcrosier, nlewycky Subscribers: nlewycky, mssimpso, mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D16908 llvm-svn: 260544 --- llvm/test/Transforms/InstSimplify/compare.ll | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/llvm/test/Transforms/InstSimplify/compare.ll b/llvm/test/Transforms/InstSimplify/compare.ll index 356019f..8c9997f 100644 --- a/llvm/test/Transforms/InstSimplify/compare.ll +++ b/llvm/test/Transforms/InstSimplify/compare.ll @@ -333,6 +333,21 @@ define i1 @or(i32 %x) { ; CHECK: ret i1 false } +; Do not simplify if we cannot guarantee that the ConstantExpr is a non-zero +; constant. +@GV = common global i32* null +define i1 @or_constexp(i32 %x) { +; CHECK-LABEL: @or_constexp( +entry: + %0 = and i32 ptrtoint (i32** @GV to i32), 32 + %o = or i32 %x, %0 + %c = icmp eq i32 %o, 0 + ret i1 %c +; CHECK: or +; CHECK-NEXT: icmp eq +; CHECK-NOT: ret i1 false +} + define i1 @shl1(i32 %x) { ; CHECK-LABEL: @shl1( %s = shl i32 1, %x -- 2.7.4