Thread overview
[Issue 8539] New: -inline failure involving CTFE, nested functions, a ref parameter
Aug 11, 2012
Nils
Nov 02, 2012
yebblies
[Issue 8539] (D1 only) -inline failure involving CTFE, nested functions, a ref parameter
Nov 02, 2012
yebblies
Nov 08, 2012
Kenji Hara
Nov 08, 2012
Kenji Hara
August 11, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8539

           Summary: -inline failure involving CTFE, nested functions, a
                    ref parameter
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: mailme+d@nilsb.dyndns.org


--- Comment #0 from Nils <mailme+d@nilsb.dyndns.org> 2012-08-11 12:48:35 PDT ---
test.d:
---
int f() {
    static void one(ref int x) {
        x = 1;
    }
    static void go() {
        int y;
        one(y);
        assert(y == 1); // fails with -inline
    }
    go();
    return 0;
}
enum e = f();
---

$ dmd -c -o- test.d
$ dmd -c -o- -inline test.d
test.d(8): Error: assert(y == 1) failed
test.d(10):        called from here: go()
test.d(13):        called from here: f()

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 02, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8539


yebblies <yebblies@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |yebblies@gmail.com


--- Comment #1 from yebblies <yebblies@gmail.com> 2012-11-02 18:00:34 EST ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/b52dca5a53def60352dbcbf4f398c10abb2cb6b1 Fix issue 8498 modifying foreach range iterator fails in CTFE

This was caused by ignoring assignment to ref variables. (These guys can only be created by the inliner, or by lowering, such as happens in foreach).

Also fixes bug 7658: assignment to ref in foreach.
Also fixes bug 8539: nested functions, ref parameter, -inline.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 02, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8539


yebblies <yebblies@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |CTFE, ice, pull
            Version|D2                          |D1
            Summary|-inline failure involving   |(D1 only) -inline failure
                   |CTFE, nested functions, a   |involving CTFE, nested
                   |ref parameter               |functions, a ref parameter


--- Comment #2 from yebblies <yebblies@gmail.com> 2012-11-02 18:01:26 EST ---
Fixed D2, causes an ICE with D1:

src\testx.d(6): Error: CTFE internal error: illegal reference value 0

Assertion failure: 'IsRefValueValid(newval)' on line 6243 in file 'interpret.c'

abnormal program termination

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 08, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8539



--- Comment #3 from Kenji Hara <k.hara.pg@gmail.com> 2012-11-08 09:27:09 PST ---
Fixed D1: https://github.com/D-Programming-Language/dmd/commit/c3f296ab16cb7209f2b2344013d979e85705a681

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
November 08, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8539


Kenji Hara <k.hara.pg@gmail.com> changed:

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


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