This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/38745] [4.4 Regression] ICE: statement makes a memory store, but has no VDEFS
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Jan 2009 23:10:57 -0000
- Subject: [Bug tree-optimization/38745] [4.4 Regression] ICE: statement makes a memory store, but has no VDEFS
- References: <bug-38745-16726@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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