summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2011-01-25 15:14:15 +0000
committerDuncan Sands <baldrick@free.fr>2011-01-25 15:14:15 +0000
commit9e9d5b25e261431629ba9c33cb2e2967b29a9380 (patch)
treea5873a84c3e10dcb0a2ef44ab4a2ab71bd30dc1e /llvm/lib/Analysis
parent0c125f9f02dc0e8fc864074ded2b2ed7463c656a (diff)
downloadbcm5719-llvm-9e9d5b25e261431629ba9c33cb2e2967b29a9380.tar.gz
bcm5719-llvm-9e9d5b25e261431629ba9c33cb2e2967b29a9380.zip
In which I discover that zero+zero is zero, d'oh!
llvm-svn: 124188
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 98b4489cba7..5320fa0768d 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -740,10 +740,10 @@ bool llvm::isKnownNonZero(Value *V, const TargetData *TD, unsigned Depth) {
ComputeSignBit(Y, YKnownNonNegative, YKnownNegative, TD, Depth);
// If X and Y are both non-negative (as signed values) then their sum is not
- // zero.
+ // zero unless both X and Y are zero.
if (XKnownNonNegative && YKnownNonNegative)
- return false;
-// return true;
+ if (isKnownNonZero(X, TD, Depth) || isKnownNonZero(Y, TD, Depth))
+ return true;
// If X and Y are both negative (as signed values) then their sum is not
// zero unless both X and Y equal INT_MIN.
OpenPOWER on IntegriCloud