From: Daniel Kraft Date: Thu, 29 Jul 2010 09:06:53 +0000 (+0200) Subject: re PR fortran/45117 (Segfault in resolve_array_bound) X-Git-Tag: releases/gcc-4.6.0~5343 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b868bf548107e361f31285b2dc2961194478072;p=thirdparty%2Fgcc.git re PR fortran/45117 (Segfault in resolve_array_bound) 2010-07-29 Daniel Kraft PR fortran/45117 * array.c (resolve_array_bound): Fix error message to properly handle non-variable expressions. From-SVN: r162670 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 37da9fd5d44d..4e3fb7dfb65d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-07-29 Daniel Kraft + + PR fortran/45117 + * array.c (resolve_array_bound): Fix error message to properly handle + non-variable expressions. + 2010-07-28 Mikael Morin * decl.c (free_value): Also free repeat field. diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 68b6456cdbc3..e45f7e45c7f3 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -300,10 +300,14 @@ resolve_array_bound (gfc_expr *e, int check_constant) || gfc_specification_expr (e) == FAILURE) return FAILURE; - if (check_constant && gfc_is_constant_expr (e) == 0) + if (check_constant && !gfc_is_constant_expr (e)) { - gfc_error ("Variable '%s' at %L in this context must be constant", - e->symtree->n.sym->name, &e->where); + if (e->expr_type == EXPR_VARIABLE) + gfc_error ("Variable '%s' at %L in this context must be constant", + e->symtree->n.sym->name, &e->where); + else + gfc_error ("Expression at %L in this context must be constant", + &e->where); return FAILURE; }