aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Belevantsev <abel@gcc.gnu.org>2010-01-14 14:22:20 +0300
committerAndrey Belevantsev <abel@gcc.gnu.org>2010-01-14 14:22:20 +0300
commit65b659ff8ae470763e003887546bd7c5cb5d39a7 (patch)
treeb6587a1669aa2daf63c3afd103696461b8fc66e3
parentc6486552090f07189b36075052a08069511f983c (diff)
downloadgcc-65b659ff8ae470763e003887546bd7c5cb5d39a7.zip
gcc-65b659ff8ae470763e003887546bd7c5cb5d39a7.tar.gz
gcc-65b659ff8ae470763e003887546bd7c5cb5d39a7.tar.bz2
re PR rtl-optimization/42246 (ICE in init_seqno for 186.crafty with sel-sched)
PR rtl-optimization/42246 * sel-sched-ir.h (get_all_loop_exits): Include exits from inner loops. From-SVN: r155900
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/sel-sched-ir.h3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr42246-2.f21
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b45aa5a..b9b1b32 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2010-01-14 Andrey Belevantsev <abel@ispras.ru>
+ PR rtl-optimization/42246
+ * sel-sched-ir.h (get_all_loop_exits): Include exits from inner
+ loops.
+
+2010-01-14 Andrey Belevantsev <abel@ispras.ru>
+
* sel-sched.c (compute_av_set_at_bb_end): Do not test that number of
all successors is the same as number of successors in current region.
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index 0d8b0fc..b5121c0 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -1147,7 +1147,8 @@ get_all_loop_exits (basic_block bb)
/* Traverse all loop headers. */
for (i = 0; VEC_iterate (edge, exits, i, e); i++)
- if (in_current_region_p (e->dest))
+ if (in_current_region_p (e->dest)
+ || inner_loop_header_p (e->dest))
{
VEC(edge, heap) *next_exits = get_all_loop_exits (e->dest);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d6f013e..341c535 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2010-01-14 Alexander Monakov <amonakov@ispras.ru>
+ PR rtl-optimization/42246
+ * gfortran.dg/pr42246-2.f: New.
+
+2010-01-14 Alexander Monakov <amonakov@ispras.ru>
+
PR rtl-optimization/42389
* gcc.dg/pr42389.c: New.
diff --git a/gcc/testsuite/gfortran.dg/pr42246-2.f b/gcc/testsuite/gfortran.dg/pr42246-2.f
new file mode 100644
index 0000000..885e3a4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr42246-2.f
@@ -0,0 +1,21 @@
+C PR rtl-optimization/42246
+C { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } }
+C { dg-options "-O2 -fselective-scheduling -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops" }
+
+ subroutine distance(x,clo)
+ implicit real*8 (a-h,o-z)
+ dimension x(2,6),x1(2,6),clo(6)
+ do 60 i=1,2
+ do 20 j=1,6
+ x(i,j)=clo(j)
+ 20 continue
+ do 40 iq=1,6
+ x1(i,iq)=0.0d0
+ 40 continue
+ do 50 j=1,6
+ x(i,j)=x1(i,j)
+ 50 continue
+ 60 continue
+ return
+ end
+