https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102024
--- Comment #33 from Xi Ruoyao <xry111 at mengyan1223 dot wang> --- (In reply to Segher Boessenkool from comment #31) > Well, what do other compilers do? It's not such a good idea to break ABI > compatibility with the 1990's compilers ;-) Does someone have access to a Greenhills compiler here? (In reply to Jakub Jelinek from comment #32) > I think best would be to ignore them altogether, especially if other > compilers do that too. I agree the behavior of clang (or previous G++) is more "rational". To make things more "interesting": > So in struct B { int : 0; double a, b; }; it will go into GPR and FPR GCC trunk puts "a" into FPR, not GPR! So the "leading" zero-width bit-fields are ignored (GCC does not think it's a part of any "64-bit chunk"), but other zero-width bit-fields are accounted... This is just puzzling to me. I'll make a patch to match the behavior of clang.