Commit 591bb5e4 by Paul Thomas

re PR fortran/68864 (ICE: in gfc_get_descriptor_dimension, at fortran/trans-array.c:268)

2016-01-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/68864
	* trans-array.c (evaluate_bound): If deferred, test that 'desc'
	is an array descriptor before using gfc_conv_descriptor_xxx.


2016-01-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/68864
	* gfortran.dg/pr68864.f90: New test.

From-SVN: r232026
parent 942a1319
2016-01-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68864
* trans-array.c (evaluate_bound): If deferred, test that 'desc'
is an array descriptor before using gfc_conv_descriptor_xxx.
2015-12-29 Andre Vehreschild <vehre@gcc.gnu.org> 2015-12-29 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/69011 PR fortran/69011
......
...@@ -3821,10 +3821,10 @@ evaluate_bound (stmtblock_t *block, tree *bounds, gfc_expr ** values, ...@@ -3821,10 +3821,10 @@ evaluate_bound (stmtblock_t *block, tree *bounds, gfc_expr ** values,
gfc_add_block_to_block (block, &se.pre); gfc_add_block_to_block (block, &se.pre);
*output = se.expr; *output = se.expr;
} }
else if (deferred) else if (deferred && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))
{ {
/* The gfc_conv_array_lbound () routine returns a constant zero for /* The gfc_conv_array_lbound () routine returns a constant zero for
deferred length arrays, which in the scalarizer wrecks havoc, when deferred length arrays, which in the scalarizer wreaks havoc, when
copying to a (newly allocated) one-based array. copying to a (newly allocated) one-based array.
Keep returning the actual result in sync for both bounds. */ Keep returning the actual result in sync for both bounds. */
*output = lbound ? gfc_conv_descriptor_lbound_get (desc, *output = lbound ? gfc_conv_descriptor_lbound_get (desc,
......
2016-01-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/68864
* gfortran.dg/pr68864.f90: New test.
2016-01-01 Jakub Jelinek <jakub@redhat.com> 2016-01-01 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/69070 PR tree-optimization/69070
...@@ -8,7 +13,7 @@ ...@@ -8,7 +13,7 @@
PR target/69015 PR target/69015
* gcc.dg/pr69015.c: New test. * gcc.dg/pr69015.c: New test.
Copyright (C) 2016 Free Software Foundation, Inc. Copyright (C) 2016 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification, Copying and distribution of this file, with or without modification,
......
! { dg-do compile }
!
! Contributed by Hossein Talebi <talebi.hossein@gmail.com>
!
!
Module part_base2_class
implicit none
type :: ty_moc1
integer l
end type ty_moc1
integer,parameter :: MAX_NUM_ELEMENT_TYPE=32
type :: ty_element_index2
class(ty_moc1),allocatable :: element
class(ty_moc1),allocatable :: element_th(:)
endtype ty_element_index2
type :: ty_part_base2
type(ty_element_index2)::element_index(MAX_NUM_ELEMENT_TYPE)
end type ty_part_base2
class(ty_part_base2),allocatable :: part_tmp_obj
End Module part_base2_class
use part_base2_class
allocate (part_tmp_obj)
allocate (part_tmp_obj%element_index(1)%element, source = ty_moc1(1))
allocate (part_tmp_obj%element_index(1)%element_th(1), source = ty_moc1(99))
allocate (part_tmp_obj%element_index(32)%element_th(1), source = ty_moc1(999))
do i = 1, MAX_NUM_ELEMENT_TYPE
if (allocated (part_tmp_obj%element_index(i)%element_th)) then
print *, i, part_tmp_obj%element_index(i)%element_th(1)%l
end if
end do
deallocate (part_tmp_obj)
end
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