diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2bea99664f0..cb6fd6122a0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2013-03-01 Tobias Burnus + + * trans-decl.c (gfc_trans_deferred_vars): Free expr after use. + * trans-io.c (build_dt): Ditto. + 2013-02-24 Joseph Myers * resolve.c (generate_component_assignments): Don't use UTF-8 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 337d747520f..7806bbbd878 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -3818,10 +3818,12 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block) NULL_TREE, true, NULL, true); else - tmp = gfc_deallocate_scalar_with_status (se.expr, NULL_TREE, - true, - gfc_lval_expr_from_sym (sym), - sym->ts); + { + gfc_expr *expr = gfc_lval_expr_from_sym (sym); + tmp = gfc_deallocate_scalar_with_status (se.expr, NULL_TREE, + true, expr, sym->ts); + gfc_free_expr (expr); + } } if (sym->ts.type == BT_CLASS) { diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index bb5fa2423a6..9394810f01f 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -1782,6 +1782,8 @@ build_dt (tree function, gfc_code * code) mask |= set_string (&block, &post_block, var, IOPARM_dt_namelist_name, nmlname); + gfc_free_expr (nmlname); + if (last_dt == READ) mask |= IOPARM_dt_namelist_read_mode;