]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/46201 ([F03] ICE on procedure pointer component call)
authorJanus Weil <janus@gcc.gnu.org>
Mon, 13 Dec 2010 19:17:46 +0000 (20:17 +0100)
committerJanus Weil <janus@gcc.gnu.org>
Mon, 13 Dec 2010 19:17:46 +0000 (20:17 +0100)
2010-12-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/46201
* trans-expr.c (gfc_conv_procedure_call): Handle procedure pointer
components called on a dimensionful base object.

2010-12-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/46201
* gfortran.dg/proc_ptr_comp_27.f90: New.

From-SVN: r167767

gcc/fortran/ChangeLog
gcc/fortran/trans-expr.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f90 [new file with mode: 0644]

index ae78f9f330daa38bff30b5021ac676448c62db62..eddfceb4e8001a643d1f411776084b471ede460e 100644 (file)
@@ -1,3 +1,9 @@
+2010-12-13  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/46201
+       * trans-expr.c (gfc_conv_procedure_call): Handle procedure pointer
+       components called on a dimensionful base object.
+
 2010-12-13  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/46841
index 6681a6ab3dfa432885200e70de152dc5a5e38ac9..cf2cdb6005a8f9862e961522eb3b5df67fbcad51 100644 (file)
@@ -3594,7 +3594,7 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
 
       if (!se->direct_byref)
        {
-         if (sym->attr.dimension || (comp && comp->attr.dimension))
+         if ((sym->attr.dimension && !comp) || (comp && comp->attr.dimension))
            {
              if (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS)
                {
index 405f4a6930f1bcb338f96693744cb967e9eb9a53..165be16f4c409c5533acf47e94a0e0e1f995f942 100644 (file)
@@ -1,3 +1,8 @@
+2010-12-13  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/46201
+       * gfortran.dg/proc_ptr_comp_27.f90: New.
+
 2010-12-13  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/46867
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f90
new file mode 100644 (file)
index 0000000..d966648
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-do compile }
+!
+! PR 46201: [F03] ICE on procedure pointer component call
+!
+! Contributed by Stephen J. Bespalko <sjbespa@comcast.net>
+
+type t
+  procedure(character), nopass, pointer :: ppc
+end type
+type(t),dimension(1) :: v
+print *,v(1)%ppc()
+end