aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans.c
diff options
context:
space:
mode:
authorMikael Morin <mikael@gcc.gnu.org>2011-02-23 22:38:27 +0000
committerMikael Morin <mikael@gcc.gnu.org>2011-02-23 22:38:27 +0000
commit46b2c44027f8972329b6f602b57c9fdf1a8e4007 (patch)
treea4e7cb1e664ed6ae2b86798290fd00e26da7d19c /gcc/fortran/trans.c
parentb14fad9dd817fb6f5bd33573a530e7e41131ee0c (diff)
downloadgcc-46b2c44027f8972329b6f602b57c9fdf1a8e4007.zip
gcc-46b2c44027f8972329b6f602b57c9fdf1a8e4007.tar.gz
gcc-46b2c44027f8972329b6f602b57c9fdf1a8e4007.tar.bz2
re PR fortran/40850 (double free in nested types with allocatable components)
2011-02-23 Mikael Morin <mikael@gcc.gnu.org> PR fortran/40850 * trans.c (gfc_prepend_expr_to_block): New function. * trans.h (gfc_prepend_expr_to_block): Declare. * trans-array.c (gfc_conv_array_parameter): Replace gfc_add_expr_to_block with gfc_prepend_expr_to_block. 2011-02-23 Mikael Morin <mikael@gcc.gnu.org> PR fortran/40850 * gfortran.dg/nested_allocatables_1.f90: New. From-SVN: r170445
Diffstat (limited to 'gcc/fortran/trans.c')
-rw-r--r--gcc/fortran/trans.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 1fd0dc1..27a352a 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -1090,7 +1090,8 @@ add_expr_to_chain (tree* chain, tree expr, bool front)
*chain = expr;
}
-/* Add a statement to a block. */
+
+/* Add a statement at the end of a block. */
void
gfc_add_expr_to_block (stmtblock_t * block, tree expr)
@@ -1100,6 +1101,16 @@ gfc_add_expr_to_block (stmtblock_t * block, tree expr)
}
+/* Add a statement at the beginning of a block. */
+
+void
+gfc_prepend_expr_to_block (stmtblock_t * block, tree expr)
+{
+ gcc_assert (block);
+ add_expr_to_chain (&block->head, expr, true);
+}
+
+
/* Add a block the end of a block. */
void