aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/primary.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/equiv_substr.f9010
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index e69de29..82f4cd7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -0,0 +1,5 @@
+2008-01-04 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34557
+ * primary.c (match_varspec): Gobble whitespace before
+ checking for '('.
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index 155cfb1..1d282f2 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -1679,6 +1679,7 @@ match_varspec (gfc_expr *primary, int equiv_flag)
tail = NULL;
+ gfc_gobble_whitespace ();
if ((equiv_flag && gfc_peek_char () == '(') || sym->attr.dimension)
{
/* In EQUIVALENCE, we don't know yet whether we are seeing
@@ -1692,6 +1693,7 @@ match_varspec (gfc_expr *primary, int equiv_flag)
if (m != MATCH_YES)
return m;
+ gfc_gobble_whitespace ();
if (equiv_flag && gfc_peek_char () == '(')
{
tail = extend_ref (primary, tail);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6f91d5d..dd64236 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-04 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34557
+ * gfortran.dg/equiv_substr.f90: New.
+
2008-01-03 Tom Tromey <tromey@redhat.com>
PR c/34457:
diff --git a/gcc/testsuite/gfortran.dg/equiv_substr.f90 b/gcc/testsuite/gfortran.dg/equiv_substr.f90
new file mode 100644
index 0000000..cd186cf
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/equiv_substr.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+!
+! PR fortran/34557
+!
+! Substrings with space before '(' were not properly parsed.
+!
+implicit none
+character :: A(2,2)*2, B(2)*3, C*5
+equivalence (A (2,1) (1:1), B (1) (2:3), C (3:5))
+end