trans-array.c (gfc_free_ss_chain): Made non-static.
authorMikael Morin <mikael@gcc.gnu.org>
Wed, 6 Oct 2010 16:30:08 +0000 (16:30 +0000)
committerMikael Morin <mikael@gcc.gnu.org>
Wed, 6 Oct 2010 16:30:08 +0000 (16:30 +0000)
2010-10-06  Mikael Morin  <mikael@gcc.gnu.org>

* trans-array.c (gfc_free_ss_chain): Made non-static.
* trans-array.h (gfc_free_ss_chain): New prototype.
* trans-stmt.c (gfc_trans_where_2): Free ss chains.

From-SVN: r165052

gcc/fortran/ChangeLog
gcc/fortran/trans-array.c
gcc/fortran/trans-array.h
gcc/fortran/trans-stmt.c

index ce484d10ba9a6dfb4592c66a71d45d0f407c3b3c..6a2316d1ccc6b1a9989d3ac6d6e3fb2640bd2779 100644 (file)
@@ -1,3 +1,9 @@
+2010-10-06  Mikael Morin  <mikael@gcc.gnu.org>
+
+       * trans-array.c (gfc_free_ss_chain): Made non-static.
+       * trans-array.h (gfc_free_ss_chain): New prototype.
+       * trans-stmt.c (gfc_trans_where_2): Free ss chains.
+
 2010-10-06  Mikael Morin  <mikael@gcc.gnu.org>
 
        * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Also free symbol's
index f70d16e0ea77bddea6e59d7f5c60873a255690d7..52ba831fe18183fec0ee3ae1d3ef5c86386ed5ef 100644 (file)
@@ -448,7 +448,7 @@ static void gfc_free_ss (gfc_ss *);
 
 /* Free a gfc_ss chain.  */
 
-static void
+void
 gfc_free_ss_chain (gfc_ss * ss)
 {
   gfc_ss *next;
index f363716d3d3b798a77aef8ff95b274121fd6ac99..4b0da3e214f4ebc05f635fac5e46773b604cea9a 100644 (file)
@@ -81,6 +81,8 @@ void gfc_cleanup_loop (gfc_loopinfo *);
 void gfc_add_ss_to_loop (gfc_loopinfo *, gfc_ss *);
 /* Mark a SS chain as used in this loop.  */
 void gfc_mark_ss_chain_used (gfc_ss *, unsigned);
+/* Free a gfc_ss chain.  */
+void gfc_free_ss_chain (gfc_ss *);
 
 /* Calculates the lower bound and stride of array sections.  */
 void gfc_conv_ss_startstride (gfc_loopinfo *);
index 1a4828addb61b951c468d19fe5edb46316a772dc..c0ffd161b7891a2d1f279f051f3618551eb8ecac 100644 (file)
@@ -3927,6 +3927,9 @@ gfc_trans_where_2 (gfc_code * code, tree mask, bool invert,
       inner_size = compute_inner_temp_size (cblock->expr1, cblock->expr1,
                                            &inner_size_body, &lss, &rss);
 
+      gfc_free_ss_chain (lss);
+      gfc_free_ss_chain (rss);
+
       /* Calculate the total size of temporary needed.  */
       size = compute_overall_iter_number (nested_forall_info, inner_size,
                                          &inner_size_body, block);