2008-01-04 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Jan 2008 09:11:26 +0000 (09:11 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Jan 2008 09:11:26 +0000 (09:11 +0000)
       PR fortran/34557
       * primary.c (match_varspec): Gobble whitespace before
       checking for '('.

2008-01-04  Tobias Burnus  <burnus@net-b.de>

       PR fortran/34557
       * gfortran.dg/equiv_substr.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131317 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/primary.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/equiv_substr.f90 [new file with mode: 0644]

index e69de29..82f4cd7 100644 (file)
@@ -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 '('.
index 155cfb1..1d282f2 100644 (file)
@@ -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);
index 6f91d5d..dd64236 100644 (file)
@@ -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 (file)
index 0000000..cd186cf
--- /dev/null
@@ -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