LICM shouldn't hoist nodes if hoisted nodes exited in that code block
[WebKit-https.git] / JSTests / microbenchmarks / licm-dragons-two-structures.js
1 function foo(o)
2 {
3     var result = 0;
4     for (var i = 0; i < 100; ++i) {
5         if (o.p)
6             result += o.f;
7         else
8             result += o.g;
9         if (o.p)
10             o.f = i;
11         else
12             o.g = i;
13     }
14     return result;
15 }
16
17 noInline(foo);
18
19 for (var i = 0; i < 100000; ++i) {
20     var result = foo(i & 1 ? {p:true, f:42} : {p:false, g:42});
21     if (result != (99 * 98) / 2 + 42)
22         throw "Error: bad result: " + result;
23 }
24