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