https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90883
--- Comment #37 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Marc Glisse from comment #1) > I am surprised the C++ FE doesn't do copy elision in either case. Anyway, > slow gives: > > MEM[(struct C *)&D.26222 + 7B] = {}; > D.26222.a = {}; > D.29804 = D.26222; > D.26222 ={v} {CLOBBER}; > return D.29804; > > I notice the useless aggregate copy in the middle. > > For the suboptimal handling of bitfields, in particular with padding, there > are already a number of reports in bugzilla. I should mention the C++ FE does now just `<retval> = {}` for fast and slow. This is why r15-9400-ge7bccec33beece fixes this.