aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-expr.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-12-22 18:27:03 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-12-22 18:27:03 +0100
commit4038d0fb1f156f136ea94f8fa17f91150da9cbbd (patch)
tree3e9fad862f952a753852e5104f37ce2f18774e5f /gcc/fortran/trans-expr.c
parent409a5e7eb4cca107037fafa4a7eea92603edb83d (diff)
downloadgcc-4038d0fb1f156f136ea94f8fa17f91150da9cbbd.zip
gcc-4038d0fb1f156f136ea94f8fa17f91150da9cbbd.tar.gz
gcc-4038d0fb1f156f136ea94f8fa17f91150da9cbbd.tar.bz2
re PR fortran/55763 (Issues with some simpler CLASS(*) programs)
2012-12-21 Tobias Burnus <burnus@net-b.de> PR fortran/55763 * module.c (mio_component): Don't skip _hash's initializer. * resolve.c (resolve_select_type): Add an assert. * trans-expr.c (gfc_conv_procedure_call): Handle INTENT(OUT) for UNLIMIT_POLY. 2012-12-21 Tobias Burnus <burnus@net-b.de> PR fortran/55763 * gfortran.dg/unlimited_polymorphic_6.f90: New. From-SVN: r194696
Diffstat (limited to 'gcc/fortran/trans-expr.c')
-rw-r--r--gcc/fortran/trans-expr.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index ad26684..452f2bc 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -4302,7 +4302,14 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
null_pointer_node);
gfc_add_expr_to_block (&block, tmp);
- if (fsym->ts.type == BT_CLASS)
+ if (fsym->ts.type == BT_CLASS && UNLIMITED_POLY (fsym))
+ {
+ gfc_add_modify (&block, ptr,
+ fold_convert (TREE_TYPE (ptr),
+ null_pointer_node));
+ gfc_add_expr_to_block (&block, tmp);
+ }
+ else if (fsym->ts.type == BT_CLASS)
{
gfc_symbol *vtab;
vtab = gfc_find_derived_vtab (fsym->ts.u.derived);