aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2008-01-04 10:11:26 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2008-01-04 10:11:26 +0100
commit3c7215130f7f1c4677597a3882430fc65e2dba0c (patch)
treee59c6188ee887b99682737c981a984dda61c7cac /gcc
parent33af36f7fe6c6b308e72535fe0d5e0619fb1a11f (diff)
downloadgcc-3c7215130f7f1c4677597a3882430fc65e2dba0c.zip
gcc-3c7215130f7f1c4677597a3882430fc65e2dba0c.tar.gz
gcc-3c7215130f7f1c4677597a3882430fc65e2dba0c.tar.bz2
re PR fortran/34557 (Rejects valid: EQUIVALENCE of character substrings)
2008-01-04 Tobias Burnus <burnus@net-b.de> 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. From-SVN: r131317
Diffstat (limited to 'gcc')
-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