Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
June 07, 2006 DMD-0.160 regressions | ||||
---|---|---|---|---|
| ||||
Attachments: | 784 regressions between DMD-0.158 and DMD-0.160 were found, however all of them are inline assembler tests that previously failed to compile and now fail to run if compiled with "-fPIC". Summary: (529K) http://dstress.kuehne.cn/www/dstress.html Details: (905K) http://dstress.kuehne.cn/www/dmd-0.160.html Log: (1.8M) http://dstress.kuehne.cn/raw_results/linux-amd64_dmd-0.160.log.gz Known internal compiler errors with messages: dmd: expression.c:5635: virtual Expression* MinAssignExp::semantic(Scope*): Assertion `e2->type->isfloating()' failed. dmd: expression.c:725: virtual void Expression::toMangleBuffer(OutBuffer*): Assertion `0' failed. dmd: func.c:453: virtual void FuncDeclaration::semantic3(Scope*): Assertion `0' failed. dmd: template.c:2128: TemplateDeclaration* TemplateInstance::findTemplateDeclaration(Scope*): Assertion `s->parent' failed. dmd: tocsym.c:143: virtual Symbol* VarDeclaration::toSymbol(): Assertion `!needThis()' failed. dmd: toobj.c:191: virtual void ClassDeclaration::toObjFile(): Assertion `!scope' failed. Internal error: e2ir.c 736 Internal error: ../ztc/cgcod.c 175 Internal error: ../ztc/cgcod.c 562 Thomas |
June 07, 2006 Re: DMD-0.160 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Kuehne | Thomas Kuehne wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> 784 regressions between DMD-0.158 and DMD-0.160 were found,
> however all of them are inline assembler tests that previously
> failed to compile and now fail to run if compiled with "-fPIC".
The tests rely on accessing static data from inline assembler. Accessing static data with -fPIC requires special code to be generated, but with inline assembler you have to add that code in manually. The compiler won't do it automatically - after all, inline assembler means you control the flame!
So I don't believe it's a compiler bug.
You can alter the inline assembler to pick the data off the stack instead of static data, then it should work.
|
June 08, 2006 Re: DMD-0.160 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Kuehne | Thomas -
Are all of the active DStress bugs included in bugzilla yet?
If not, is there any easy way to tell which are missing?
You work on DStress is much appreciated, it really makes D feel like a solid product.
Thomas Kuehne wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> 784 regressions between DMD-0.158 and DMD-0.160 were found,
> however all of them are inline assembler tests that previously
> failed to compile and now fail to run if compiled with "-fPIC".
>
> Summary: (529K)
> http://dstress.kuehne.cn/www/dstress.html
>
> Details: (905K)
> http://dstress.kuehne.cn/www/dmd-0.160.html
>
> Log: (1.8M)
> http://dstress.kuehne.cn/raw_results/linux-amd64_dmd-0.160.log.gz
>
> Known internal compiler errors with messages:
> dmd: expression.c:5635: virtual Expression* MinAssignExp::semantic(Scope*): Assertion `e2->type->isfloating()' failed.
> dmd: expression.c:725: virtual void Expression::toMangleBuffer(OutBuffer*): Assertion `0' failed.
> dmd: func.c:453: virtual void FuncDeclaration::semantic3(Scope*): Assertion `0' failed.
> dmd: template.c:2128: TemplateDeclaration* TemplateInstance::findTemplateDeclaration(Scope*): Assertion `s->parent' failed.
> dmd: tocsym.c:143: virtual Symbol* VarDeclaration::toSymbol(): Assertion `!needThis()' failed.
> dmd: toobj.c:191: virtual void ClassDeclaration::toObjFile(): Assertion `!scope' failed.
> Internal error: e2ir.c 736
> Internal error: ../ztc/cgcod.c 175
> Internal error: ../ztc/cgcod.c 562
>
> Thomas
>
>
>
> -----BEGIN PGP SIGNATURE-----
>
> iD8DBQFEhqhS3w+/yD4P9tIRAuqGAJ41Kd8cbBQvcJfQ6P++yP+HjM2augCg0AmQ
> EHNzcynuMnkGb0YGKj2vgbo=
> =5Z1U
> -----END PGP SIGNATURE-----
|
June 08, 2006 Re: DMD-0.160 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Don Clugston Attachments: | Don Clugston schrieb am 2006-06-08: > Are all of the active DStress bugs included in bugzilla yet? No. > If not, is there any easy way to tell which are missing? 1) Find all test cases with unexpected results. 2) Ignore all asm_* test for now. 3) Ensure that the test case isn't buggy. 4) Ignore all test that contain the string "puremagic.com/bugzilla". 5) Ignore all test cases whose names could be found in the bugzilla. 6) After preparing snacks and drinks: File the bug in bugzilla and include links to the original bug report as well as to the test case(s). Thomas |
June 08, 2006 Re: DMD-0.160 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright Attachments: | Walter Bright schrieb am 2006-06-07:
> Thomas Kuehne wrote:
>>
>> 784 regressions between DMD-0.158 and DMD-0.160 were found, however all of them are inline assembler tests that previously failed to compile and now fail to run if compiled with "-fPIC".
>
> The tests rely on accessing static data from inline assembler. Accessing static data with -fPIC requires special code to be generated, but with inline assembler you have to add that code in manually. The compiler won't do it automatically - after all, inline assembler means you control the flame!
>
> So I don't believe it's a compiler bug.
>
> You can alter the inline assembler to pick the data off the stack instead of static data, then it should work.
I never checked how DMD stores constant data ... will take some time to fix. How about defining version=D_PIC if compiling with -fPIC, just like D_Coverage?
Thomas
|
June 08, 2006 Re: DMD-0.160 regressions | ||||
---|---|---|---|---|
| ||||
Posted in reply to Thomas Kuehne Attachments: | Walter Bright schrieb am 2006-06-07:
>You can alter the inline assembler to pick the data off the stack instead of static data, then it should work.
Should was the right word ^_^
# void main(){
# float[] a = new float[4];
# float[] b = new float[4];
#
# version(noSegfault){
# float[] c = new float[4];
# }
#
# asm{
# movups XMM0, a;
# movups b, XMM0;
# }
# }
segfaults:
dmd a.d && ./a
doesn't segfault:
dmd -version=noSegfault a.d && ./a
Thomas
|
Copyright © 1999-2021 by the D Language Foundation