aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/array.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 37da9fd..4e3fb7d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2010-07-29 Daniel Kraft <d@domob.eu>
+
+ PR fortran/45117
+ * array.c (resolve_array_bound): Fix error message to properly handle
+ non-variable expressions.
+
2010-07-28 Mikael Morin <mikael@gcc.gnu.org>
* decl.c (free_value): Also free repeat field.
diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c
index 68b6456..e45f7e4 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;
}