https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109868
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- A little more reduced: ``` struct ClockImpl { virtual void addRef(); long tv_nsec; int : 0; }; void f() { ClockImpl b{}; } ``` So maybe this is a gimplifier issue producing the assignment to the zero-sized bitfield: b.D.2780 = 0; What is interesting is GCC 11 didn't produce the assignment but GCC 12 does. That might have been caused by r12-1150-g34aae6b561871d . I will look into it soon because we should not be emitting an assignment here ...