[Mono-bugs] [Bug 431827] New: Addition with int and pointer generates wrong bytecode

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Fri Oct 3 02:07:07 EDT 2008


https://bugzilla.novell.com/show_bug.cgi?id=431827


           Summary: Addition with int and pointer generates wrong bytecode
           Product: Mono: Compilers
           Version: 2.0
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: msafar at novell.com
        ReportedBy: avidigal at novell.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


The following code:

public unsafe class TheClass
{
  public unsafe byte* GetFoo () {
        byte *one = null;
        return 9 + one;
  }
}

produces:

        .locals init (
                unsigned int8*  V_0)
        IL_0000:  ldc.i4.0 
        IL_0001:  conv.u 
        IL_0002:  stloc.0 
        IL_0003:  ldc.i4.s 0x09
        IL_0005:  ldloc.0 
        IL_0006:  ldc.i4.4 
        IL_0007:  mul 
        IL_0008:  add 
        IL_0009:  ret 


Mono.CSharp.PointerArithmetic assumes the left operand is always a pointer, and
in this case it's not, so it ends up casting the int to a byte* and then
multiplying the pointer by 4 to compensate :P

This is actually a regression, 1.2.6 compiles correctly, and I'm thinking 1.9
does too (didn'test yet though)


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list