aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/expr.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-03-02 14:07:46 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-03-02 14:07:46 +0100
commitf18075fff5c1b445f7e8c5d452f29195ef50118e (patch)
tree96c85bf852f194d4f7de40a8e882b8ba7940a34b /gcc/fortran/expr.c
parent2d68f67f2f107ec9629a003f6bba4b0878f61c36 (diff)
downloadgcc-f18075fff5c1b445f7e8c5d452f29195ef50118e.zip
gcc-f18075fff5c1b445f7e8c5d452f29195ef50118e.tar.gz
gcc-f18075fff5c1b445f7e8c5d452f29195ef50118e.tar.bz2
re PR fortran/52270 ([OOP] Polymorphic vars: wrong intent(in) check, passing nonptr variable to intent(in) ptr dummy)
2012-03-02 Tobias Burnus <burnus@net-b.de> PR fortran/52270 * expr.c (gfc_check_vardef_context): Fix check for intent-in polymorphic pointer . * interface.c (compare_parameter): Allow passing TYPE to intent-in polymorphic pointer. 2012-03-02 Tobias Burnus <burnus@net-b.de> PR fortran/52270 * gfortran.dg/class_51.f90: New. From-SVN: r184784
Diffstat (limited to 'gcc/fortran/expr.c')
-rw-r--r--gcc/fortran/expr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 129ece3..d136140 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -4648,7 +4648,8 @@ gfc_check_vardef_context (gfc_expr* e, bool pointer, bool alloc_obj,
the component of sub-component of a pointer. Obviously,
procedure pointers are of no interest here. */
check_intentin = true;
- ptr_component = sym->attr.pointer;
+ ptr_component = (sym->ts.type == BT_CLASS && CLASS_DATA (sym))
+ ? CLASS_DATA (sym)->attr.class_pointer : sym->attr.pointer;
for (ref = e->ref; ref && check_intentin; ref = ref->next)
{
if (ptr_component && ref->type == REF_COMPONENT)