summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorRoman Lebedev <lebedev.ri@gmail.com>2019-09-21 22:27:39 +0000
committerRoman Lebedev <lebedev.ri@gmail.com>2019-09-21 22:27:39 +0000
commitbaf809811b066eede7c1093b5c9941e428d6bd5f (patch)
treef79ab61d89d967f6994ce632e437c68dc9fba0f5 /llvm/lib/Analysis
parente94f156f778cdc1d20cd836cfc5d6df0b77761e1 (diff)
downloadbcm5719-llvm-baf809811b066eede7c1093b5c9941e428d6bd5f.tar.gz
bcm5719-llvm-baf809811b066eede7c1093b5c9941e428d6bd5f.zip
[InstSimplify] simplifyUnsignedRangeCheck(): X >= Y && Y == 0 --> Y == 0
https://rise4fun.com/Alive/v9Y4 llvm-svn: 372491
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 5c8bf8f83cf..67b06ea40bc 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -1443,11 +1443,10 @@ static Value *simplifyUnsignedRangeCheck(ICmpInst *ZeroICmp,
isKnownNonZero(X, Q.DL, /*Depth=*/0, Q.AC, Q.CxtI, Q.DT))
return IsAnd ? UnsignedICmp : ZeroICmp;
- // X >= Y && Y == 0 --> Y == 0 FIXME
+ // X >= Y && Y == 0 --> Y == 0
// X >= Y || Y == 0 --> X >= Y
- if (UnsignedPred == ICmpInst::ICMP_UGE && EqPred == ICmpInst::ICMP_EQ &&
- !IsAnd)
- return UnsignedICmp;
+ if (UnsignedPred == ICmpInst::ICMP_UGE && EqPred == ICmpInst::ICMP_EQ)
+ return IsAnd ? ZeroICmp : UnsignedICmp;
// X > Y && Y == 0 --> Y == 0 iff X != 0
// X > Y || Y == 0 --> X > Y iff X != 0
OpenPOWER on IntegriCloud