re PR fortran/36059 (-frepack-arrays: symbols w/ TARGET should not be repacked)
PR fortran/36059 * trans-decl.c (gfc_build_dummy_array_decl): Don't repack arrays that have the TARGET attribute. * gfortran.dg/repack_arrays_1.f90: New test. From-SVN: r135310
This commit is contained in:
parent
6401bf9cad
commit
1c3339af10
@ -1,3 +1,9 @@
|
||||
2008-05-14 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
|
||||
PR fortran/36059
|
||||
* trans-decl.c (gfc_build_dummy_array_decl): Don't repack
|
||||
arrays that have the TARGET attribute.
|
||||
|
||||
2008-05-14 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
|
||||
PR fortran/36186
|
||||
|
@ -733,7 +733,10 @@ gfc_build_dummy_array_decl (gfc_symbol * sym, tree dummy)
|
||||
/* Create a descriptorless array pointer. */
|
||||
as = sym->as;
|
||||
packed = PACKED_NO;
|
||||
if (!gfc_option.flag_repack_arrays)
|
||||
|
||||
/* Even when -frepack-arrays is used, symbols with TARGET attribute
|
||||
are not repacked. */
|
||||
if (!gfc_option.flag_repack_arrays || sym->attr.target)
|
||||
{
|
||||
if (as->type == AS_ASSUMED_SIZE)
|
||||
packed = PACKED_FULL;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-05-14 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
|
||||
PR fortran/36059
|
||||
* gfortran.dg/repack_arrays_1.f90: New test.
|
||||
|
||||
2008-05-14 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
|
||||
PR fortran/36186
|
||||
|
24
gcc/testsuite/gfortran.dg/repack_arrays_1.f90
Normal file
24
gcc/testsuite/gfortran.dg/repack_arrays_1.f90
Normal file
@ -0,0 +1,24 @@
|
||||
! { dg-do run }
|
||||
! { dg-options "-frepack-arrays" }
|
||||
!
|
||||
! Check that arrays marked with TARGET attribute are not repacked.
|
||||
!
|
||||
program test2
|
||||
use iso_c_binding
|
||||
implicit none
|
||||
real, target :: x(7)
|
||||
type(c_ptr) cp1, cp2
|
||||
|
||||
x = 42
|
||||
if (.not. c_associated(c_loc(x(3)),point(x(::2)))) call abort
|
||||
contains
|
||||
function point(x)
|
||||
use iso_c_binding
|
||||
real, intent(in), target :: x(:)
|
||||
type(c_ptr) point
|
||||
real, pointer :: p
|
||||
|
||||
p => x(2)
|
||||
point = c_loc(p)
|
||||
end function point
|
||||
end program test2
|
Loading…
Reference in New Issue
Block a user