https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71366
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2016-06-01
Target Milestone|--- |7.0
Summary|ICE on valid code at -O3 on |[7 Regression] ICE on valid
|x86_64-linux-gnu: |code at -O3 on
|Segmentation fault |x86_64-linux-gnu:
| |Segmentation fault
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.
Program received signal SIGSEGV, Segmentation fault.
0x00000000008f7b16 in vec<loop*, va_gc, vl_embed>::length (
this=0xa5a5a5a5a5a5a5a5) at /space/rguenther/src/svn/trunk/gcc/vec.h:453
453 unsigned length (void) const { return m_vecpfx.m_num; }
looks like the loop struct is ggc_freed.
1309 if (canonicalize_loop_induction_variables
1310 (loop, false, ul, !flag_tree_loop_ivcanon))
(gdb) l
1311 {
1312 /* If we'll continue unrolling, we need to propagate constants
1313 within the new basic blocks to fold away induction variable
1314 computations; otherwise, the size might blow up before the
1315 iteration is complete and the IR eventually cleaned up. */
1316 if (loop_outer (loop_father) && !loop_father->aux)
1317 {
1318 father_stack.safe_push (loop_father);
1319 loop_father->aux = loop_father;
loop_outer (loop) != loop_father here. That's odd (and unexpected, it will
break the iteration scheme).