From 1f7449128051ce8758b8a8cd9ef7c4ef4d6f0350 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Tue, 30 Aug 2011 08:50:22 +0200 Subject: [PATCH] re PR fortran/50163 (ICE: initialization expression) 2011-08-30 Tobias Burnus PR fortran/50163 * check_init_expr (check_init_expr): Return when an error * occured. 2011-08-30 Tobias Burnus PR fortran/50163 * gfortran.dg/initialization_28.f90: New. From-SVN: r178280 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/expr.c | 3 +++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/initialization_28.f90 | 9 +++++++++ 4 files changed, 22 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/initialization_28.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ba107157cce1..b6733fc553ca 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2011-08-30 Tobias Burnus + + PR fortran/50163 + * check_init_expr (check_init_expr): Return when an error occured. + 2011-08-16 Paul Thomas PR fortran/42051 diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 73587a280007..2024011fc1cd 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -2335,6 +2335,9 @@ check_init_expr (gfc_expr *e) m = MATCH_ERROR; } + if (m == MATCH_ERROR) + return FAILURE; + /* Try to scalarize an elemental intrinsic function that has an array argument. */ isym = gfc_find_function (e->symtree->n.sym->name); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 69d2ebf4321a..668b0eeb99f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-08-30 Tobias Burnus + + PR fortran/50163 + * gfortran.dg/initialization_28.f90: New. + 2011-08-19 Tobias Burnus Backport from mainline diff --git a/gcc/testsuite/gfortran.dg/initialization_28.f90 b/gcc/testsuite/gfortran.dg/initialization_28.f90 new file mode 100644 index 000000000000..f5330534a532 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/initialization_28.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! +! PR fortran/50163 +! +! Contributed by Philip Mason +! +character(len=2) :: xx ='aa' +integer :: iloc=index(xx,'bb') ! { dg-error "has not been declared or is a variable" } +end -- 2.47.2