http://bugzilla.gdcproject.org/show_bug.cgi?id=215
--- Comment #2 from Iain Buclaw <ibuc...@gdcproject.org> --- (In reply to Johannes Pfau from comment #1) > OK, found the problem: > > We should never set DECL_OFFSET_ALIGN to 0. The backend divides by > DECL_OFFSET_ALIGN. If it divides by zero the result is a null tree which > will then likely lead to a segfault. > > In types.cc(visit(TypeStruct *t)) we set TYPE_SIZE, TYPE_ALIGN etc. But for > the union in the test case 'structsize' and 'alignsize' are 0. This is > probably because of the string mixin in the union? I guess setting TYPE_SIZE > and TYPE_ALIGN to 0 could not cause other issues as well. > > Anyway, we then have a struct with this union as a field. For this struct we > call layout_aggregate_type which calls layout_aggregate_members, > layout_aggregate_members again and finally insert_aggregate_field. There we > set DECL_OFFSET_ALIGN to 0: > > SET_DECL_OFFSET_ALIGN (field, TYPE_ALIGN (TREE_TYPE (field))); > > Always fascinating how such issues only show up on some architectures. It's > clearly not architecture specific code, it just seems to be different > optimizations can completely hide such problems. > > > > @Iain would be great if you could have a look at this. Once this is fixed > we'll have master/ updated gdc-5 working 100% on ARM again. > Looks like this is set in the frontend (AnonDeclaration::setFieldOffset. I'll raise a fix upstream and commit locally too. -- You are receiving this mail because: You are watching all bug changes.