------- 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