aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorErik Edelmann <eedelman@acclab.helsinki.fi>2005-06-18 18:16:22 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2005-06-18 18:16:22 +0000
commitb7263e8f2f6085de756c1f9ce479e94d731d972c (patch)
tree35ec65100ca0289f03b10feb3dd79cd0779b9f5a /gcc/fortran
parent14ceeb325864470c4dd8e0628e9e3033f50634aa (diff)
downloadgcc-b7263e8f2f6085de756c1f9ce479e94d731d972c.zip
gcc-b7263e8f2f6085de756c1f9ce479e94d731d972c.tar.gz
gcc-b7263e8f2f6085de756c1f9ce479e94d731d972c.tar.bz2
re PR fortran/19926 ([4.0 only] Incorrect rank with PARAMETER and array element.)
PR fortran/19926 * primary.c (gfc_match_rvalue): expr_type can be EXPR_CONSTANT for an array; check that sym->as is NULL. Co-Authored-By: Steven G. Kargl <kargls@comast.net> From-SVN: r101161
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/primary.c7
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 0b3d117..1d180a2 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+2005-06-18 Erik Edelman <eedelman@acclab.helsinki.fi>
+ Steven G. Kargl <kargls@comast.net>
+
+ PR fortran/19926
+ * primary.c (gfc_match_rvalue): expr_type can be EXPR_CONSTANT
+ for an array; check that sym->as is NULL.
+
+
2005-06-18 Steven G. Kargl <kargls@comcast.net>
* intrinsic.c (gfc_intrinsic_func_interface): Enable errors for generic
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index 38f9939..e1acfbf 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -1802,8 +1802,11 @@ gfc_match_rvalue (gfc_expr ** result)
break;
case FL_PARAMETER:
- if (sym->value
- && sym->value->expr_type != EXPR_ARRAY)
+ /* A statement of the form "REAL, parameter :: a(0:10) = 1" will
+ end up here. Unfortunately, sym->value->expr_type is set to
+ EXPR_CONSTANT, and so the if () branch would be followed without
+ the !sym->as check. */
+ if (sym->value && sym->value->expr_type != EXPR_ARRAY && !sym->as)
e = gfc_copy_expr (sym->value);
else
{