------- Comment #10 from rakdver at gcc dot gnu dot org  2006-03-14 01:01 
-------
The following patch should fix the problem.  I am fairly sure a similar check
used to be somewhere in ivopts, but it probably got lost when MEM_REFs were
introduced (I am somewhat surprised ivopts do not ICE and produce something
that actually resembles a correct code in this case...)

Index: tree-ssa-loop-ivopts.c
===================================================================
*** tree-ssa-loop-ivopts.c      (revision 111993)
--- tree-ssa-loop-ivopts.c      (working copy)
*************** find_interesting_uses_address (struct iv
*** 1482,1489 ****

    /* Ignore bitfields for now.  Not really something terribly complicated
       to handle.  TODO.  */
!   if (TREE_CODE (base) == COMPONENT_REF
!       && DECL_NONADDRESSABLE_P (TREE_OPERAND (base, 1)))
      goto fail;

    if (STRICT_ALIGNMENT
--- 1482,1490 ----

    /* Ignore bitfields for now.  Not really something terribly complicated
       to handle.  TODO.  */
!   if (TREE_CODE (base) == BIT_FIELD_REF
!       || (TREE_CODE (base) == COMPONENT_REF
!         && DECL_NONADDRESSABLE_P (TREE_OPERAND (base, 1))))
      goto fail;


-- 


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

Reply via email to