[Bug middle-end/101062] [10/11/12 Regression] wrong code with "-O2 -fno-toplevel-reorder -frename-registers"
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jun 17 08:20:47 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101062
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I have tried to backport this patch to the 11 branch, but unlike the trunk, it
doesn't build there, with
atree.ads:3844:34: size for "Node_Record" too small
make[3]: *** [../../gcc/ada/gcc-interface/Make-lang.in:139: ada/errout.o] Error
1
(and many further occurrences of the same error).
Seems the stor-layout.c changes trigger during ada/errout.o compilation just
once, on QUAL_UNION_TYPE atree.ads:3844:34: size for "Node_Record" too small
make[3]: *** [../../gcc/ada/gcc-interface/Make-lang.in:139: ada/errout.o] Error
1
which has byte size 28 and bitfield FIELD_DECL S0 with the same byte size (224
bits) and another bitfield FIELD_DECL O with the same size.
The code then adds two bit field representatives with the same size.
Eric, any idea what's going on? Shall I readd if (TREE_CODE (t) ==
QUAL_UNION_TYPE) return; at the start function and thus ignore QUAL_UNION_TYPE
and handle only UNION_TYPEs, or should the bitfield representatives in
QUAL_UNION_TYPE get some DECL_QUALIFIER (either one that always evaluates to
false, or the same as corresponding bitfield), something else?
Wonder what is different that it works on the trunk...
More information about the Gcc-bugs
mailing list