www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 6337] New: ICE when touching member variable of struct during CTFE

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

           Summary: ICE when touching member variable of struct during
                    CTFE
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: johann.macdonagh gmail.com



20:37:26 PDT ---
This one is weird. I narrowed it down to this test case, although I admit this
is still pretty long.

struct Test
{
    string s;

    this(string s)
    {
        this.s = s;
    }

    string ctfe()
    {
        dchar c = s[0];

        if (test1(c))
        {
            for (c = next(c); test2(c); c = next(c))
            {
            }
        }

        return "ctfe";
    }

    dchar next(dchar curPeek)
    {
        if (curPeek != dchar.init)
        {
            s = s[1..$];

            return s.length > 0 ? s[0] : dchar.init;
        }

        return dchar.init;
    }
}

bool test1(dchar c)
{
    return (c >= 'a' && c <= 'z' ||
            c >= 'A' && c <= 'Z' ||
            c == '_');
}

bool test2(dchar c)
{
    return (test1(c) ||
            c >= '0' && c <= '9' );
}

void main(string[] args)
{
    // If this is auto then this executes just fine at runtime
    enum x = Test("abc").ctfe();
}

This will ICE with an out of memory error. I believe it's going into an
infinite loop.

If you replace the body of test2 with "return false", then CTFE runs just fine.

This only happens on 2.054. On 2.053 (when you make appropriate modifications
to the test case) it crashes DMD.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 16 2011
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6337


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
                 CC|                            |clugdbug yahoo.com.au



Reduced test case:

struct Bug6337
{
    int k;
    void six() {
        k = 6;
    }
    int ctfe()
    {
        six();
        return k;
    }
}
static assert( Bug6337().ctfe() == 6);

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 22 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6337


Walter Bright <bugzilla digitalmars.com> changed:

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



13:57:58 PDT ---
https://github.com/D-Programming-Language/dmd/commit/dc787833ee11ec6313503022b64e2a4aec61e7b6

https://github.com/D-Programming-Language/dmd/commit/501222f6d3d21b6b551851176cc6d5510022e737

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 22 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6337


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla kyllingen.net



*** Issue 6390 has been marked as a duplicate of this issue. ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 28 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=6337


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |soywiz gmail.com



*** Issue 6323 has been marked as a duplicate of this issue. ***

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