diff options
author | Janus Weil <janus@gcc.gnu.org> | 2010-12-13 20:17:46 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2010-12-13 20:17:46 +0100 |
commit | c58bb30d66b333fc184a6b53ae9479e4aaeae8c4 (patch) | |
tree | 89cad753d7bd86c8471f9a2a500c2d9c2272c019 /gcc | |
parent | b767da733d09e7309c8e4700dacae239be5887d3 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/proc_ptr_comp_27.f90 | 12 |
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 |