mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/84057 (ICE: Segmentation fault (in can_remove_branch_p))
2018-01-29 Richard Biener <rguenther@suse.de> PR tree-optimization/84057 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already removed paths when removing edges. * gcc.dg/graphite/pr84057.c: New testcase. From-SVN: r257139
This commit is contained in:
parent
3be34c0b1d
commit
27837e0c35
|
|
@ -1,3 +1,9 @@
|
|||
2018-01-29 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/84057
|
||||
* tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
|
||||
removed paths when removing edges.
|
||||
|
||||
2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* doc/invoke.texi: Replace -mfunction-return==@var{choice} with
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2018-01-29 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/84057
|
||||
* gcc.dg/graphite/pr84057.c: New testcase.
|
||||
|
||||
2017-01-29 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/84073
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fgraphite -funroll-loops -fno-tree-ccp -fno-tree-dce" } */
|
||||
|
||||
int ue;
|
||||
|
||||
void
|
||||
fr (int ct)
|
||||
{
|
||||
int au = 0;
|
||||
int *ra = &au;
|
||||
|
||||
while (au < 1)
|
||||
{
|
||||
au -= 0x7878788;
|
||||
if (au != ct && ue != 0)
|
||||
{
|
||||
while (au < 1)
|
||||
{
|
||||
}
|
||||
|
||||
fc:
|
||||
while (ct != 0)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (au = 0; au < 2; ++au)
|
||||
if (ct != 0)
|
||||
goto fc;
|
||||
}
|
||||
|
|
@ -660,14 +660,21 @@ unloop_loops (bitmap loop_closed_ssa_invalidated,
|
|||
loops_to_unloop.release ();
|
||||
loops_to_unloop_nunroll.release ();
|
||||
|
||||
/* Remove edges in peeled copies. */
|
||||
/* Remove edges in peeled copies. Given remove_path removes dominated
|
||||
regions we need to cope with removal of already removed paths. */
|
||||
unsigned i;
|
||||
edge e;
|
||||
auto_vec<int, 20> src_bbs;
|
||||
src_bbs.reserve_exact (edges_to_remove.length ());
|
||||
FOR_EACH_VEC_ELT (edges_to_remove, i, e)
|
||||
{
|
||||
bool ok = remove_path (e, irred_invalidated, loop_closed_ssa_invalidated);
|
||||
gcc_assert (ok);
|
||||
}
|
||||
src_bbs.quick_push (e->src->index);
|
||||
FOR_EACH_VEC_ELT (edges_to_remove, i, e)
|
||||
if (BASIC_BLOCK_FOR_FN (cfun, src_bbs[i]))
|
||||
{
|
||||
bool ok = remove_path (e, irred_invalidated,
|
||||
loop_closed_ssa_invalidated);
|
||||
gcc_assert (ok);
|
||||
}
|
||||
edges_to_remove.release ();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue