diff mbox

Fix memory leaks in tree-ssa-uninit.c

Message ID 5645DCB1.6070309@suse.cz
State New
Headers show

Commit Message

Martin Liška Nov. 13, 2015, 12:50 p.m. UTC
Hello.

Patch survives regbootstrap on x86_64-linux-gnu.
Ready for trunk?

Thanks,
Martin

Comments

Jeff Law Nov. 13, 2015, 4:32 p.m. UTC | #1
On 11/13/2015 05:50 AM, Martin Liška wrote:
> Hello.
>
> Patch survives regbootstrap on x86_64-linux-gnu.
> Ready for trunk?
>
> Thanks,
> Martin
>
>
> 0001-Fix-memory-leaks-in-tree-ssa-uninit.c.patch
>
>
>  From 54851503251dee7a8bd074485db262715e628728 Mon Sep 17 00:00:00 2001
> From: marxin<mliska@suse.cz>
> Date: Fri, 13 Nov 2015 12:23:22 +0100
> Subject: [PATCH] Fix memory leaks in tree-ssa-uninit.c
>
> gcc/ChangeLog:
>
> 2015-11-13  Martin Liska<mliska@suse.cz>
>
> 	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
> 	Fix GNU coding style.
> 	(find_def_preds): Use auto_vec.
> 	(destroy_predicate_vecs): Change signature of the function.
> 	(prune_uninit_phi_opnds_in_unrealizable_paths): Use the
> 	new signature.
> 	(simplify_preds_4): Use destroy_predicate_vecs instread of
> 	just releasing preds vector.
> 	(normalize_preds): Likewise.
> 	(is_use_properly_guarded): Use new signature of
> 	destroy_predicate_vecs.
> 	(find_uninit_use): Likewise.
OK.

FWIW, there's all kinds of spaces vs tabs issues in this file.  I'm 
curious why you chose to fix convert_control_dep_chain_into_preds, but 
didn't change any others.

Jeff
Martin Liška Nov. 13, 2015, 4:58 p.m. UTC | #2
On 11/13/2015 05:32 PM, Jeff Law wrote:
> On 11/13/2015 05:50 AM, Martin Liška wrote:
>> Hello.
>>
>> Patch survives regbootstrap on x86_64-linux-gnu.
>> Ready for trunk?
>>
>> Thanks,
>> Martin
>>
>>
>> 0001-Fix-memory-leaks-in-tree-ssa-uninit.c.patch
>>
>>
>>  From 54851503251dee7a8bd074485db262715e628728 Mon Sep 17 00:00:00 2001
>> From: marxin<mliska@suse.cz>
>> Date: Fri, 13 Nov 2015 12:23:22 +0100
>> Subject: [PATCH] Fix memory leaks in tree-ssa-uninit.c
>>
>> gcc/ChangeLog:
>>
>> 2015-11-13  Martin Liska<mliska@suse.cz>
>>
>>     * tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
>>     Fix GNU coding style.
>>     (find_def_preds): Use auto_vec.
>>     (destroy_predicate_vecs): Change signature of the function.
>>     (prune_uninit_phi_opnds_in_unrealizable_paths): Use the
>>     new signature.
>>     (simplify_preds_4): Use destroy_predicate_vecs instread of
>>     just releasing preds vector.
>>     (normalize_preds): Likewise.
>>     (is_use_properly_guarded): Use new signature of
>>     destroy_predicate_vecs.
>>     (find_uninit_use): Likewise.
> OK.
> 
> FWIW, there's all kinds of spaces vs tabs issues in this file.  I'm curious why you chose to fix convert_control_dep_chain_into_preds, but didn't change any others.

Hi Jeff.

Thanks for confirmation, you are right, it's full of coding style issues. I can change these if it would be desired?

Thanks,
Martin

> 
> Jeff
Jeff Law Nov. 13, 2015, 7:19 p.m. UTC | #3
On 11/13/2015 09:58 AM, Martin Liška wrote:
> On 11/13/2015 05:32 PM, Jeff Law wrote:
>> On 11/13/2015 05:50 AM, Martin Liška wrote:
>>> Hello.
>>>
>>> Patch survives regbootstrap on x86_64-linux-gnu.
>>> Ready for trunk?
>>>
>>> Thanks,
>>> Martin
>>>
>>>
>>> 0001-Fix-memory-leaks-in-tree-ssa-uninit.c.patch
>>>
>>>
>>>   From 54851503251dee7a8bd074485db262715e628728 Mon Sep 17 00:00:00 2001
>>> From: marxin<mliska@suse.cz>
>>> Date: Fri, 13 Nov 2015 12:23:22 +0100
>>> Subject: [PATCH] Fix memory leaks in tree-ssa-uninit.c
>>>
>>> gcc/ChangeLog:
>>>
>>> 2015-11-13  Martin Liska<mliska@suse.cz>
>>>
>>>      * tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
>>>      Fix GNU coding style.
>>>      (find_def_preds): Use auto_vec.
>>>      (destroy_predicate_vecs): Change signature of the function.
>>>      (prune_uninit_phi_opnds_in_unrealizable_paths): Use the
>>>      new signature.
>>>      (simplify_preds_4): Use destroy_predicate_vecs instread of
>>>      just releasing preds vector.
>>>      (normalize_preds): Likewise.
>>>      (is_use_properly_guarded): Use new signature of
>>>      destroy_predicate_vecs.
>>>      (find_uninit_use): Likewise.
>> OK.
>>
>> FWIW, there's all kinds of spaces vs tabs issues in this file.  I'm curious why you chose to fix convert_control_dep_chain_into_preds, but didn't change any others.
>
> Hi Jeff.
>
> Thanks for confirmation, you are right, it's full of coding style issues. I can change these if it would be desired?
It's probably a good thing to do.  Given it'd strictly be formatting, 
I'd even consider it post-stage1.

jeff
diff mbox

Patch

From 54851503251dee7a8bd074485db262715e628728 Mon Sep 17 00:00:00 2001
From: marxin <mliska@suse.cz>
Date: Fri, 13 Nov 2015 12:23:22 +0100
Subject: [PATCH] Fix memory leaks in tree-ssa-uninit.c

gcc/ChangeLog:

2015-11-13  Martin Liska  <mliska@suse.cz>

	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds):
	Fix GNU coding style.
	(find_def_preds): Use auto_vec.
	(destroy_predicate_vecs): Change signature of the function.
	(prune_uninit_phi_opnds_in_unrealizable_paths): Use the
	new signature.
	(simplify_preds_4): Use destroy_predicate_vecs instread of
	just releasing preds vector.
	(normalize_preds): Likewise.
	(is_use_properly_guarded): Use new signature of
	destroy_predicate_vecs.
	(find_uninit_use): Likewise.
---
 gcc/tree-ssa-uninit.c | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index a439363..0709cce 100644
--- a/gcc/tree-ssa-uninit.c
+++ b/gcc/tree-ssa-uninit.c
@@ -628,9 +628,9 @@  convert_control_dep_chain_into_preds (vec<edge> *dep_chains,
         }
 
       if (!has_valid_pred)
-        break;
+	break;
       else
-        preds->safe_push (t_chain);
+	preds->safe_push (t_chain);
     }
   return has_valid_pred;
 }
@@ -682,7 +682,7 @@  find_predicates (pred_chain_union *preds,
 
 static void
 collect_phi_def_edges (gphi *phi, basic_block cd_root,
-                       vec<edge> *edges,
+		       auto_vec<edge> *edges,
 		       hash_set<gimple *> *visited_phis)
 {
   size_t i, n;
@@ -739,7 +739,7 @@  find_def_preds (pred_chain_union *preds, gphi *phi)
   size_t num_chains = 0, i, n;
   vec<edge> dep_chains[MAX_NUM_CHAINS];
   auto_vec<edge, MAX_CHAIN_LEN + 1> cur_chain;
-  vec<edge> def_edges = vNULL;
+  auto_vec<edge> def_edges;
   bool has_valid_pred = false;
   basic_block phi_bb, cd_root = 0;
 
@@ -829,14 +829,14 @@  dump_predicates (gimple *usestmt, pred_chain_union preds,
 /* Destroys the predicate set *PREDS.  */
 
 static void
-destroy_predicate_vecs (pred_chain_union preds)
+destroy_predicate_vecs (pred_chain_union *preds)
 {
   size_t i;
 
-  size_t n = preds.length ();
+  size_t n = preds->length ();
   for (i = 0; i < n; i++)
-    preds[i].release ();
-  preds.release ();
+    (*preds)[i].release ();
+  preds->release ();
 }
 
 
@@ -1103,7 +1103,7 @@  prune_uninit_phi_opnds_in_unrealizable_paths (gphi *phi,
 					    uninit_opnds2,
 					    &def_preds,
 					    visited_phis);
-	      destroy_predicate_vecs (def_preds);
+	      destroy_predicate_vecs (&def_preds);
 	      if (!ok)
 		return false;
             }
@@ -1769,7 +1769,8 @@  simplify_preds_4 (pred_chain_union *preds)
             continue;
           s_preds.safe_push ((*preds)[i]);
         }
-      preds->release ();
+
+      destroy_predicate_vecs (preds);
       (*preds) = s_preds;
       s_preds = vNULL;
     }
@@ -2148,7 +2149,7 @@  normalize_preds (pred_chain_union preds, gimple *use_or_def, bool is_use)
       dump_predicates (use_or_def, norm_preds, is_use ? "[USE]:\n" : "[DEF]:\n");
     }
 
-  preds.release ();
+  destroy_predicate_vecs (&preds);
   return norm_preds;
 }
 
@@ -2199,7 +2200,7 @@  is_use_properly_guarded (gimple *use_stmt,
 
   if (!has_valid_preds)
     {
-      destroy_predicate_vecs (preds);
+      destroy_predicate_vecs (&preds);
       return false;
     }
 
@@ -2210,7 +2211,7 @@  is_use_properly_guarded (gimple *use_stmt,
 
   if (is_properly_guarded)
     {
-      destroy_predicate_vecs (preds);
+      destroy_predicate_vecs (&preds);
       return true;
     }
 
@@ -2220,7 +2221,7 @@  is_use_properly_guarded (gimple *use_stmt,
 
       if (!has_valid_preds)
 	{
-	  destroy_predicate_vecs (preds);
+	  destroy_predicate_vecs (&preds);
 	  return false;
 	}
 
@@ -2233,7 +2234,7 @@  is_use_properly_guarded (gimple *use_stmt,
 
   is_properly_guarded = is_superset_of (*def_preds, preds);
 
-  destroy_predicate_vecs (preds);
+  destroy_predicate_vecs (&preds);
   return is_properly_guarded;
 }
 
@@ -2306,7 +2307,7 @@  find_uninit_use (gphi *phi, unsigned uninit_opnds,
         }
     }
 
-  destroy_predicate_vecs (def_preds);
+  destroy_predicate_vecs (&def_preds);
   return ret;
 }
 
-- 
2.6.2