------- Comment #8 from rguenth at gcc dot gnu dot org  2010-07-19 12:47 -------
Well, the list of problems is endless it seems - we are not consistent in
how we build accesses for

  declD.1.u1.a.align = 13;

vs.

  decl$u1$a$align_5 = BIT_FIELD_REF <MEM[(<unnamed-unsigned:24> *)&declD.2],
24, 0>;

(the former is a COMPONENT_REF with DECL_BIT_FIELD while the latter is a
BIT_FIELD_REF.  The first access will be [0, 24] while the later [0, 32].
This causes us to scalarize

  declD.2 = declD.1;

as

  declD.2 = declD.2;

because we cannot find a matching access in load_assign_lhs_subreplacements
and drop into the strange code for SRA_UDH_LEFT.

So eventually we should not drop bit-field-ref kind outer accesses in
favor of handling them as partial_ref or we should do the same for
DECL_BIT_FIELD component-refs.

I'm a bit lost and will attach the current WIP patch.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44972

Reply via email to