www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1488] New: Bad code generation when using tuple from asm (regression?)

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1488

           Summary: Bad code generation when using tuple from asm
                    (regression?)
           Product: D
           Version: 1.021
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: regression
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: clugdbug yahoo.com.au


I believe this used to work with DMD 1.020. Now it definitely generates bad
code.
If you leave off the "int ptr" you get a compile-time segfault (that's bug


--------------
int f(X...)(X x)
{
    asm {
//        mov EAX, int ptr x[0];  // OK -- sets EAX = 123
        mov EAX, int ptr x[1];   // sets EAX = 0x80000001.
    }
}

void main()
{
    assert(456 == f(123, 456));
}


-- 
Sep 09 2007
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1488


clugdbug yahoo.com.au changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|regression                  |critical
            Summary|Bad code generation when    |Bad code generation when
                   |using tuple from asm        |using tuple from asm
                   |(regression?)               |
            Version|1.021                       |1.020





This isn't actually a regression. It generated bad code in DMD 1.020 too.


-- 
Sep 13 2007
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1488


braddr puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED





Fixed in 1.022/2.005


-- 
Oct 20 2007