Thread overview
DMD-0.164 regressions
Aug 17, 2006
Thomas Kuehne
Aug 17, 2006
Walter Bright
Aug 18, 2006
Walter Bright
Aug 18, 2006
Thomas Kuehne
Aug 18, 2006
Thomas Kuehne
August 17, 2006
64 new regressions between 0.163 and 0.164:
PASS -> FAIL: run/c/class_26_A.d
PASS -> ERROR: run/c/class_26_A.d (-g)
PASS -> FAIL: run/c/class_26_A.d (-inline)
PASS -> FAIL: run/c/class_26_A.d (-fPIC)
PASS -> FAIL: run/c/class_26_A.d (-O)
PASS -> ERROR: run/c/class_26_A.d (-release)
PASS -> ERROR: run/c/class_26_A.d (-g -inline)
PASS -> ERROR: run/c/class_26_A.d (-g -fPIC)
PASS -> FAIL: run/c/class_26_A.d (-g -O)
PASS -> ERROR: run/c/class_26_A.d (-g -release)
PASS -> FAIL: run/c/class_26_A.d (-inline -fPIC)
PASS -> FAIL: run/c/class_26_A.d (-inline -O)
PASS -> ERROR: run/c/class_26_A.d (-inline -release)
PASS -> FAIL: run/c/class_26_A.d (-fPIC -O)
PASS -> ERROR: run/c/class_26_A.d (-fPIC -release)
PASS -> ERROR: run/c/class_26_A.d (-O -release)
PASS -> ERROR: run/c/class_26_A.d (-g -inline -fPIC)
PASS -> FAIL: run/c/class_26_A.d (-g -inline -O)
PASS -> ERROR: run/c/class_26_A.d (-g -inline -release)
PASS -> FAIL: run/c/class_26_A.d (-g -fPIC -O)
PASS -> ERROR: run/c/class_26_A.d (-g -fPIC -release)
PASS -> ERROR: run/c/class_26_A.d (-g -O -release)
PASS -> FAIL: run/c/class_26_A.d (-inline -fPIC -O)
PASS -> ERROR: run/c/class_26_A.d (-inline -fPIC -release)
PASS -> ERROR: run/c/class_26_A.d (-inline -O -release)
PASS -> ERROR: run/c/class_26_A.d (-fPIC -O -release)
PASS -> FAIL: run/c/class_26_A.d (-g -inline -fPIC -O)
PASS -> ERROR: run/c/class_26_A.d (-g -inline -fPIC -release)
PASS -> ERROR: run/c/class_26_A.d (-g -fPIC -O -release)
PASS -> ERROR: run/c/class_26_A.d (-inline -fPIC -O -release)
PASS -> ERROR: run/c/class_26_A.d (-g -inline -fPIC -O -release)
PASS -> ERROR: run/c/class_26_A.d (-g -inline -O -release)
PASS -> FAIL: run/c/class_26_B.d
PASS -> ERROR: run/c/class_26_B.d (-g)
PASS -> FAIL: run/c/class_26_B.d (-inline)
PASS -> FAIL: run/c/class_26_B.d (-fPIC)
PASS -> FAIL: run/c/class_26_B.d (-O)
PASS -> ERROR: run/c/class_26_B.d (-release)
PASS -> ERROR: run/c/class_26_B.d (-g -inline)
PASS -> ERROR: run/c/class_26_B.d (-g -fPIC)
PASS -> FAIL: run/c/class_26_B.d (-g -O)
PASS -> ERROR: run/c/class_26_B.d (-g -release)
PASS -> FAIL: run/c/class_26_B.d (-inline -fPIC)
PASS -> FAIL: run/c/class_26_B.d (-inline -O)
PASS -> ERROR: run/c/class_26_B.d (-inline -release)
PASS -> FAIL: run/c/class_26_B.d (-fPIC -O)
PASS -> ERROR: run/c/class_26_B.d (-fPIC -release)
PASS -> ERROR: run/c/class_26_B.d (-O -release)
PASS -> ERROR: run/c/class_26_B.d (-g -inline -fPIC)
PASS -> FAIL: run/c/class_26_B.d (-g -inline -O)
PASS -> ERROR: run/c/class_26_B.d (-g -inline -release)
PASS -> FAIL: run/c/class_26_B.d (-g -fPIC -O)
PASS -> ERROR: run/c/class_26_B.d (-g -fPIC -release)
PASS -> ERROR: run/c/class_26_B.d (-g -O -release)
PASS -> FAIL: run/c/class_26_B.d (-inline -fPIC -O)
PASS -> ERROR: run/c/class_26_B.d (-inline -fPIC -release)
PASS -> ERROR: run/c/class_26_B.d (-inline -O -release)
PASS -> ERROR: run/c/class_26_B.d (-fPIC -O -release)
PASS -> FAIL: run/c/class_26_B.d (-g -inline -fPIC -O)
PASS -> ERROR: run/c/class_26_B.d (-g -inline -fPIC -release)
PASS -> ERROR: run/c/class_26_B.d (-g -fPIC -O -release)
PASS -> ERROR: run/c/class_26_B.d (-inline -fPIC -O -release)
PASS -> ERROR: run/c/class_26_B.d (-g -inline -fPIC -O -release)
PASS -> ERROR: run/c/class_26_B.d (-g -inline -O -release)

Known internal compiler errors with messages: (for details see http://dstress.kuehne.cn/polishing/dmd-internal.txt)

dmd-0.164.bin: expression.c:5739: virtual Expression* MinAssignExp::semantic(Scope*): Assertion `e2->type->isfloating()' failed.
dmd-0.164.bin: expression.c:725: virtual void Expression::toMangleBuffer(OutBuffer*): Assertion `0' failed.
dmd-0.164.bin: func.c:475: virtual void FuncDeclaration::semantic3(Scope*): Assertion `0' failed.
dmd-0.164.bin: template.c:2170: TemplateDeclaration* TemplateInstance::findTemplateDeclaration(Scope*): Assertion `s->parent' failed.
dmd-0.164.bin: tocsym.c:143: virtual Symbol* VarDeclaration::toSymbol(): Assertion `!needThis()' failed.
dmd-0.164.bin: toobj.c:194: virtual void ClassDeclaration::toObjFile(): Assertion `!scope' failed.
Internal error: ../ztc/cgcod.c 175
Internal error: ../ztc/cgcod.c 562
Internal error: ../ztc/cod1.c 1656


Summary: (288K)
http://dstress.kuehne.cn/www/dstress.html

Details: (629K)
http://dstress.kuehne.cn/www/dmd-0.164.html

Log: (1,6M)
http://dstress.kuehne.cn/raw_results/linux-amd64_dmd-0.164.log.gz

Thomas

August 17, 2006
class_26_A and class_26_B are invalid code. Both return a delegate that relies on the stack frame of foo() existing, but the delegate is called after foo() has exited.


More technically,

    1. dg contains the 'this' pointer for the instance of class C
    2. the instance of class C contains a member that is the frame pointer for the stack instance of foo()
    3. the stack instance of foo() contains a frame pointer for the stack instance of main()

dg(), to get at main.status, has to walk back through 1, 2 and 3. After foo() has exited, (2) points to garbage, and so cannot get a correct value for (3), and failure ensues.

This will be an excellent test case when D implements the ability for delegates to 'escape', but that won't be for 1.0.
August 18, 2006
Scratch that, I think I found a way to make it work. Leave the test cases unchanged in dstress.
August 18, 2006
Walter Bright schrieb am 2006-08-17:
> class_26_A and class_26_B are invalid code. Both return a delegate that relies on the stack frame of foo() existing, but the delegate is called after foo() has exited.
>
>
> More technically,
>
>      1. dg contains the 'this' pointer for the instance of class C
>      2. the instance of class C contains a member that is the frame
> pointer for the stack instance of foo()
>      3. the stack instance of foo() contains a frame pointer for the
> stack instance of main()
>
> dg(), to get at main.status, has to walk back through 1, 2 and 3. After foo() has exited, (2) points to garbage, and so cannot get a correct value for (3), and failure ensues.
>
> This will be an excellent test case when D implements the ability for delegates to 'escape', but that won't be for 1.0.

Thanks, fixed

Thomas


August 18, 2006
Walter Bright schrieb am 2006-08-18:
> Scratch that, I think I found a way to make it work. Leave the test cases unchanged in dstress.

Glad to know *g*

Thomas