Aside from the ldc.i4.M1 alias for ldc.i4.m1, which I figure is pretty useless, should we include these as alternatives in OpCode (burdening analysis, at least by requiring a canonicalization function) or omit them (burdening parsing, and preventing a round-trip-able parser/pretty-printer).
We presently have Ldelem_U8, but not Ldind_U8 or any of the others.
I lean toward including them all (except the M1 one), so that the parser and printer are preserve the useful-as-a-hint-to-humans differences between these and what they alias. Even moreso because I think it makes sense to have a simplification function before most analyses anyway, along the lines of:
There are a few aliases defined in the IL grammar in Partition VI, Annex C, Section C.1 et seq.
Aside from the ldc.i4.M1 alias for ldc.i4.m1, which I figure is pretty useless, should we include these as alternatives in OpCode (burdening analysis, at least by requiring a canonicalization function) or omit them (burdening parsing, and preventing a round-trip-able parser/pretty-printer).
We presently have Ldelem_U8, but not Ldind_U8 or any of the others.
I lean toward including them all (except the M1 one), so that the parser and printer are preserve the useful-as-a-hint-to-humans differences between these and what they alias. Even moreso because I think it makes sense to have a simplification function before most analyses anyway, along the lines of:
and so forth.