description(
"Tests what happens when CFG simplification leads to the elimination of a set local that had a type check, and then we branch on the variable not being null while decrementing the variable in the same basic block."
);

function foo(o) {
    var x;
    if (o.f)
        x = o.g;
    else
        x = o.h;
    var y = x != null;
    x--;
    if (y)
        return y;
    else
        return false;
}

silentTestPass = true;
noInline(foo);

for (var i = 0; i < 500; i = dfgIncrement({f:foo, i:i + 1, n:100})) {
    var o = {f:foo};
    var expected;
    if (i < 450) {
        o.g = i;
        expected = "true";
    } else {
        o.g = null;
        expected = "false";
    }
    shouldBe("foo(o)", expected);
}


