Given this, I was fixed one that I could reduce the case. But at the end, I will recommend users to review get small cases as bug reports.
The MSIL and C++ code can be seen side by side and when the compile fails.
A snippet of the output code of an Prime number program:
// IL_0049: ldc.i4.1
// IL_004a: stloc.0
// IL_004b: nop
// IL_004c: ldloc.1
vreg_32 = local_1;
// IL_004d: ldc.i4.1
// IL_004e: add
vreg_34 = vreg_32+1;
// IL_004f: stloc.1
local_1 = vreg_34;
label_80:
// IL_0050: ldloc.1
vreg_35 = local_1;
// IL_0051: conv.i8
vreg_36 = (System_Int64)vreg_35;
// IL_0052: ldarg.1
// IL_0053: cgt
vreg_38 = (vreg_36 > vreg_37)?1:0;
In this way you can see if any optimization interact badly with your CIL. Also, reducing the optimizations you will see the C++ code reflecting more the CIL code, and the more optimizations are added, the CIL and C++ code do go appart.
Int64 (aka long) type is also supported right now both as instructions (as conv.i8 or ldc.i8) and as optimizations (constant folding).
No comments:
Post a Comment