[Bug tree-optimization/56817] [4.8/4.9 Regression] ICE in hide_evolution_in_other_loops_than_loop
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 3 08:21:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56817
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2013-04-03
CC| |hubicka at gcc dot gnu.org
AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org
|gnu.org |
Target Milestone|--- |4.8.1
Ever Confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2013-04-03 08:21:29 UTC ---
Usually a sign of bogus wrto loop argument.
194 /* Induction variables are constants. */
195 if (!simple_iv (loop, loop_containing_stmt (stmt), op, &iv, false))
196 return false;
op is defined in loop 4 which means it will get an evolution evolving in
loop 4, but stmt is in loop 6. Both are nested inside loop (loop 1),
but they are not nested inside each other.
Which means you cannot compute a sensible evolution for op in loop 6
(which in the end means that simple_iv should return false, but that it
should not call analyze_scalar_evolution_in_loop for this loop/op combination).
Note that the caller above (tree_estimate_loop_size) is probably interested
in the evolution of 'op' in loop 'loop', not in the loop of the stmt
that uses op. No? Thus,
Index: tree-ssa-loop-ivcanon.c
===================================================================
--- tree-ssa-loop-ivcanon.c (revision 197356)
+++ tree-ssa-loop-ivcanon.c (working copy)
@@ -192,7 +192,7 @@ constant_after_peeling (tree op, gimple
}
/* Induction variables are constants. */
- if (!simple_iv (loop, loop_containing_stmt (stmt), op, &iv, false))
+ if (!simple_iv (loop, loop, op, &iv, false))
return false;
if (!is_gimple_min_invariant (iv.base))
return false;
looks what we are interested in.
More information about the Gcc-bugs
mailing list