re PR rtl-optimization/13159 (FAIL: gcc.c-torture/compile/930621-1.c)
PR opt/13159 * cfgloopanal.c (mark_irreducible_loops): Fix the strongly connected components detection. * loop-unswitch.c (unswitch_loop): Preserve simple preheaders. * gcc.c-torture/compile/20031227-1.c: New test. From-SVN: r75174
This commit is contained in:
parent
9bd85baa69
commit
bf86d71e8a
|
@ -1,3 +1,10 @@
|
||||||
|
2003-12-27 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
|
||||||
|
|
||||||
|
PR opt/13159
|
||||||
|
* cfgloopanal.c (mark_irreducible_loops): Fix the strongly connected
|
||||||
|
components detection.
|
||||||
|
* loop-unswitch.c (unswitch_loop): Preserve simple preheaders.
|
||||||
|
|
||||||
2003-12-27 Bernardo Innocenti <bernie@develer.com>
|
2003-12-27 Bernardo Innocenti <bernie@develer.com>
|
||||||
|
|
||||||
* config/m68k/uclinux.h (LIB_SPEC): Add elf2flt magic required for
|
* config/m68k/uclinux.h (LIB_SPEC): Add elf2flt magic required for
|
||||||
|
|
|
@ -1247,7 +1247,7 @@ mark_irreducible_loops (struct loops *loops)
|
||||||
: e->dest->index + 1;
|
: e->dest->index + 1;
|
||||||
if (closed[sidx])
|
if (closed[sidx])
|
||||||
{
|
{
|
||||||
if (!closed[mri[sidx]])
|
if (mri[sidx] != -1 && !closed[mri[sidx]])
|
||||||
{
|
{
|
||||||
if (mr[sidx] < mr[idx])
|
if (mr[sidx] < mr[idx])
|
||||||
{
|
{
|
||||||
|
|
|
@ -402,5 +402,9 @@ unswitch_loop (struct loops *loops, struct loop *loop, basic_block unswitch_on)
|
||||||
fix_loop_placement (loop);
|
fix_loop_placement (loop);
|
||||||
fix_loop_placement (nloop);
|
fix_loop_placement (nloop);
|
||||||
|
|
||||||
|
/* Preserve the simple loop preheaders. */
|
||||||
|
loop_split_edge_with (loop_preheader_edge (loop), NULL_RTX, loops);
|
||||||
|
loop_split_edge_with (loop_preheader_edge (nloop), NULL_RTX, loops);
|
||||||
|
|
||||||
return nloop;
|
return nloop;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2003-12-27 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>
|
||||||
|
|
||||||
|
* gcc.c-torture/compile/20031227-1.c: New test.
|
||||||
|
|
||||||
2003-12-23 Mark Mitchell <mark@codesourcery.com>
|
2003-12-23 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
* g++.dg/bprob/bprob.exp: Load target-supports.exp
|
* g++.dg/bprob/bprob.exp: Load target-supports.exp
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
/* PR opt/13159 -- test unswitching a loop multiple times. */
|
||||||
|
|
||||||
|
void
|
||||||
|
foo (void)
|
||||||
|
{
|
||||||
|
long j, k, p, g;
|
||||||
|
|
||||||
|
while (p)
|
||||||
|
{
|
||||||
|
while (k < 0 && j < 0)
|
||||||
|
;
|
||||||
|
if (g)
|
||||||
|
;
|
||||||
|
else if (g)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue