// This tests that we can correctly infer that a local variable is only
// used as an integer even if its uses are not in the same basic block as
// where it is defined.
function foo(a, b, c) {
var x = 1 + a + b;
if (c)
x++;
else
x--;
return (x + a)|0;
}
var bigNumber = 2147483647;
var result = 0;
for (var i = 0; i < 500000; ++i)
result = (result + foo(i, bigNumber - i, i%2)) | 0;
if (result != 445698416)
throw "Bad result: " + result;