Fix random class_allocate_18.f90 failure

PR fortran/64921
gcc/fortran/
	* class.c (generate_finalization_wrapper): Set finalization
	procedure symbol's always_explicit attribute.
gcc/testsuite/
	* gfortran.dg/class_allocate_20.f90: New.

From-SVN: r226493
This commit is contained in:
Mikael Morin 2015-08-03 10:03:55 +00:00
parent 44fef04ab1
commit 2ab320ad36
4 changed files with 50 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2015-08-03 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/64921
* class.c (generate_finalization_wrapper): Set finalization
procedure symbol's always_explicit attribute.
2015-08-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/67091

View File

@ -1599,6 +1599,7 @@ generate_finalization_wrapper (gfc_symbol *derived, gfc_namespace *ns,
final->ts.type = BT_INTEGER;
final->ts.kind = 4;
final->attr.artificial = 1;
final->attr.always_explicit = 1;
final->attr.if_source = expr_null_wrapper ? IFSRC_IFBODY : IFSRC_DECL;
if (ns->proc_name->attr.flavor == FL_MODULE)
final->module = ns->proc_name->name;

View File

@ -1,3 +1,8 @@
2015-08-03 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/64921
* gfortran.dg/class_allocate_20.f90: New.
2015-08-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/csel_bfx_1.c: New test.
@ -5,12 +10,12 @@
2015-08-02 Martin Sebor <msebor@redhat.com>
* g++.dg/Wframe-address-in-Wall.C: New test.
* g++.dg/Wframe-address.C: New test.
* g++.dg/Wno-frame-address.C: New test.
* gcc.dg/Wframe-address-in-Wall.c: New test.
* gcc.dg/Wframe-address.c: New test.
* gcc.dg/Wno-frame-address.c: New test.
* g++.dg/Wframe-address-in-Wall.C: New test.
* g++.dg/Wframe-address.C: New test.
* g++.dg/Wno-frame-address.C: New test.
* gcc.dg/Wframe-address-in-Wall.c: New test.
* gcc.dg/Wframe-address.c: New test.
* gcc.dg/Wno-frame-address.c: New test.
2015-08-02 Patrick Palka <ppalka@gcc.gnu.org>

View File

@ -0,0 +1,32 @@
! { dg-do run }
!
! PR fortran/64921
! Test that the finalization wrapper procedure get the always_explicit
! attribute so that the array is not passed without descriptor from
! T3's finalization wrapper procedure to T2's one.
!
! Contributed by Mat Cross <mathewc@nag.co.uk>
Program test
Implicit None
Type :: t1
Integer, Allocatable :: i
End Type
Type :: t2
Integer, Allocatable :: i
End Type
Type, Extends (t1) :: t3
Type (t2) :: j
End Type
Type, Extends (t3) :: t4
Integer, Allocatable :: k
End Type
Call s
Print *, 'ok'
Contains
Subroutine s
Class (t1), Allocatable :: x
Allocate (t4 :: x)
End Subroutine
End Program
! { dg-output "ok" }