https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120511
--- Comment #7 from Chris Leonard <chris.j.leonard at proton dot me> --- The function `process_init_element` in source file gcc/c/c-typeck.cc clears `constructor_zeroinit` if `!integer_zerop (value.value)`. The problem is triggered by using a floating-point type for the initial member instead of an integer, so maybe this is related. Should we check `!zerop (value.value)` instead? Apologies, I would try this myself but my current machine takes about 10 hours to build GCC, and I deleted my build files to save disk space.