www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 4820] New: Regressions in DStress caused by changeset 452

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

           Summary: Regressions in DStress caused by changeset 452
           Product: D
           Version: 1.057
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: siegelords_abode yahoo.com



Changeset 452 that was used to solve bug 2935 causes 4 regressions in the
DStress test suite. The tests that now fail are the following:

run/l/lazy_02_A.d
run/l/lazy_02_B.d
run/l/lazy_02_C.d
run/l/lazy_02_D.d

The first one, for example is:

bool nextis(void delegate() dgpositive = {}) {
    return true;
}

bool looping(lazy bool condition) {
    return true;
}

int main() {
    looping(nextis());
    return 0;
}

and when compiled with DMD1.063 yields:

test.d(1): Error: cannot inline default argument __dgliteral1

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 05 2010
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4820


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug yahoo.com.au
            Summary|Regressions in DStress      |Regression(1.058, 2.044) in
                   |caused by changeset 452     |DStress caused by changeset
                   |                            |452
           Severity|normal                      |regression


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 05 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4820




Thanks for the superb bug report!
Reduced test case shows it's nothing to do with lazy:

void nextis(void delegate() dg = {}) {}

void main() {
    nextis();
}

This is failing because function/delegate literals cannot be inlined. Prior to
svn 452, that wasn't being checked in the special case where they were default
parameters. Until bug 2935 was fixed, default values were created in the same
scope as the function declaration. That was a disaster for structs, but might
be OK for function literals -- not sure. Here's an example which used to
compile, but now fails, which never used global scope.

void main() {
   int x = 27;
   int nextis(int delegate() dg = { return x; }) { return dg(); }
   ++x;
   assert(nextis() == 28);
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 06 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4820


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fawzi gmx.ch



*** Issue 4304 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 13 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4820


Don <clugdbug yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Depends on|                            |4440



Although this particular case used to work, it was very fragile.
Calling nextis() directly from main() never worked.
This whole feature probably won't correctly until delegate literals can be
inlined.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 14 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4820




Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/06e98272f690cf79444b797d2de021ee7eb4a186
fix Issue 4820 - Regression(1.058, 2.044) in DStress caused by changeset 452

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 02 2012
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4820




Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/415e48ac4703ffab94cd6ce5a3211625099c637a
fix Issue 4820 - Regression(1.058, 2.044) in DStress caused by changeset 452

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 02 2012
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4820


Walter Bright <bugzilla digitalmars.com> changed:

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


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