| // 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; | |