This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/54967] [4.8 Regression] ICE in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:55
- From: "hubicka at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 19 Oct 2012 12:50:57 +0000
- Subject: [Bug tree-optimization/54967] [4.8 Regression] ICE in check_loop_closed_ssa_use, at tree-ssa-loop-manip.c:55
- Auto-submitted: auto-generated
- References: <bug-54967-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54967
--- Comment #7 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-10-19 12:50:57 UTC ---
OK,
the problem is that unloop is shuffling a basic block out of the outer loop:
DO m=1,6
after unrolling the inner loop:
DO j=1,2
12 times.
So here are several problems
1) I need to work out what to do when unloop moves basic blocks out of the loop
and why it happens in this case
2) array bound is based on array access
n_29 = n_5 + 1;
_45 = (integer(kind=8)) n_29;
_58 = _45 + -1;
c_map_mat[_58] = m_1;
and it is 12 instead of 2 because we lose track of the fact that the array is 2
dimensional with known bounds.
Somehow we should keep track of this.
3) tree-ssa-loop-niter ought to take into account known bounds on IV variables
of the outer loop when computing the inner loop.
Honza