diff options
author | Tobias Burnus <burnus@net-b.de> | 2009-10-19 20:03:02 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2009-10-19 20:03:02 +0200 |
commit | 585ba38fd5ce6275d2dca6592867e8aa8106406b (patch) | |
tree | 12cd54e068b86c890d3190dc3a0aacb0e8f6df30 | |
parent | 941e566ae70046140c818d0304ca96fbcf76e0dd (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/match.c | 5 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/class_allocate_1.f03 | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/equiv_8.f90 | 7 |
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 |