aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2009-10-21 10:56:56 +0200
committerJanus Weil <janus@gcc.gnu.org>2009-10-21 10:56:56 +0200
commitaa9aed001981645070c365bfde5911cc941d37f2 (patch)
tree2c52f7047535b7b1fb364f1cc0584b23da86e9e4 /gcc/fortran
parentea524613af675c61b97f04b066e975afc58ba96b (diff)
downloadgcc-aa9aed001981645070c365bfde5911cc941d37f2.zip
gcc-aa9aed001981645070c365bfde5911cc941d37f2.tar.gz
gcc-aa9aed001981645070c365bfde5911cc941d37f2.tar.bz2
re PR fortran/41706 ([OOP] Calling one TBP as an actual argument of another TBP)
2009-10-21 Janus Weil <janus@gcc.gnu.org> PR fortran/41706 PR fortran/41766 * match.c (select_type_set_tmp): Set flavor for temporary. * resolve.c (resolve_class_typebound_call): Correctly resolve actual arguments. 2009-10-21 Janus Weil <janus@gcc.gnu.org> PR fortran/41706 PR fortran/41766 * gfortran.dg/class_9.f03: Extended test case. * gfortran.dg/select_type_7.f03: New test case. From-SVN: r153049
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/match.c7
-rw-r--r--gcc/fortran/resolve.c2
3 files changed, 13 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 0528e59..b3567e4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,11 @@
+2009-10-21 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41706
+ PR fortran/41766
+ * match.c (select_type_set_tmp): Set flavor for temporary.
+ * resolve.c (resolve_class_typebound_call): Correctly resolve actual
+ arguments.
+
2009-10-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41706
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 8721606..0a418c8 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -4047,9 +4047,10 @@ select_type_set_tmp (gfc_typespec *ts)
sprintf (name, "tmp$%s", ts->u.derived->name);
gfc_get_sym_tree (name, gfc_current_ns, &tmp, false);
- tmp->n.sym->ts = *ts;
- tmp->n.sym->attr.referenced = 1;
- tmp->n.sym->attr.pointer = 1;
+ gfc_add_type (tmp->n.sym, ts, NULL);
+ gfc_set_sym_referenced (tmp->n.sym);
+ gfc_add_pointer (&tmp->n.sym->attr, NULL);
+ gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL);
select_type_stack->tmp = tmp;
}
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 42b6e76..8e23308 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -5369,7 +5369,7 @@ resolve_class_typebound_call (gfc_code *code)
}
/* Resolve the argument expressions, */
- resolve_arg_exprs (code->ext.actual);
+ resolve_arg_exprs (code->expr1->value.compcall.actual);
/* Get the data component, which is of the declared type. */
derived = declared->components->ts.u.derived;