re PR fortran/57542 ([OOP] ICE on FINALization with specific options)
2013-06-06 Tobias Burnus <burnus@net-b.de> PR fortran/57542 * trans.c (gfc_build_final_call): Add se.pre to the block and modify the assert. 2013-06-06 Tobias Burnus <burnus@net-b.de> PR fortran/57542 * gfortran.dg/finalize_16.f90: New. From-SVN: r199736
This commit is contained in:
parent
0e26bf3d4e
commit
2297c8ce37
4 changed files with 47 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2013-06-06 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/57542
|
||||
* trans.c (gfc_build_final_call): Add se.pre to the block
|
||||
and modify the assert.
|
||||
|
||||
2013-06-04 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/37336
|
||||
|
|
|
@ -895,7 +895,8 @@ gfc_build_final_call (gfc_typespec ts, gfc_expr *final_wrapper, gfc_expr *var,
|
|||
gcc_assert (class_size);
|
||||
gfc_init_se (&se, NULL);
|
||||
gfc_conv_expr (&se, class_size);
|
||||
gcc_assert (se.pre.head == NULL_TREE && se.post.head == NULL_TREE);
|
||||
gfc_add_block_to_block (&block, &se.pre);
|
||||
gcc_assert (se.post.head == NULL_TREE);
|
||||
size = se.expr;
|
||||
|
||||
array_expr = gfc_copy_expr (var);
|
||||
|
@ -912,7 +913,8 @@ gfc_build_final_call (gfc_typespec ts, gfc_expr *final_wrapper, gfc_expr *var,
|
|||
{
|
||||
gfc_add_data_component (array_expr);
|
||||
gfc_conv_expr (&se, array_expr);
|
||||
gcc_assert (se.pre.head == NULL_TREE && se.post.head == NULL_TREE);
|
||||
gfc_add_block_to_block (&block, &se.pre);
|
||||
gcc_assert (se.post.head == NULL_TREE);
|
||||
array = se.expr;
|
||||
if (TREE_CODE (array) == ADDR_EXPR
|
||||
&& POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (array, 0))))
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-06-06 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/57542
|
||||
* gfortran.dg/finalize_16.f90: New.
|
||||
|
||||
2013-06-06 Marcus Shawcroft <marcus.shawcroft@arm.com>
|
||||
|
||||
* gcc.dg/vect/no-section-anchors-vect-68.c:
|
||||
|
|
32
gcc/testsuite/gfortran.dg/finalize_16.f90
Normal file
32
gcc/testsuite/gfortran.dg/finalize_16.f90
Normal file
|
@ -0,0 +1,32 @@
|
|||
! { dg-do compile }
|
||||
! { dg-options "-fcheck=all" }
|
||||
!
|
||||
! PR fortran/57542
|
||||
!
|
||||
! Contributed by Salvatore Filippone
|
||||
!
|
||||
module type_mod
|
||||
type inner
|
||||
end type inner
|
||||
|
||||
type outer
|
||||
class(inner), allocatable :: item
|
||||
end type outer
|
||||
|
||||
type container
|
||||
class(outer), allocatable :: item
|
||||
end type container
|
||||
|
||||
type maintype
|
||||
type(container), allocatable :: v(:)
|
||||
end type maintype
|
||||
|
||||
end module type_mod
|
||||
|
||||
subroutine testfinal(var)
|
||||
use type_mod
|
||||
type(maintype), intent(inout) :: var
|
||||
! A real code would obviously check
|
||||
! this is really allocated
|
||||
deallocate(var%v(1)%item%item)
|
||||
end subroutine testfinal
|
Loading…
Add table
Reference in a new issue