At a wild guess, maybe strip_useless_type_conversions() is doing
something Bad.

Almost there. It looks like strip_useless_type_conversions is not used, and then something Bad happens.

The following patch fixes it, but it's completely untested.

2006-11-07  Paolo Bonzini  <[EMAIL PROTECTED]>

        * gimplify.c (fold_indirect_ref_rhs): Use
        STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.

Index: ../../gcc/gimplify.c
===================================================================
--- ../../gcc/gimplify.c        (revision 118481)
+++ ../../gcc/gimplify.c        (working copy)
@@ -3207,7 +3207,7 @@ fold_indirect_ref_rhs (tree t)
   tree sub = t;
   tree subtype;

-  STRIP_NOPS (sub);
+  STRIP_USELESS_TYPE_CONVERSION (sub);
   subtype = TREE_TYPE (sub);
   if (!POINTER_TYPE_P (subtype))
     return NULL_TREE;

If anybody could regtest it, this is a regression from 3.3, likely to be present in all 4.x branches.

Paolo

Reply via email to