Thread overview
DMD-0.160 regressions
Jun 07, 2006
Thomas Kuehne
Jun 07, 2006
Walter Bright
Jun 08, 2006
Thomas Kuehne
Jun 08, 2006
Thomas Kuehne
Jun 08, 2006
Don Clugston
Jun 08, 2006
Thomas Kuehne
June 07, 2006
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
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
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
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
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
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