https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91131
--- Comment #5 from Per Dalgas Jakobsen <pdj at knaldgas dot dk> --- (In reply to Richard Biener from comment #2) > So your complaint is that > > struct Reg_T { > unsigned int a : 3; > unsigned int b : 1; > unsigned int c : 4; > } __attribute__((packed)); > > volatile struct Reg_T Reg_A; > ... > Reg_A = (struct Reg_T){ .a = 0, .b = 0, .c = 0 }; > > does not yield a single store, correct? Primary complaint, Yes. Secondary complaint is the use of RAM-memory locations for constants, where an immediate would be more efficient. Especially on a microcontroller with 32 bytes of RAM...