mirror of git://gcc.gnu.org/git/gcc.git
re PR fortran/58652 (ICE with move_alloc and unlimited polymorphic)
2013-10-16 Tobias Burnus <burnus@net-b.de>
PR fortran/58652
* interface.c (compare_parameter): Accept passing CLASS(*)
to CLASS(*).
2013-10-16 Tobias Burnus <burnus@net-b.de>
PR fortran/58652
* gfortran.dg/unlimited_polymorphic_12.f90: New.
From-SVN: r203720
This commit is contained in:
parent
931519141b
commit
a8267f8d58
|
|
@ -1,3 +1,9 @@
|
||||||
|
2013-10-16 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
|
PR fortran/58652
|
||||||
|
* interface.c (compare_parameter): Accept passing CLASS(*)
|
||||||
|
to CLASS(*).
|
||||||
|
|
||||||
2013-10-16 Tobias Burnus <burnus@net-b.de>
|
2013-10-16 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
* intrinsic.texi (OpenMP Modules): Update to OpenMPv4.
|
* intrinsic.texi (OpenMP Modules): Update to OpenMPv4.
|
||||||
|
|
|
||||||
|
|
@ -1990,7 +1990,8 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual,
|
||||||
if (!gfc_expr_attr (actual).class_ok)
|
if (!gfc_expr_attr (actual).class_ok)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!gfc_compare_derived_types (CLASS_DATA (actual)->ts.u.derived,
|
if ((!UNLIMITED_POLY (formal) || !UNLIMITED_POLY(actual))
|
||||||
|
&& !gfc_compare_derived_types (CLASS_DATA (actual)->ts.u.derived,
|
||||||
CLASS_DATA (formal)->ts.u.derived))
|
CLASS_DATA (formal)->ts.u.derived))
|
||||||
{
|
{
|
||||||
if (where)
|
if (where)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2013-10-16 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
|
PR fortran/58652
|
||||||
|
* gfortran.dg/unlimited_polymorphic_12.f90: New.
|
||||||
|
|
||||||
2013-10-16 Thomas Schwinge <thomas@codesourcery.com>
|
2013-10-16 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
* c-c++-common/cpp/openmp-define-1.c: Move
|
* c-c++-common/cpp/openmp-define-1.c: Move
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
!
|
||||||
|
! PR fortran/58652
|
||||||
|
!
|
||||||
|
! Contributed by Vladimir Fuka
|
||||||
|
!
|
||||||
|
! The passing of a CLASS(*) to a CLASS(*) was reject before
|
||||||
|
!
|
||||||
|
module gen_lists
|
||||||
|
type list_node
|
||||||
|
class(*),allocatable :: item
|
||||||
|
contains
|
||||||
|
procedure :: move_alloc => list_move_alloc
|
||||||
|
end type
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
subroutine list_move_alloc(self,item)
|
||||||
|
class(list_node),intent(inout) :: self
|
||||||
|
class(*),intent(inout),allocatable :: item
|
||||||
|
|
||||||
|
call move_alloc(item, self%item)
|
||||||
|
end subroutine
|
||||||
|
end module
|
||||||
|
|
||||||
|
module lists
|
||||||
|
use gen_lists, only: node => list_node
|
||||||
|
end module lists
|
||||||
|
|
||||||
|
|
||||||
|
module sexp
|
||||||
|
use lists
|
||||||
|
contains
|
||||||
|
subroutine parse(ast)
|
||||||
|
class(*), allocatable, intent(out) :: ast
|
||||||
|
class(*), allocatable :: expr
|
||||||
|
integer :: ierr
|
||||||
|
allocate(node::ast)
|
||||||
|
select type (ast)
|
||||||
|
type is (node)
|
||||||
|
call ast%move_alloc(expr)
|
||||||
|
end select
|
||||||
|
end subroutine
|
||||||
|
end module
|
||||||
Loading…
Reference in New Issue