diff options
author | Tobias Burnus <burnus@net-b.de> | 2012-12-22 18:27:03 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2012-12-22 18:27:03 +0100 |
commit | 4038d0fb1f156f136ea94f8fa17f91150da9cbbd (patch) | |
tree | 3e9fad862f952a753852e5104f37ce2f18774e5f /gcc/fortran/trans-expr.c | |
parent | 409a5e7eb4cca107037fafa4a7eea92603edb83d (diff) | |
download | gcc-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.c | 9 |
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); |