Commit a07b81c7 by Jerry DeLisle

re PR fortran/62125 (Nested select type not accepted (rejects valid))

2016-07-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Marco Restelli <mrestelli@gmail.com>

	PR fortran/62125
	* symbol.c (select_type_insert_tmp): Recursively call self to take care
	of nested select type.

	* gfortran.dg/pr62125.f90: New test.

Co-Authored-By: Marco Restelli <mrestelli@gmail.com>

From-SVN: r238400
parent d1129d45
2016-07-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Marco Restelli <mrestelli@gmail.com>
PR fortran/62125
* symbol.c (select_type_insert_tmp): Recursively call self to take care
of nested select type.
2016-07-15 Cesar Philippidis <cesar@codesourcery.com>
* openmp.c (gfc_match_omp_clauses): Scan for clause vector_length
......
......@@ -2930,7 +2930,11 @@ 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 && stack->tmp)
*st = stack->tmp;
{
*st = stack->tmp;
select_type_insert_tmp (st);
return;
}
}
......
2016-07-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Marco Restelli <mrestelli@gmail.com>
PR fortran/62125
* gfortran.dg/pr62125.f90: New test.
2016-07-15 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/divkc3-1.c: Require p8vector support.
......
! { dg-do run }
! PR62125 Nested select type not accepted (rejects valid)
module m
implicit none
type, abstract :: t1
logical :: l
end type t1
type, extends(t1), abstract :: t2
integer :: i
end type t2
type, extends(t2) :: t3
real :: x
end type t3
contains
subroutine s(u)
class(t1), intent(in) :: u
if(.not.u%l) call abort()
select type(u); class is(t2)
if(u%i.ne.2) call abort()
select type(u); class is(t3)
if(u%x.ne.3.5) call abort()
end select
end select
end subroutine s
end module m
program p
use m
implicit none
type(t3) :: var = t3( l=.true. , i=2 , x=3.5 )
call s(var)
end program p
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