new-array-dead.js   [plain text]


// Tests when we have a dead NewArray that we end up killing and there are other things in the basic block.

function foo(a, b, c) {
    var d = a + b;
    var e = b + c;
    var f = c + a;
    var g = a - b;
    var h = b - c;
    var i = c - a;
    var j = [a + 1, b + 2, c + 3, d + 4, e + 5, f + 6, g + 7, h + 8, i + 9];
    var d = a * b;
    var e = b * c;
    var f = c * a;
    var g = a / b;
    var h = b / c;
    var i = c / a;
    var j = [a + 10, b + 11, c + 12, d + 13, e + 14, f + 15, g + 16, h + 17, i + 18];
    var d = a % b;
    var e = b % c;
    var f = c % a;
    var g = b - a;
    var h = c - b;
    var i = a - c;
    var j = [a + 19, b + 20, c + 21, d + 22, e + 23, f + 24, g + 25, h + 26, i + 27];
    var d = b / a;
    var e = c / b;
    var f = a + c;
    var g = b % a;
    var h = c % b;
    var i = a % c;
    var j = [a + 28, b + 29, c + 30, d + 31, e + 32, f + 33, g + 34, h + 35, i + 36];
    return 42;
}

noInline(foo);

for (var i = 0; i < 100000; ++i) {
    var result = foo(1.5, 2.5, 3.5);
    if (result != 42)
        throw "Error: bad result: " + result;
}