diff options
author | Janus Weil <janus@gcc.gnu.org> | 2009-12-11 15:40:36 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2009-12-11 15:40:36 +0100 |
commit | e219f32f4b52e334503376ba983ee1503dd34e09 (patch) | |
tree | ca2cc8d506c36f950dfd34db4731f0c40b750d52 /gcc | |
parent | 63a00e0d9139428cec7f5b5471ae036ee3d73db4 (diff) | |
download | gcc-e219f32f4b52e334503376ba983ee1503dd34e09.zip gcc-e219f32f4b52e334503376ba983ee1503dd34e09.tar.gz gcc-e219f32f4b52e334503376ba983ee1503dd34e09.tar.bz2 |
re PR fortran/42335 ([OOP] ICE on CLASS IS (bad_identifier))
gcc/fortran/
2009-12-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/42335
* symbol.c (select_type_insert_tmp): Add an extra check for
error recovery.
gcc/testsuite/
2009-12-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/42335
* gfortran.dg/select_type_11.f03: New test.
From-SVN: r155162
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/select_type_11.f03 | 28 |
4 files changed, 40 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6e588c6..7000e25 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2009-12-11 Janus Weil <janus@gcc.gnu.org> + + PR fortran/42335 + * symbol.c (select_type_insert_tmp): Add an extra check for + error recovery. + 2009-12-10 Daniel Franke <franke.daniel@gmail.com> PR fortran/40287 diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 08477c4..1b40d9a 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -2476,7 +2476,7 @@ select_type_insert_tmp (gfc_symtree **st) { gfc_select_type_stack *stack = select_type_stack; for (; stack; stack = stack->prev) - if ((*st)->n.sym == stack->selector) + if ((*st)->n.sym == stack->selector && stack->tmp) *st = stack->tmp; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 18343a2..598c1aa 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-12-11 Janus Weil <janus@gcc.gnu.org> + + PR fortran/42335 + * gfortran.dg/select_type_11.f03: New test. + 2009-12-11 Dodji Seketeli <dodji@redhat.com> PR c++/42225 diff --git a/gcc/testsuite/gfortran.dg/select_type_11.f03 b/gcc/testsuite/gfortran.dg/select_type_11.f03 new file mode 100644 index 0000000..54501d6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/select_type_11.f03 @@ -0,0 +1,28 @@ +! { dg-do compile } +! +! PR 42335: [OOP] ICE on CLASS IS (bad_identifier) +! +! Contributed by Harald Anlauf <anlauf@gmx.de> + + implicit none + type, abstract :: vector_class + end type vector_class + + type, extends(vector_class) :: trivial_vector_type + real :: elements(100) + end type trivial_vector_type + +contains + + subroutine bar (this,v) + class(trivial_vector_type), intent(inout) :: this + class(vector_class), intent(in) :: v + + select type (v) + class is (bad_id) ! { dg-error "is not an accessible derived type" } + this%elements(:) = v%elements(:) ! { dg-error "is not a member of" } + end select + + end subroutine bar + +end |