From fd8e2796db2f85f00d5d847088a714f547737360 Mon Sep 17 00:00:00 2001 From: Daniel Franke Date: Tue, 24 Jul 2007 12:57:02 -0400 Subject: [PATCH] re PR fortran/32867 (ICE on nested initialization expressions) gcc/fortran: 2007-07-24 Daniel Franke PR fortran/32867 * expr.c (check_init_expr): Simplify matched functions. gcc/testsuite: 2007-07-24 Daniel Franke PR fortran/32867 * fortran.dg/initialization_10.f90: New test. From-SVN: r126882 --- gcc/fortran/ChangeLog | 5 +++ gcc/fortran/expr.c | 2 +- gcc/testsuite/ChangeLog | 5 +++ .../gfortran.dg/initialization_10.f90 | 32 +++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/initialization_10.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6445cf1f505..62489c86863 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2007-07-24 Daniel Franke + + PR fortran/32867 + * expr.c (check_init_expr): Simplify matched functions. + 2007-07-24 Daniel Franke PR fortran/32778 diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 00287249041..8e608ed615b 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -2132,7 +2132,7 @@ check_init_expr (gfc_expr *e) } if (m == MATCH_YES) - t = SUCCESS; + t = gfc_simplify_expr (e, 0); break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1a75a1f5bb7..3b36d6a5424 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-07-24 Daniel Franke + + PR fortran/32867 + * fortran.dg/initialization_10.f90: New test. + 2007-07-24 Daniel Franke PR fortran/32778 diff --git a/gcc/testsuite/gfortran.dg/initialization_10.f90 b/gcc/testsuite/gfortran.dg/initialization_10.f90 new file mode 100644 index 00000000000..92d9df50eba --- /dev/null +++ b/gcc/testsuite/gfortran.dg/initialization_10.f90 @@ -0,0 +1,32 @@ +! { dg-do compile } +! +! PR fortran/32867 - nested initialization expression not simplified +! +! Testcase contributed by H. J. Lu +! + +MODULE Readdata_mod +IMPLICIT NONE +Private +Public Parser + integer, parameter :: nkeywords = 2 +character(80), PARAMETER, dimension(1:nkeywords) :: keywords = & +(/'PROBLEMSIZE ', & + 'NFTRANS_TD '/) + +CONTAINS +SUBROUTINE Parser(nx, ny, keyword) +integer, intent(inout) :: nx, ny +character(80), intent(inout) :: keyword + +select case (keyword) + case (trim(keywords(1))) ! PROBLEMSIZE + nx = 1 + case (trim(keywords(2))) !'NFTRANS_TD' + ny = 1 +end select + +END SUBROUTINE Parser +END MODULE Readdata_mod + +! { dg-final { cleanup-modules "Readdata_mod" } } -- 2.30.2