Re: [PATCH] Fix tree parts of PR18041

2011-05-11 Thread Richard Guenther
On Tue, 10 May 2011, Richard Guenther wrote: > And I now get > > FAIL: gcc.target/i386/pr45903.c scan-assembler-not shr[qdl] > > because the optimization Jakub put in place relies on operations > carried out in smaller modes. > > That's of course a conflict of interest. I'm going to sit on thi

Re: [PATCH] Fix tree parts of PR18041

2011-05-11 Thread Richard Guenther
On Tue, 10 May 2011, Steven Bosscher wrote: > On Tue, May 10, 2011 at 1:25 PM, Richard Guenther wrote: > > The generated code is > > the same though, and still contains too many masking operations. > > The lowering you're planning -- does that mean lowering all bitfield > ops for all targets? Yo

Re: [PATCH] Fix tree parts of PR18041

2011-05-10 Thread Steven Bosscher
On Tue, May 10, 2011 at 1:25 PM, Richard Guenther wrote: > The generated code is > the same though, and still contains too many masking operations. The lowering you're planning -- does that mean lowering all bitfield ops for all targets? You've noticed "expand" makes some very conservative assump

Re: [PATCH] Fix tree parts of PR18041

2011-05-10 Thread Richard Guenther
On Tue, 10 May 2011, Richard Guenther wrote: > On Tue, 10 May 2011, Michael Matz wrote: > > > Hi, > > > > On Tue, 10 May 2011, Richard Guenther wrote: > > > > > struct B { > > > unsigned bit0 : 1; > > > unsigned bit1 : 1; > > > }; > > > > > > void > > > foo (struct B *b) > > > { > > > b-

Re: [PATCH] Fix tree parts of PR18041

2011-05-10 Thread Richard Guenther
On Tue, 10 May 2011, Michael Matz wrote: > Hi, > > On Tue, 10 May 2011, Richard Guenther wrote: > > > struct B { > > unsigned bit0 : 1; > > unsigned bit1 : 1; > > }; > > > > void > > foo (struct B *b) > > { > > b->bit0 = b->bit0 | b->bit1; > > } > > > > we with this patch generate > > >

Re: [PATCH] Fix tree parts of PR18041

2011-05-10 Thread Michael Matz
Hi, On Tue, 10 May 2011, Richard Guenther wrote: > struct B { > unsigned bit0 : 1; > unsigned bit1 : 1; > }; > > void > foo (struct B *b) > { > b->bit0 = b->bit0 | b->bit1; > } > > we with this patch generate > > D.2686_2 = b_1(D)->bit0; > D.2688_4 = b_1(D)->bit1; > D.2693_10 = D.2

[PATCH] Fix tree parts of PR18041

2011-05-10 Thread Richard Guenther
This patch makes us apply operand conversions of bitwise binary operations to the operation result instead, which in turn allows us to combine those conversions which helps bitfield related operations. For struct B { unsigned bit0 : 1; unsigned bit1 : 1; }; void foo (struct B *b) { b->bit