Rather simple fix. The first one was leaking expr->value.integer, the second one sym->formal_ns.

Build, tested and committed as Rev. 190728.

Tobias
Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog	(Revision 190714)
+++ gcc/fortran/ChangeLog	(Arbeitskopie)
@@ -1,6 +1,14 @@
 2012-08-27  Tobias Burnus  <bur...@net-b.de>
 
 	PR fortran/54384
+	* dependency.c (check_section_vs_section): Use gfc_free_expr
+	instead of free.
+	* trans-intrinsic.c (conv_generic_with_optional_char_arg): Use
+	gfc_free_symbol instead of free.
+
+2012-08-27  Tobias Burnus  <bur...@net-b.de>
+
+	PR fortran/54384
 	* trans-expr.c (gfc_trans_arrayfunc_assign): Free se.ss
 	and loop.
 
Index: gcc/fortran/dependency.c
===================================================================
--- gcc/fortran/dependency.c	(Revision 190714)
+++ gcc/fortran/dependency.c	(Arbeitskopie)
@@ -1220,7 +1220,7 @@ check_section_vs_section (gfc_array_ref *l_ar, gfc
   else
     start_comparison = -2;
       
-  free (one_expr);
+  gfc_free_expr (one_expr);
 
   /* Determine LHS upper and lower bounds.  */
   if (l_dir == 1)
Index: gcc/fortran/trans-intrinsic.c
===================================================================
--- gcc/fortran/trans-intrinsic.c	(Revision 190714)
+++ gcc/fortran/trans-intrinsic.c	(Arbeitskopie)
@@ -4525,7 +4525,7 @@ conv_generic_with_optional_char_arg (gfc_se* se, g
   sym = gfc_get_symbol_for_expr (expr);
   gfc_conv_procedure_call (se, sym, expr->value.function.actual, expr,
 			  append_args);
-  free (sym);
+  gfc_free_symbol (sym);
 }
 
 

Reply via email to