re PR fortran/46937 (gfortran.dg/pointer_intent_1.f90 FAILs with -fno-inline)
2010-12-14 Tobias Burnus <burnus@net-b.de> PR fortran/46937 * trans-types.c (create_fn_spec): "."-annotate derived types with (proc-)pointer components. 2010-12-14 Tobias Burnus <burnus@net-b.de> PR fortran/46937 * gfortran.dg/pointer_intent_4.f90: New. From-SVN: r167806
This commit is contained in:
parent
55256000cf
commit
39752c6b14
|
@ -1,3 +1,9 @@
|
|||
2010-12-14 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/46937
|
||||
* trans-types.c (create_fn_spec): "."-annotate derived types
|
||||
with (proc-)pointer components.
|
||||
|
||||
2010-12-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR fortran/46874
|
||||
|
|
|
@ -2325,7 +2325,13 @@ create_fn_spec (gfc_symbol *sym, tree fntype)
|
|||
if (spec_len < sizeof (spec))
|
||||
{
|
||||
if (!f->sym || f->sym->attr.pointer || f->sym->attr.target
|
||||
|| f->sym->attr.external || f->sym->attr.cray_pointer)
|
||||
|| f->sym->attr.external || f->sym->attr.cray_pointer
|
||||
|| (f->sym->ts.type == BT_DERIVED
|
||||
&& (f->sym->ts.u.derived->attr.proc_pointer_comp
|
||||
|| f->sym->ts.u.derived->attr.pointer_comp))
|
||||
|| (f->sym->ts.type == BT_CLASS
|
||||
&& (CLASS_DATA (f->sym)->ts.u.derived->attr.proc_pointer_comp
|
||||
|| CLASS_DATA (f->sym)->ts.u.derived->attr.pointer_comp)))
|
||||
spec[spec_len++] = '.';
|
||||
else if (f->sym->attr.intent == INTENT_IN)
|
||||
spec[spec_len++] = 'r';
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-12-14 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/46937
|
||||
* gfortran.dg/pointer_intent_4.f90: New.
|
||||
|
||||
2010-12-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/46885
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
! { dg-do run }
|
||||
! { dg-options "-fno-inline" }
|
||||
!
|
||||
! PR fortran/46937
|
||||
!
|
||||
! Check that a non-pointer INTENT(IN) dummy
|
||||
! with pointer component is properly treated
|
||||
!
|
||||
program test
|
||||
type myT
|
||||
integer, pointer :: point
|
||||
end type myT
|
||||
type(myT) :: t2
|
||||
allocate(t2%point)
|
||||
t2%point = 42
|
||||
call nonpointer(t2)
|
||||
if(t2%point /= 7) call abort()
|
||||
t2%point = 42
|
||||
call nonpointer2(t2)
|
||||
if(t2%point /= 66) call abort()
|
||||
contains
|
||||
subroutine nonpointer(t)
|
||||
type(myT), intent(in) :: t
|
||||
t%point = 7
|
||||
end subroutine nonpointer
|
||||
subroutine nonpointer2(t)
|
||||
class(myT), intent(in) :: t
|
||||
t%point = 66
|
||||
end subroutine nonpointer2
|
||||
end program
|
Loading…
Reference in New Issue