]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/35780 (internal compiler error for complicated PARAMETER expressions)
authorPaul Thomas <pault@gcc.gnu.org>
Mon, 22 Dec 2008 23:11:29 +0000 (23:11 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 22 Dec 2008 23:11:29 +0000 (23:11 +0000)
2008-12-22  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/35780
* trans-decl.c (init_intent_out_dt): Allow for optional args.

From-SVN: r142889

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c

index b3e3034857b9e4755f3289687110b655c1c432e1..f727f80b7c8cba132e9a0acbc315a21c9b6319b7 100644 (file)
@@ -1,3 +1,8 @@
+2008-12-22  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/35780
+       * trans-decl.c (init_intent_out_dt): Allow for optional args.
+
 2008-12-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/38398
index 91db5df5840b506fafa29c2ca2b4abf7911b0c65..af6d01a00ac73d3840ea19fb7b3300dac6ee9467 100644 (file)
@@ -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);
          }