[Bug tree-optimization/47575] store-motion removes global stores from endless loops
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Feb 1 16:26:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47575
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2011.02.01 16:25:49
CC| |rakdver at gcc dot gnu.org
Ever Confirmed|0 |1
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-02-01 16:25:49 UTC ---
Something like
Index: tree-ssa-loop-im.c
===================================================================
--- tree-ssa-loop-im.c (revision 169487)
+++ tree-ssa-loop-im.c (working copy)
@@ -2329,7 +2329,10 @@ can_sm_ref_p (struct loop *loop, mem_ref
base = get_base_address (ref->mem);
if ((tree_could_trap_p (ref->mem)
|| (DECL_P (base) && TREE_READONLY (base)))
- && !ref_always_accessed_p (loop, ref, true))
+ && (!ref_always_accessed_p (loop, ref, true))
+ || (TREE_CODE (base) == MEM_REF
+ && ptr_deref_may_alias_global_p (TREE_OPERAND (base, 0))
+ && !loop->exits->e))
return false;
/* And it must be independent on all other memory references
minus introducing a new predicate loop_has_no_exit_p ().
More information about the Gcc-bugs
mailing list