diff options
| author | Michael Ilseman <milseman@apple.com> | 2012-12-06 00:07:09 +0000 |
|---|---|---|
| committer | Michael Ilseman <milseman@apple.com> | 2012-12-06 00:07:09 +0000 |
| commit | 0f12837be0a736623c51c8a6499cda66ccc64c26 (patch) | |
| tree | 7952bd434f57cc0a44d7a04ada8be6b64c784627 /llvm/lib/Analysis | |
| parent | faa0bb3fa1ec71cf5edbad4e8da42dafbcf936bd (diff) | |
| download | bcm5719-llvm-0f12837be0a736623c51c8a6499cda66ccc64c26.tar.gz bcm5719-llvm-0f12837be0a736623c51c8a6499cda66ccc64c26.zip | |
Have CannotBeNegativeZero() be aware of the nsz fast-math flag
llvm-svn: 169452
Diffstat (limited to 'llvm/lib/Analysis')
| -rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 47b1db6425b..eee231df8c9 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -1312,7 +1312,12 @@ bool llvm::CannotBeNegativeZero(const Value *V, unsigned Depth) { const Operator *I = dyn_cast<Operator>(V); if (I == 0) return false; - + + // Check if the nsz fast-math flag is set + if (const FPMathOperator *FPO = dyn_cast<FPMathOperator>(I)) + if (FPO->hasNoSignedZeros()) + return true; + // (add x, 0.0) is guaranteed to return +0.0, not -0.0. if (I->getOpcode() == Instruction::FAdd && isa<ConstantFP>(I->getOperand(1)) && |

