From a0f12cf8ea65bd183955c3eee91cea9d2080d3e5 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 12 Nov 2014 10:13:48 +0000 Subject: [PATCH] re PR bootstrap/63821 (ICE in verify_gimple during libgcc build starting with r217349) 2014-11-12 Richard Biener PR middle-end/63821 * match.pd: Add missing conversion to the -(T)-X pattern. * gfortran.dg/pr63821.f90: New testcase. From-SVN: r217411 --- gcc/ChangeLog | 5 +++++ gcc/match.pd | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/pr63821.f90 | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr63821.f90 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35e1198c591..3184fc9e3e0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-11-12 Richard Biener + + PR middle-end/63821 + * match.pd: Add missing conversion to the -(T)-X pattern. + 2014-11-12 Richard Biener PR bootstrap/63819 diff --git a/gcc/match.pd b/gcc/match.pd index 29b5ab29872..39abe25f276 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -299,7 +299,7 @@ along with GCC; see the file COPYING3. If not see (if (tree_nop_conversion_p (type, TREE_TYPE (@1)) && (TYPE_OVERFLOW_WRAPS (type) || (flag_sanitize & SANITIZE_SI_OVERFLOW) == 0)) - @1)) + (convert @1))) /* We can't reassociate floating-point or fixed-point plus or minus because of saturation to +-Inf. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 10c4e6f9faf..7b284c10537 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-11-12 Richard Biener + + PR middle-end/63821 + * gfortran.dg/pr63821.f90: New testcase. + 2014-11-12 Thomas Preud'homme PR tree-optimization/63761 diff --git a/gcc/testsuite/gfortran.dg/pr63821.f90 b/gcc/testsuite/gfortran.dg/pr63821.f90 new file mode 100644 index 00000000000..b26f4d788a4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr63821.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! { dg-options "-O3" } +SUBROUTINE calculates_green_opt() + INTEGER, PARAMETER :: dp=8 + REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: green, green1 + ALLOCATE(green(-nrec:nrec),stat=i_all) + DO ikern=1,nrec + green(-ikern)=gleft+gright + IF (ABS(green(ikern)) <= 1.e-20_dp) THEN + nrec=ikern + EXIT + END IF + END DO + ALLOCATE(green1(-nrec:nrec),stat=i_all) + CALL scf_recursion(nrec,green(-nrec),green1(-nrec)) +END SUBROUTINE calculates_green_opt + -- 2.30.2