http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54618
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-09-19 08:18:27 UTC --- The second issue has to be fixed in trans-expr.c's gfc_conv_procedure_call. Patch for the first issue. --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -623,2 +623,12 @@ gfc_trans_class_init_assign (gfc_code *code) } + + if (code->expr1->symtree->n.sym->attr.optional + || code->expr1->symtree->n.sym->ns->proc_name->attr.entry_master) + { + tree present = gfc_conv_expr_present (code->expr1->symtree->n.sym); + tmp = build3_loc (input_location, COND_EXPR, TREE_TYPE (tmp), + present, tmp, + build_empty_stmt (input_location)); + } + gfc_add_expr_to_block (&block, tmp);