Bug 1025050. Add collectRangeInfoPreTrunc for MMul. r=h4writer.

This commit is contained in:
Sushant Dinesh 2014-06-17 21:22:12 +02:00
parent 137b3cccf6
commit c280c41fc5
2 changed files with 25 additions and 0 deletions

View File

@ -4449,6 +4449,7 @@ class MMul : public MBinaryArithInstruction
MDefinition *foldsTo(TempAllocator &alloc, bool useValueNumbers);
void analyzeEdgeCasesForward();
void analyzeEdgeCasesBackward();
void collectRangeInfoPreTrunc();
double getIdentity() {
return 1;

View File

@ -2723,6 +2723,30 @@ MDiv::collectRangeInfoPreTrunc()
canBeNegativeZero_ = false;
}
void
MMul::collectRangeInfoPreTrunc()
{
Range lhsRange(lhs());
Range rhsRange(rhs());
// If lhsRange contains only positive then we can skip negative zero check.
if (lhsRange.isFiniteNonNegative() && !lhsRange.canBeZero())
setCanBeNegativeZero(false);
// Likewise rhsRange.
if (rhsRange.isFiniteNonNegative() && !rhsRange.canBeZero())
setCanBeNegativeZero(false);
// If rhsRange and lhsRange contain Non-negative integers only,
// We skip negative zero check.
if (rhsRange.isFiniteNonNegative() && lhsRange.isFiniteNonNegative())
setCanBeNegativeZero(false);
//If rhsRange and lhsRange < 0. Then we skip negative zero check.
if (rhsRange.isFiniteNegative() && lhsRange.isFiniteNegative())
setCanBeNegativeZero(false);
}
void
MMod::collectRangeInfoPreTrunc()
{