description("Tests that inlining many basic blocks does not trigger a bad assertion."); | |
function stuff(x) { | |
debug(x); // This needs to be a side-effect. | |
} | |
function foo(a, b) { | |
if (a) { | |
stuff(a); | |
return; | |
} else { | |
stuff(b); | |
return; | |
} | |
} | |
function fuzz(a, b) { | |
if (a + b) | |
foo(a, b); | |
if (a / b) | |
foo(b, a); | |
foo(a, b); | |
} | |
function baz(a, b) { | |
stuff(a); | |
if (a * b) | |
fuzz(a, b); | |
if (a - b) | |
fuzz(a, b); | |
fuzz(b, a); | |
} | |
function bar(a, b) { | |
stuff(a * b + a); | |
if (a + b) | |
baz(a, b); | |
stuff(a - b); | |
} | |
for (var i = 0; i < 1000; ++i) | |
bar(i, i + 1); | |