From a14df7dabe7ede95e34d726741524031746f563c Mon Sep 17 00:00:00 2001
From: Uttam Pawar <uttamp@us.ibm.com>
Date: Tue, 14 Mar 2006 00:24:54 +0000
Subject: [PATCH] re PR rtl-optimization/25739 (Memory leak in
 bt_load.c(augment_live_range))

2006-03-13  Uttam Pawar  <uttamp@us.ibm.com>

	PR rtl-optimization/25739
	* bt-load.c (augment_live_range): Free tos pointer.

	* gensupport.c (identify_predicable_attribute): Free
	p_false pointer.
	* gcov.c (create_file_names): Free name pointer.

From-SVN: r112039
---
 gcc/ChangeLog    |  9 +++++++++
 gcc/bt-load.c    |  4 +++-
 gcc/gcov.c       |  1 +
 gcc/gensupport.c | 11 ++++++++++-
 4 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8d28b2f835c9..fdc7531b53ec 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2006-03-13  Uttam Pawar  <uttamp@us.ibm.com>
+
+	PR rtl-optimization/25739
+	* bt-load.c (augment_live_range): Free tos pointer.
+
+	* gensupport.c (identify_predicable_attribute): Free
+	p_false pointer.
+	* gcov.c (create_file_names): Free name pointer.
+
 2006-03-13  Roger Sayle  <roger@eyesopen.com>
 
 	PR middle-end/26557
diff --git a/gcc/bt-load.c b/gcc/bt-load.c
index 853155526f7d..70975e4318d7 100644
--- a/gcc/bt-load.c
+++ b/gcc/bt-load.c
@@ -1,5 +1,6 @@
 /* Perform branch target register load optimizations.
-   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -911,6 +912,7 @@ augment_live_range (bitmap live_range, HARD_REG_SET *btrs_live_in_range,
 	{
 	  if (full_range)
 	    IOR_HARD_REG_SET (*btrs_live_in_range, btrs_live[new_bb->index]);
+	  free (tos);
 	  return;
 	}
       *tos++ = new_bb;
diff --git a/gcc/gcov.c b/gcc/gcov.c
index 78f0ad495e79..d8cc9bd0927d 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -658,6 +658,7 @@ create_file_names (const char *file_name)
   strcpy (da_file_name, name);
   strcpy (da_file_name + length, GCOV_DATA_SUFFIX);
 
+  free (name);
   return;
 }
 
diff --git a/gcc/gensupport.c b/gcc/gensupport.c
index a880b111c0fd..16878b8cf09d 100644
--- a/gcc/gensupport.c
+++ b/gcc/gensupport.c
@@ -1,5 +1,5 @@
 /* Support routines for the various generation passes.
-   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
 
    This file is part of GCC.
@@ -468,6 +468,8 @@ identify_predicable_attribute (void)
       message_with_line (elem->lineno,
 			 "attribute `predicable' is not a boolean");
       errors = 1;
+      if (p_false)
+        free (p_false);
       return;
     }
   p_true[-1] = '\0';
@@ -485,12 +487,16 @@ identify_predicable_attribute (void)
       message_with_line (elem->lineno,
 			 "attribute `predicable' cannot be const");
       errors = 1;
+      if (p_false)
+	free (p_false);
       return;
 
     default:
       message_with_line (elem->lineno,
 			 "attribute `predicable' must have a constant default");
       errors = 1;
+      if (p_false)
+	free (p_false);
       return;
     }
 
@@ -505,6 +511,9 @@ identify_predicable_attribute (void)
 			 value);
       errors = 1;
     }
+
+  if (p_false)
+    free (p_false);
 }
 
 /* Return the number of alternatives in constraint S.  */
-- 
GitLab