aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-12-23 07:50:53 +0000
committerSebastian Pop <spop@gcc.gnu.org>2009-12-23 07:50:53 +0000
commitb147df0bcf1b4a8c27d1f77d749d3aa154ca922e (patch)
tree6f9ee2fb101c38f369054f1b8130126717ed63f8 /gcc
parentce20f9d6742da634681df9d5f80e051be023a65e (diff)
downloadgcc-b147df0bcf1b4a8c27d1f77d749d3aa154ca922e.zip
gcc-b147df0bcf1b4a8c27d1f77d749d3aa154ca922e.tar.gz
gcc-b147df0bcf1b4a8c27d1f77d749d3aa154ca922e.tar.bz2
re PR middle-end/42180 (compiling induct.f90 with -ffast-math -O2 -fgraphite-identity ICEs gfortran)
Fix PR42180. 2009-12-18 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/42180 * graphite-sese-to-poly.c (split_reduction_stmt): Do not split blocks that contain only one statement. From-SVN: r155422
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog.graphite6
-rw-r--r--gcc/graphite-sese-to-poly.c3
-rw-r--r--gcc/testsuite/gfortran.dg/graphite/pr42180.f9020
3 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index 9f61066..ae3369e 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,3 +1,9 @@
+2009-12-18 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR middle-end/42180
+ * graphite-sese-to-poly.c (split_reduction_stmt): Do not split blocks
+ that contain only one statement.
+
2009-12-17 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/42393
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index 7b61ed7..5999a65 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -2450,6 +2450,9 @@ split_reduction_stmt (gimple stmt)
split_block (bb, stmt);
+ if (gsi_one_before_end_p (gsi_start_bb (bb)))
+ return bb;
+
gsi = gsi_last_bb (bb);
gsi_prev (&gsi);
e = split_block (bb, gsi_stmt (gsi));
diff --git a/gcc/testsuite/gfortran.dg/graphite/pr42180.f90 b/gcc/testsuite/gfortran.dg/graphite/pr42180.f90
new file mode 100644
index 0000000..6c8daea
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/graphite/pr42180.f90
@@ -0,0 +1,20 @@
+module mcc_m
+ integer, parameter, private :: longreal = selected_real_kind(15,90)
+contains
+ subroutine mutual_ind_cir_cir_coils (m, l12)
+ real (kind = longreal), intent(out) :: l12
+ real (kind = longreal), dimension(1:9), save :: zw
+ gauss:do i = 1, 9
+ theta_l12 = 0.0_longreal
+ theta1: do n1 = 1, 2*m
+ theta_1 = pi*real(n1,longreal)/real(m,longreal)
+ theta2: do n2 = 1, 2*m
+ numerator = -sin(theta_1)*tvx + cos(theta_1)*tvy
+ theta_l12 = theta_l12 + numerator/denominator
+ end do theta2
+ end do theta1
+ l12 = l12 + zw(i)*theta_l12
+ end do gauss
+ l12 = coefficient * l12
+ end subroutine mutual_ind_cir_cir_coils
+end module mcc_m