diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2009-12-23 07:50:53 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2009-12-23 07:50:53 +0000 |
commit | b147df0bcf1b4a8c27d1f77d749d3aa154ca922e (patch) | |
tree | 6f9ee2fb101c38f369054f1b8130126717ed63f8 /gcc | |
parent | ce20f9d6742da634681df9d5f80e051be023a65e (diff) | |
download | gcc-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.graphite | 6 | ||||
-rw-r--r-- | gcc/graphite-sese-to-poly.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/graphite/pr42180.f90 | 20 |
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 |