Volatile operations and PRE

Paolo Bonzini paolo.bonzini@lu.unisi.ch
Tue Nov 7 17:20:00 GMT 2006


> 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  <bonzini@gnu.org>

         * 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



More information about the Gcc mailing list