From 357f98e5520d628b5acf21b516c8ce5f408a605f Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Fri, 18 Feb 2011 13:23:56 +0100 Subject: [PATCH] re PR fortran/47768 (ICE: printing a derived-type variable with proc-pointer components) 2011-02-18 Janus Weil PR fortran/47768 * resolve.c (resolve_transfer): Reject variables with procedure pointer components. 2011-02-18 Janus Weil PR fortran/47768 * gfortran.dg/proc_ptr_comp_30.f90: New. From-SVN: r170271 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/resolve.c | 8 ++++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90 | 15 +++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8d7614ad510..31ed636b646 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2011-02-18 Janus Weil + + PR fortran/47768 + * resolve.c (resolve_transfer): Reject variables with procedure pointer + components. + 2011-02-18 Janus Weil PR fortran/47767 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 1c102437864..1fef22b2469 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -8091,6 +8091,14 @@ resolve_transfer (gfc_code *code) return; } + /* F08:C935. */ + if (ts->u.derived->attr.proc_pointer_comp) + { + gfc_error ("Data transfer element at %L cannot have " + "procedure pointer components", &code->loc); + return; + } + if (ts->u.derived->attr.alloc_comp) { gfc_error ("Data transfer element at %L cannot have " diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 40e2553cfc7..595db760be9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-02-18 Janus Weil + + PR fortran/47768 + * gfortran.dg/proc_ptr_comp_30.f90: New. + 2011-02-18 Jakub Jelinek PR debug/47780 diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90 new file mode 100644 index 00000000000..afcc4c73f28 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90 @@ -0,0 +1,15 @@ +! { dg-do compile } +! +! PR 47768: ICE: printing a derived-type variable with proc-pointer components +! +! Contributed by Janus Weil + +type :: t + integer :: i = 3 + procedure(type(t)), pointer, nopass :: ppc +end type + +type(t) :: x + +print *,x ! { dg-error "cannot have procedure pointer components" } +end -- 2.30.2