www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6792] New: [CTFE] ICE with pointer cast of indexed array

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

           Summary: [CTFE] ICE with pointer cast of indexed array
           Product: D
           Version: D2
          Platform: x86
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: youxkei gmail.com
                CC: clugdbug yahoo.com.au



Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug yahoo.com.au
            Summary|[CTFE] "CTFE internal       |[CTFE] ICE with pointer
                   |error" occurs               |cast of indexed array



---
struct S{
    int i;
}

static assert({
    {
        void* p;
        p = [S(1)].ptr;
        S s = *(cast(S*)p);// OK
        assert(s.i == 1);
    }
    {
        void*[] ary;
        ary ~= [S(2)].ptr;
        S s = *(cast(S*)ary[0]);// Error: CTFE internal error assigning struct
        assert(s.i == 2);
    }
    {
        void*[string] aa;
        aa["key"] = [S(3)].ptr;
        S s = *(cast(S*)aa["key"]);// Error: CTFE internal error assigning
struct
        assert(s.i == 3);
    }
    return true;
}());


The latest dmd built from github cannot compile the above code.


Another case, where it's an lvalue instead of an rvalue:

    {
        void*[7] ary;
        ary[6]= [S(2)].ptr;        
        *(cast(S*)ary[6]) = S(4); //ICE(interpret.c 2965)
    }

The root cause is that type painting of pointers hasn't been considered
properly in CTFE.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Oct 10 2011
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6792


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |FIXED



13:06:59 PDT ---
https://github.com/D-Programming-Language/dmd/commit/3055cc6a8b36a2e00c270b0e48e1d1bd2c931f37

https://github.com/D-Programming-Language/dmd/commit/72e750209b370b66157f320d3517c5816a3951d7

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Nov 02 2011