[Bug target/19329] New: [3.4 Regression] Miscompilation with bitfields

giovannibajo at libero dot it gcc-bugzilla@gcc.gnu.org
Sat Jan 8 17:46:00 GMT 2005

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


More information about the Gcc-bugs mailing list