Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
August 17, 2006 DMD-0.164 regressions | ||||
---|---|---|---|---|
| ||||
Attachments: | 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 Re: DMD-0.164 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Kuehne | 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 Re: DMD-0.164 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Scratch that, I think I found a way to make it work. Leave the test cases unchanged in dstress. |
August 18, 2006 Re: DMD-0.164 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright Attachments: | 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 Re: DMD-0.164 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright Attachments: | 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
|
Copyright © 1999-2021 by the D Language Foundation