// test local/arg liveness analysis in presence of many locals function foo(a, b, c) { var x = 0, y = 0, z = 0; if (a < b) { x = a + 0; y = b + 0; z = c + 0; } else { x = a; y = b; z = c; } return x + y + z; } assertEq(foo(1, 2, 3), 6); // restore liveness correctly before switch statements function foo(a, b, c) { var x = 0, y = 0, z = 0; if (a < b) { x = a + 0; y = b + 0; z = c + 0; } else { switch (c) { case 1: case 2: case 3: case 4: case 5: return 0; } x = 0; y = 0; z = 0; } return x + y + z; } assertEq(foo(1, 2, 3), 6);