The testcase I'm going to attach generates a miscompilation on the 3.4 branch. The bug cannot be reproduced on 4.0 but might actually be latent there.
The code it's copying 4 1-bit fields from one structure to a different one. The internal bit offsets of the fields are different by just one bit between the two structures. This is an except of the generate code: lsl r18 # source bitfield disposition is 1bit # shifited compared to the original, so GCC # adjust it andi r24,lo8(-25) # clear bits it's going to write mov r25,r18 clr r25 # *BUG* it will always write zero # instead of copying the value andi r25,lo8(16) andi r18,lo8(8) or r24,r18 # write correct bit or r24,r25 # write zero (sigh!) -- Summary: [3.4 Regression] Miscompilation with bitfields Product: gcc Version: unknown Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: giovannibajo at libero dot it CC: aleph at develer dot com,bernie at develer dot com,gcc- bugs at gcc dot gnu dot org,sayle at gcc dot gnu dot org GCC target triplet: avr-elf http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19329