mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 10:45:42 +00:00
Bug 893364: in asm.js mode, correctly compute ranges for add and sub;
This commit is contained in:
parent
104a165a17
commit
403eebae36
@ -917,6 +917,9 @@ MAdd::computeRange()
|
||||
Range right(getOperand(1));
|
||||
Range *next = Range::add(&left, &right);
|
||||
setRange(next);
|
||||
|
||||
if (isTruncated() && !range()->isInt32())
|
||||
setRange(new Range(INT32_MIN, INT32_MAX));
|
||||
}
|
||||
|
||||
void
|
||||
@ -928,6 +931,9 @@ MSub::computeRange()
|
||||
Range right(getOperand(1));
|
||||
Range *next = Range::sub(&left, &right);
|
||||
setRange(next);
|
||||
|
||||
if (isTruncated() && !range()->isInt32())
|
||||
setRange(new Range(INT32_MIN, INT32_MAX));
|
||||
}
|
||||
|
||||
void
|
||||
|
14
js/src/jit-test/tests/asm.js/testBug893364.js
Normal file
14
js/src/jit-test/tests/asm.js/testBug893364.js
Normal file
@ -0,0 +1,14 @@
|
||||
function m()
|
||||
{
|
||||
"use asm";
|
||||
function f()
|
||||
{
|
||||
var x = 0;
|
||||
var y = 0;
|
||||
x = (((0x77777777 - 0xcccccccc) | 0) % -1) | 0;
|
||||
y = (((0x7FFFFFFF + 0x7FFFFFFF) | 0) % -1) | 0;
|
||||
return (x+y)|0;
|
||||
}
|
||||
return f;
|
||||
}
|
||||
assertEq(m()(), 0)
|
Loading…
Reference in New Issue
Block a user