On Mon, Nov 05, 2012 at 05:20:46PM +0100, Jan Hubicka wrote:
> > Hi,
> > 
> > the patch below disables generation of aggregate jump functions from
> > bit-field stores because currently we depend on type size of the value
> > to determine the size of the stored value and that does not work with
> > bit-fields, making it impossible for IPA-CP to organize them in their
> > lattices.
> > 
> > If we ever decide aggregate jump functions for bit-fields are worth
> > the hassle, we might remove this limitation by storing and streaming
> > the size of the memory reference alongside the offset in the jump
> > functions (and IPA-CP lattices).
> > 
> > Bootstrapped and tested on x86_64-linux, needed for the aggregate
> > IPA-CP.  OK for trunk?
> > 
> > Thanks,
> > 
> > Martin
> > 
> > 
> > 2012-11-02  Martin Jambor  <mjam...@suse.cz>
> > 
> >     * ipa-prop.c (determine_known_aggregate_parts): Do not create
> >     aggregate jump functions for bit-fields.
> > 
> > Index: src/gcc/ipa-prop.c
> > ===================================================================
> > --- src.orig/gcc/ipa-prop.c
> > +++ src/gcc/ipa-prop.c
> > @@ -1295,7 +1295,10 @@ determine_known_aggregate_parts (gimple
> >  
> >        lhs = gimple_assign_lhs (stmt);
> >        rhs = gimple_assign_rhs1 (stmt);
> > -      if (!is_gimple_reg_type (rhs))
> > +      if (!is_gimple_reg_type (rhs)
> > +          || TREE_CODE (lhs) == BIT_FIELD_REF
> > +     || (TREE_CODE (lhs) == COMPONENT_REF
> > +         && DECL_BIT_FIELD (TREE_OPERAND (lhs, 1))))
> 
> I am not sure I understand motivation of this patch properly.  First I think
> BIT_FIELD_REF can be hidden inside chain of other REFs so you should probably
> look into all handled components.  What exactly goes wrong when your type size
> is bigger than the bitfield?
> 

I hit an assert in the patch I am about to post (I am writing the
changelog right now) I hit an assert checking that stuff does not
overlap in IPA-CP aggregate lattices.  My initial reaction was that I
did not want to deal with bit-fields, unless really necessary ;-)

However, that assert can be easily changed to bottomizing the lattice,
I will re-test with that and if there are no problems, this patch can
be omitted.

Thanks,

Martin

Reply via email to