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
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
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
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-
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
> >
>
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
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