aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2009-10-19 20:03:02 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2009-10-19 20:03:02 +0200
commit585ba38fd5ce6275d2dca6592867e8aa8106406b (patch)
tree12cd54e068b86c890d3190dc3a0aacb0e8f6df30
parent941e566ae70046140c818d0304ca96fbcf76e0dd (diff)
downloadgcc-585ba38fd5ce6275d2dca6592867e8aa8106406b.zip
gcc-585ba38fd5ce6275d2dca6592867e8aa8106406b.tar.gz
gcc-585ba38fd5ce6275d2dca6592867e8aa8106406b.tar.bz2
re PR fortran/41755 (Segfault on invalid code)
2009-10-19 Tobias Burnus <burnus@net-b.de> Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/41755 * symbol.c (gfc_undo_symbols): Add NULL check. * match.c (gfc_match_equivalence): Add check for missing comma. 2009-10-19 Tobias Burnus <burnus@net-b.de> PR fortran/41755 * gfortran.dg/equiv_8.f90: New test. * gfortran.dg/class_allocate_1.f03: Remove obsolete FIXME. Co-Authored-By: Steven G. Kargl <kargl@gcc.gnu.org> From-SVN: r152983
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/match.c5
-rw-r--r--gcc/fortran/symbol.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/class_allocate_1.f033
-rw-r--r--gcc/testsuite/gfortran.dg/equiv_8.f907
6 files changed, 27 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b90f9c5..3f07da5 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+2009-10-19 Tobias Burnus <burnus@net-b.de>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/41755
+ * symbol.c (gfc_undo_symbols): Add NULL check.
+ * match.c (gfc_match_equivalence): Add check for
+ missing comma.
+
2009-10-19 Richard Guenther <rguenther@suse.de>
PR fortran/41494
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index d75ef0e..8721606 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -3750,7 +3750,10 @@ gfc_match_equivalence (void)
if (gfc_match_eos () == MATCH_YES)
break;
if (gfc_match_char (',') != MATCH_YES)
- goto syntax;
+ {
+ gfc_error ("Expecting a comma in EQUIVALENCE at %C");
+ goto cleanup;
+ }
}
return MATCH_YES;
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 2641df8..837a357 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -2741,7 +2741,7 @@ gfc_undo_symbols (void)
if (p->gfc_new)
{
/* Symbol was new. */
- if (p->attr.in_common && p->common_block->head)
+ if (p->attr.in_common && p->common_block && p->common_block->head)
{
/* If the symbol was added to any common block, it
needs to be removed to stop the resolver looking
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0042764a..bce4d7c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/41755
+ * gfortran.dg/equiv_8.f90: New test.
+ * gfortran.dg/class_allocate_1.f03: Remove obsolete FIXME.
+
2009-10-19 Joseph Myers <joseph@codesourcery.com>
* gcc.target/arm/neon-thumb2-move.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/class_allocate_1.f03 b/gcc/testsuite/gfortran.dg/class_allocate_1.f03
index 719d90c..67c8065 100644
--- a/gcc/testsuite/gfortran.dg/class_allocate_1.f03
+++ b/gcc/testsuite/gfortran.dg/class_allocate_1.f03
@@ -68,8 +68,7 @@
i = 0
allocate(t2 :: cp2)
-! FIXME: Not yet supported: source=<class>
-! allocate(cp, source = cp2)
+ allocate(cp, source = cp2)
allocate(t2 :: cp3)
allocate(cp, source=cp3)
select type (cp)
diff --git a/gcc/testsuite/gfortran.dg/equiv_8.f90 b/gcc/testsuite/gfortran.dg/equiv_8.f90
new file mode 100644
index 0000000..a2ed7f0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/equiv_8.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+!
+! PR fortran/41755
+!
+ common /uno/ aa
+ equivalence (aa,aaaaa) (bb,cc) ! { dg-error "Expecting a comma in EQUIVALENCE" }
+ end