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
+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>
* config/m68k/uclinux.h (LIB_SPEC): Add elf2flt magic required for
: e->dest->index + 1;
if (closed[sidx])
{
- if (!closed[mri[sidx]])
+ if (mri[sidx] != -1 && !closed[mri[sidx]])
{
if (mr[sidx] < mr[idx])
{
fix_loop_placement (loop);
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;
}
+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>
* g++.dg/bprob/bprob.exp: Load target-supports.exp
--- /dev/null
+/* 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)
+ ;
+ }
+}