From 8a2725318babd06ccbb2a45d9d9cb699c75e4f38 Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Mon, 22 Dec 2008 23:11:29 +0000 Subject: [PATCH] re PR fortran/35780 (internal compiler error for complicated PARAMETER expressions) 2008-12-22 Paul Thomas PR fortran/35780 * trans-decl.c (init_intent_out_dt): Allow for optional args. From-SVN: r142889 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/trans-decl.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b3e3034857b..f727f80b7c8 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2008-12-22 Paul Thomas + + PR fortran/35780 + * trans-decl.c (init_intent_out_dt): Allow for optional args. + 2008-12-21 Jerry DeLisle PR fortran/38398 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 91db5df5840..af6d01a00ac 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -2791,6 +2791,7 @@ init_intent_out_dt (gfc_symbol * proc_sym, tree body) stmtblock_t fnblock; gfc_formal_arglist *f; tree tmp; + tree present; gfc_init_block (&fnblock); for (f = proc_sym->formal; f; f = f->next) @@ -2802,6 +2803,11 @@ init_intent_out_dt (gfc_symbol * proc_sym, tree body) tmp = gfc_deallocate_alloc_comp (f->sym->ts.derived, f->sym->backend_decl, f->sym->as ? f->sym->as->rank : 0); + + present = gfc_conv_expr_present (f->sym); + tmp = build3 (COND_EXPR, TREE_TYPE (tmp), present, + tmp, build_empty_stmt ()); + gfc_add_expr_to_block (&fnblock, tmp); }