From: Janus Weil Date: Mon, 30 Aug 2010 21:56:28 +0000 (+0200) Subject: re PR fortran/45456 ([OOP] Bogus pointer initialization error on pointer-valued TBP) X-Git-Tag: upstream/12.2.0~90623 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e8cd3983460329e2a669ff12f2b75d922d82ce89;p=platform%2Fupstream%2Fgcc.git re PR fortran/45456 ([OOP] Bogus pointer initialization error on pointer-valued TBP) 2010-08-30 Janus Weil PR fortran/45456 * resolve.c (resolve_structure_cons): Handle pointer-valued PPCs. 2010-08-30 Janus Weil PR fortran/45456 * gfortran.dg/typebound_proc_18.f03: New. From-SVN: r163661 --- 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 + + PR fortran/45456 + * resolve.c (resolve_structure_cons): Handle pointer-valued PPCs. + 2010-08-30 Francois-Xavier Coudert * 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 + + PR fortran/45456 + * gfortran.dg/typebound_proc_18.f03: New. + 2010-08-30 Eric Botcazou * 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 + +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" } }