aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2010-12-13 20:17:46 +0100
committerJanus Weil <janus@gcc.gnu.org>2010-12-13 20:17:46 +0100
commitc58bb30d66b333fc184a6b53ae9479e4aaeae8c4 (patch)
tree89cad753d7bd86c8471f9a2a500c2d9c2272c019 /gcc
parentb767da733d09e7309c8e4700dacae239be5887d3 (diff)
downloadgcc-c58bb30d66b333fc184a6b53ae9479e4aaeae8c4.zip
gcc-c58bb30d66b333fc184a6b53ae9479e4aaeae8c4.tar.gz
gcc-c58bb30d66b333fc184a6b53ae9479e4aaeae8c4.tar.bz2
re PR fortran/46201 ([F03] ICE on procedure pointer component call)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-expr.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f9012
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index ae78f9f..eddfceb 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
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
* trans-expr.c (gfc_trans_subcomponent_assign): Handle array-valued
procedure pointer components.
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 6681a6a..cf2cdb6 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -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)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 405f4a6..165be16 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..d966648
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f90
@@ -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