Thread overview
[Issue 3344] New: Internal error: e2ir.c 644 by a strange return statement
Sep 25, 2009
Haruki Shigemori
[Issue 3344] ICE(e2ir.c) returning a void function from main()
Sep 25, 2009
Don
[Issue 3344] ICE(e2ir.c) returning an invalid function from main()
Sep 29, 2009
Don
Sep 29, 2009
Don
Oct 13, 2009
Walter Bright
September 25, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3344

           Summary: Internal error: e2ir.c 644 by a strange return
                    statement
           Product: D
           Version: 2.032
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: rayerd.wiz@gmail.com


--- Comment #0 from Haruki Shigemori <rayerd.wiz@gmail.com> 2009-09-25 05:31:50 PDT ---
>type main.d
void f(T)(){}
void main()
{
        return f;
}

>dmd main
f(T)
Internal error: e2ir.c 644

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
September 25, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3344


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-valid-code
                 CC|                            |clugdbug@yahoo.com.au
            Version|2.032                       |1.00
            Summary|Internal error: e2ir.c 644  |ICE(e2ir.c) returning a
                   |by a strange return         |void function from main()
                   |statement                   |


--- Comment #1 from Don <clugdbug@yahoo.com.au> 2009-09-25 05:38:45 PDT ---
Not a D2 bug. Fails even in DMD 0.165.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
September 29, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3344


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|ice-on-valid-code           |ice-on-invalid-code, patch
            Summary|ICE(e2ir.c) returning a     |ICE(e2ir.c) returning an
                   |void function from main()   |invalid function from
                   |                            |main()


--- Comment #2 from Don <clugdbug@yahoo.com.au> 2009-09-29 01:24:49 PDT ---
This is clearly invalid code.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
September 29, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3344



--- Comment #3 from Don <clugdbug@yahoo.com.au> 2009-09-29 01:24:55 PDT ---
This is happening because when return exp; is changed into exp; return;, the semantic pass never gets run on the expression.

-------
PATCH: iin statement.c, around line 3464, in Statement *ReturnStatement::semantic(Scope *sc)

=====
    /* Replace:
     *    return exp;
     * with:
     *    exp; return;
     */
    Statement *s = new ExpStatement(loc, exp);
+    s->semantic(sc);
==========

CAUTION:
This patch also disallows code like " void foo() { return 7; }"
This shows up several bugs in Phobos and in the DMD test suite.
If there's a reason why such bug-prone code should continue to be accepted, a
more complicated patch will be required.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
October 13, 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3344


Walter Bright <bugzilla@digitalmars.com> changed:

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


--- Comment #4 from Walter Bright <bugzilla@digitalmars.com> 2009-10-13 13:48:24 PDT ---
Fixed dmd 1.049 and 2.034

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