[Bug d/87824] x86_64-linux multilib issues

ibuclaw at gdcproject dot org gcc-bugzilla@gcc.gnu.org
Sat Nov 10 12:04:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87824

--- Comment #3 from Iain Buclaw <ibuclaw at gdcproject dot org> ---
(In reply to Jakub Jelinek from comment #1)
> In i686-linux bootstrap/regtest, I see:
>                 === gdc tests ===
> 
> 
> Running target unix
> FAIL: runnable/cppa.d   execution test
> FAIL: runnable/cppa.d -g   execution test
> FAIL: runnable/cppa.d -g -shared-libphobos   execution test
> FAIL: runnable/cppa.d -shared-libphobos   execution test

This would be dependent on available C++ libraries I guess.  I couldn't
reproduce locally, I'll try in a more controlled environment.


> FAIL: runnable/eh.d -O2   execution test
> FAIL: runnable/eh.d -O2 -shared-libphobos   execution test

On x86, the EH handling is unable to determine that two independently thrown
exceptions should be chained together.

Currently this is determined by comparing the LSDA, but this doesn't work when
a function is partitioned into hot and cold blocks.


> FAIL: runnable/nulltype.d   execution test
> FAIL: runnable/nulltype.d -O2   execution test
> FAIL: runnable/nulltype.d -O2 -shared-libphobos   execution test
> FAIL: runnable/nulltype.d -g   execution test
> FAIL: runnable/nulltype.d -g -O2   execution test
> FAIL: runnable/nulltype.d -g -O2 -shared-libphobos   execution test
> FAIL: runnable/nulltype.d -g -shared-libphobos   execution test
> FAIL: runnable/nulltype.d -shared-libphobos   execution test

This is related to returning null associative array types - internally, a
struct{void *ptr}.

Returning {.ptr=NULL} instead of {} is enough for the unoptimized tests to
pass.  For the optimized tests, also setting TYPE_TRANSPARENT_AGGR seems to be
required as well.

It does make sense as part of the D language to treat associative arrays as
just a void*, though I wouldn't know why not setting TYPE_TRANSPARENT_AGGR
would have an affect on returning {} in an apparent wrong way.


> FAIL: runnable/template1.d   execution test
> FAIL: runnable/template1.d -O2   execution test
> FAIL: runnable/template1.d -O2 -frelease   execution test
> FAIL: runnable/template1.d -O2 -frelease -shared-libphobos   execution test
> FAIL: runnable/template1.d -O2 -shared-libphobos   execution test
> FAIL: runnable/template1.d -frelease   execution test
> FAIL: runnable/template1.d -frelease -shared-libphobos   execution test
> FAIL: runnable/template1.d -g   execution test
> FAIL: runnable/template1.d -g -O2   execution test
> FAIL: runnable/template1.d -g -O2 -frelease   execution test
> FAIL: runnable/template1.d -g -O2 -frelease -shared-libphobos   execution
> test
> FAIL: runnable/template1.d -g -O2 -shared-libphobos   execution test
> FAIL: runnable/template1.d -g -frelease   execution test
> FAIL: runnable/template1.d -g -frelease -shared-libphobos   execution test
> FAIL: runnable/template1.d -g -shared-libphobos   execution test
> FAIL: runnable/template1.d -shared-libphobos   execution test
> 

This is caused by misalignment of long.  Will send a patch for this.


> FAIL: libphobos.unittests/phobos/shared/std.typecons
> 

std.typecons failed for same reason as runnable/template1.d


More information about the Gcc-bugs mailing list