Commit ee3bea0b by Janus Weil

re PR fortran/54435 (ICE with SELECT TYPE on a non-CLASS object)

2012-09-04  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54435
	PR fortran/54443
	* match.c (gfc_match_select_type): Make sure to only access CLASS_DATA
	for BT_CLASS.

2012-09-04  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/54243
	PR fortran/54244
	* gfortran.dg/select_type_29.f03: New.

From-SVN: r190910
parent ff596ca1
2012-09-04 Janus Weil <janus@gcc.gnu.org>
PR fortran/54435
PR fortran/54443
* match.c (gfc_match_select_type): Make sure to only access CLASS_DATA
for BT_CLASS.
2012-09-03 Tobias Burnus <burnus@net-b.de> 2012-09-03 Tobias Burnus <burnus@net-b.de>
PR fortran/54467 PR fortran/54467
......
...@@ -5368,10 +5368,10 @@ gfc_match_select_type (void) ...@@ -5368,10 +5368,10 @@ gfc_match_select_type (void)
array, which can have a reference, from other expressions that array, which can have a reference, from other expressions that
have references, such as derived type components, and are not have references, such as derived type components, and are not
allowed by the standard. allowed by the standard.
TODO; see is it is sufficient to exclude component and substring TODO: see if it is sufficient to exclude component and substring
references. */ references. */
class_array = expr1->expr_type == EXPR_VARIABLE class_array = expr1->expr_type == EXPR_VARIABLE
&& expr1->ts.type != BT_UNKNOWN && expr1->ts.type == BT_CLASS
&& CLASS_DATA (expr1) && CLASS_DATA (expr1)
&& (strcmp (CLASS_DATA (expr1)->name, "_data") == 0) && (strcmp (CLASS_DATA (expr1)->name, "_data") == 0)
&& (CLASS_DATA (expr1)->attr.dimension && (CLASS_DATA (expr1)->attr.dimension
......
2012-09-04 Janus Weil <janus@gcc.gnu.org>
PR fortran/54243
PR fortran/54244
* gfortran.dg/select_type_29.f03: New.
2012-09-03 Marc Glisse <marc.glisse@inria.fr> 2012-09-03 Marc Glisse <marc.glisse@inria.fr>
* gcc.dg/fold-perm.c: Improve test. * gcc.dg/fold-perm.c: Improve test.
......
! { dg-do compile }
!
! PR 54435: [4.7/4.8 Regression] ICE with SELECT TYPE on a non-CLASS object
!
! Contributed by xarthisius
subroutine foo(x)
integer :: x
select type (x) ! { dg-error "Selector shall be polymorphic" }
end select
end
! PR 54443: [4.7/4.8 Regression] Segmentation Fault when Compiling for code using Fortran Polymorphic Entities
!
! Contributed by Mark Beyer <mbeyer@cirrusaircraft.com>
program class_test
type hashnode
character(4) :: htype
end type
class(hashnode), pointer :: hp
select type(hp%htype) ! { dg-error "is not a named variable" }
end program
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment