diff options
author | Janus Weil <janus@gcc.gnu.org> | 2010-08-30 23:56:28 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2010-08-30 23:56:28 +0200 |
commit | e8cd3983460329e2a669ff12f2b75d922d82ce89 (patch) | |
tree | cbdc1573ea352061397f8f8c9977461bd3fddc4a | |
parent | d3c12306971946ab9a9d644ddf7b26e9383d2391 (diff) | |
download | gcc-e8cd3983460329e2a669ff12f2b75d922d82ce89.zip gcc-e8cd3983460329e2a669ff12f2b75d922d82ce89.tar.gz gcc-e8cd3983460329e2a669ff12f2b75d922d82ce89.tar.bz2 |
re PR fortran/45456 ([OOP] Bogus pointer initialization error on pointer-valued TBP)
2010-08-30 Janus Weil <janus@gcc.gnu.org>
PR fortran/45456
* resolve.c (resolve_structure_cons): Handle pointer-valued PPCs.
2010-08-30 Janus Weil <janus@gcc.gnu.org>
PR fortran/45456
* gfortran.dg/typebound_proc_18.f03: New.
From-SVN: r163661
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/typebound_proc_18.f03 | 29 |
4 files changed, 41 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d654b36..4e64e84 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2010-08-30 Janus Weil <janus@gcc.gnu.org> + + PR fortran/45456 + * resolve.c (resolve_structure_cons): Handle pointer-valued PPCs. + 2010-08-30 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> * Make-lang.in: Add frontend-passes.o dependencies. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index b9fea23..45696ab 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1083,7 +1083,8 @@ resolve_structure_cons (gfc_expr *expr, int init) comp->name); } - if (!comp->attr.pointer || cons->expr->expr_type == EXPR_NULL) + if (!comp->attr.pointer || comp->attr.proc_pointer + || cons->expr->expr_type == EXPR_NULL) continue; a = gfc_expr_attr (cons->expr); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 65339bd..ed808be 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-08-30 Janus Weil <janus@gcc.gnu.org> + + PR fortran/45456 + * gfortran.dg/typebound_proc_18.f03: New. + 2010-08-30 Eric Botcazou <ebotcazou@adacore.com> * lib/gcc-dg.exp (cleanup-stack-usage): New procedure. diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_18.f03 b/gcc/testsuite/gfortran.dg/typebound_proc_18.f03 new file mode 100644 index 0000000..4ddd178 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/typebound_proc_18.f03 @@ -0,0 +1,29 @@ +! { dg-do compile } +! +! PR 45456: [4.6 Regression] [OOP] Bogus pointer initialization error on pointer-valued TBP +! +! Contributed by Andrew Benson <abenson@its.caltech.edu> + +module Merger_Trees + private + public :: mergerTree + + type mergerTree + contains + procedure :: getNode => Tree_Node_Get + end type mergerTree + +contains + + function Tree_Node_Get(thisTree,nodeIndex) result(foundNode) + implicit none + class(mergerTree), intent(inout) :: thisTree + integer, intent(in) :: nodeIndex + integer, pointer :: foundNode + + return + end function Tree_Node_Get + +end module Merger_Trees + +! { dg-final { cleanup-modules "Merger_Trees" } } |