------- Comment #12 from rguenth at gcc dot gnu dot org  2009-01-22 23:10 
-------
Hm, the first forwprop dump looks sane:

  VIEW_CONVERT_EXPR<union u_u64>(c64).u.lo32.u.lo16.u.hi8 ={v} 1;

but then addressables1 comes along and rewrites c64 into SSA form ... and if
you fix it then the duplicate in tree-ssa-alias.c comes along and does it
again.

Maybe I should merge the split of addressables from tree-ssa-alias.c from
the alias-improvements branch.

Trivial fix for addressables:

Index: tree-ssa.c
===================================================================
--- tree-ssa.c  (revision 143555)
+++ tree-ssa.c  (working copy)
@@ -1728,7 +1728,8 @@ execute_update_addresses_taken (void)
       /* Global Variables, result decls cannot be changed.  */
       if (is_global_var (var)
           || TREE_CODE (var) == RESULT_DECL
-         || bitmap_bit_p (addresses_taken, DECL_UID (var)))
+         || bitmap_bit_p (addresses_taken, DECL_UID (var))
+         || bitmap_bit_p (not_reg_needs, DECL_UID (var)))
        continue;

       if (TREE_ADDRESSABLE (var))
@@ -1746,7 +1747,6 @@ execute_update_addresses_taken (void)
            }
        }
       if (!DECL_GIMPLE_REG_P (var)
-         && !bitmap_bit_p (not_reg_needs, DECL_UID (var))
          && (TREE_CODE (TREE_TYPE (var)) == COMPLEX_TYPE
              || TREE_CODE (TREE_TYPE (var)) == VECTOR_TYPE))
        {


-- 


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

Reply via email to