On 02/01/2012 11:09 AM, David Miller wrote:
From: Michael Matz<m...@suse.de>
Date: Wed, 1 Feb 2012 18:41:05 +0100 (CET)
One problem is that it's not a new problem, GCC emitted similar code since
about forever, and still they turned up only now (well, probably because
ia64 is dead, but sparc64 should have similar problems).
Indeed, on sparc64 it does do the silly 64-bit access too:
wrong:
ldx [%o0+8], %g2
sethi %hi(2147483648), %g1
or %g2, %g1, %g1
jmp %o7+8
stx %g1, [%o0+8]
Personally I've avoided C bitfields like the plague in any code I've
written.
Torvald Riegel & I were told that was kernel policy when we brought up
the upcoming bitfield semantic changes with some of the linux kernel
folks last year.
Regardless of the kernel team's policy WRT bitfields, I believe fixing
the semantics to avoid creation of data races in bitfields is going to
be important. I'm hoping Aldy can return to that task soon and he and
Richi can come to some agreement on the implementation with gcc-4.8 as a
target.
jeff