re PR fortran/47768 (ICE: printing a derived-type variable with proc-pointer components)
authorJanus Weil <janus@gcc.gnu.org>
Fri, 18 Feb 2011 12:23:56 +0000 (13:23 +0100)
committerJanus Weil <janus@gcc.gnu.org>
Fri, 18 Feb 2011 12:23:56 +0000 (13:23 +0100)
2011-02-18  Janus Weil  <janus@gcc.gnu.org>

PR fortran/47768
* resolve.c (resolve_transfer): Reject variables with procedure pointer
components.

2011-02-18  Janus Weil  <janus@gcc.gnu.org>

PR fortran/47768
* gfortran.dg/proc_ptr_comp_30.f90: New.

From-SVN: r170271

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/proc_ptr_comp_30.f90 [new file with mode: 0644]

index 8d7614ad5109ad1f2b7d5274ad289df8e80a5333..31ed636b6462ea8dabc9af1ae1caf48b998fa815 100644 (file)
@@ -1,3 +1,9 @@
+2011-02-18  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/47768
+       * resolve.c (resolve_transfer): Reject variables with procedure pointer
+       components.
+
 2011-02-18  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/47767
index 1c1024378645793b6b8f0927693b196dd166a48e..1fef22b2469930634d0aace756d49b915838f972 100644 (file)
@@ -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 "
index 40e2553cfc7f6e62b176eb246e8a55a18b8082c3..595db760be9e98cd3022a1df8669c2ed6b90e3b0 100644 (file)
@@ -1,3 +1,8 @@
+2011-02-18  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/47768
+       * gfortran.dg/proc_ptr_comp_30.f90: New.
+
 2011-02-18  Jakub Jelinek  <jakub@redhat.com>
 
        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 (file)
index 0000000..afcc4c7
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR 47768: ICE: printing a derived-type variable with proc-pointer components
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+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