From 24b244ec71a319ce40b183a54e3f67f3b37d008a Mon Sep 17 00:00:00 2001 From: janus Date: Fri, 11 Mar 2011 14:13:49 +0000 Subject: [PATCH] 2011-03-11 Janus Weil PR fortran/47768 * module.c (ab_attribute,attr_bits): Add AB_PROC_POINTER_COMP. (mio_symbol_attribute): Handle attribute 'proc_pointer_comp'. 2011-03-11 Janus Weil PR fortran/47768 * gfortran.dg/proc_ptr_comp_31.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170871 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/module.c | 11 +++++++++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90 | 22 ++++++++++++++++++++++ 4 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a479ef67210..a0b88054589 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2011-03-11 Janus Weil + + PR fortran/47768 + * module.c (ab_attribute,attr_bits): Add AB_PROC_POINTER_COMP. + (mio_symbol_attribute): Handle attribute 'proc_pointer_comp'. + 2011-03-06 Paul Thomas Jerry DeLisle diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 6f1520c0205..923f8c695e4 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -1671,8 +1671,9 @@ typedef enum AB_POINTER, AB_TARGET, AB_DUMMY, AB_RESULT, AB_DATA, AB_IN_NAMELIST, AB_IN_COMMON, AB_FUNCTION, AB_SUBROUTINE, AB_SEQUENCE, AB_ELEMENTAL, AB_PURE, AB_RECURSIVE, AB_GENERIC, AB_ALWAYS_EXPLICIT, - AB_CRAY_POINTER, AB_CRAY_POINTEE, AB_THREADPRIVATE, AB_ALLOC_COMP, - AB_POINTER_COMP, AB_PRIVATE_COMP, AB_VALUE, AB_VOLATILE, AB_PROTECTED, + AB_CRAY_POINTER, AB_CRAY_POINTEE, AB_THREADPRIVATE, + AB_ALLOC_COMP, AB_POINTER_COMP, AB_PROC_POINTER_COMP, AB_PRIVATE_COMP, + AB_VALUE, AB_VOLATILE, AB_PROTECTED, AB_IS_BIND_C, AB_IS_C_INTEROP, AB_IS_ISO_C, AB_ABSTRACT, AB_ZERO_COMP, AB_IS_CLASS, AB_PROCEDURE, AB_PROC_POINTER, AB_ASYNCHRONOUS, AB_CODIMENSION, AB_COARRAY_COMP, AB_VTYPE, AB_VTAB, AB_CONTIGUOUS, AB_CLASS_POINTER, @@ -1716,6 +1717,7 @@ static const mstring attr_bits[] = minit ("ALLOC_COMP", AB_ALLOC_COMP), minit ("COARRAY_COMP", AB_COARRAY_COMP), minit ("POINTER_COMP", AB_POINTER_COMP), + minit ("PROC_POINTER_COMP", AB_PROC_POINTER_COMP), minit ("PRIVATE_COMP", AB_PRIVATE_COMP), minit ("ZERO_COMP", AB_ZERO_COMP), minit ("PROTECTED", AB_PROTECTED), @@ -1881,6 +1883,8 @@ mio_symbol_attribute (symbol_attribute *attr) MIO_NAME (ab_attribute) (AB_ALLOC_COMP, attr_bits); if (attr->pointer_comp) MIO_NAME (ab_attribute) (AB_POINTER_COMP, attr_bits); + if (attr->proc_pointer_comp) + MIO_NAME (ab_attribute) (AB_PROC_POINTER_COMP, attr_bits); if (attr->private_comp) MIO_NAME (ab_attribute) (AB_PRIVATE_COMP, attr_bits); if (attr->coarray_comp) @@ -2027,6 +2031,9 @@ mio_symbol_attribute (symbol_attribute *attr) case AB_POINTER_COMP: attr->pointer_comp = 1; break; + case AB_PROC_POINTER_COMP: + attr->proc_pointer_comp = 1; + break; case AB_PRIVATE_COMP: attr->private_comp = 1; break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 48619b6b7e1..54d77a6d253 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-03-11 Janus Weil + + PR fortran/47768 + * gfortran.dg/proc_ptr_comp_31.f90: New. + 2011-03-11 Richard Guenther PR tree-optimization/47278 diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90 new file mode 100644 index 00000000000..6a5d8c967e2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_31.f90 @@ -0,0 +1,22 @@ +! { dg-do compile } +! +! PR 47768: printing a derived-type variable with proc-pointer components +! +! Contributed by Arjen Markus + +module proc_pointers + implicit none + type :: rectangle + real :: width, height + procedure(real), pointer, nopass :: get_special_area + end type +end module + +program test_objects + use proc_pointers + implicit none + type(rectangle) :: rect + write(*,*) rect ! { dg-error "cannot have procedure pointer components" } +end program + +! { dg-final { cleanup-modules "proc_pointers" } } -- 2.11.4.GIT