mono/mono — pull request #852 by ranma42 (2014-01-01 18:05:27+00:00)
Title: Improve ABCREM

While working on some performance-related measurements in F# I found out that Mono was not performing ABCREM as expected. It looks like it's currently unable to propagate the value constraint across sign-extension, which on 64-bits archs is used basically every time a bound-check is added (see https://github.com/mono/mono/blob/master/mono/mini/method-to-ir.c#L4668 ).

While working on this code I noticed that both OP_IADD_IMM and OP_ISUB_IMM result in the very same constraint.
I would have expected OP_ISUB_IMM to have a value->value.variable.delta = -ins->inst_imm.
If this is correct and expected, could somebody add a comment about it?