diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e387cbcd990f5d3f1d924d8fa5639b87772e8191..80297cff20d81c76090d5c506fde0c59862808ba 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2004-01-02  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	* c-typeck.c (finish_init): Free spelling_base before 
+	setting it again.
+	
+	* cfgloop.c (flow_loops_find): Always free the sbitmap
+	headers.
+
+	* predict.c (estimate_probability): Free bbs after being
+	done with it.
+
 2004-01-02  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* config/mn10300/mn10300.h (PREDICATE_CODES): Add
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 682cbc0585fdb32c4ea3dbbe3f8f5622833f8355..3a71ee7f001a489064c5c42a60b18995f4206c25 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -4450,6 +4450,8 @@ finish_init (void)
     abort ();
 
   /* Pop back to the data of the outer initializer (if any).  */
+  free (spelling_base);
+  
   constructor_decl = p->decl;
   constructor_asmspec = p->asmspec;
   require_constant_value = p->require_constant_value;
diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c
index 43c52f23ddb7d0906b01ee78b6584e905989edef..37cf8f450bf0615698445bad236fa0447c140f15 100644
--- a/gcc/cfgloop.c
+++ b/gcc/cfgloop.c
@@ -883,8 +883,6 @@ flow_loops_find (struct loops *loops, int flags)
 	  loop->num_nodes = flow_loop_nodes_find (loop->header, loop);
 	}
 
-      sbitmap_free (headers);
-
       /* Assign the loop nesting depth and enclosed loop level for each
 	 loop.  */
       loops->levels = flow_loops_level_compute (loops);
@@ -900,6 +898,8 @@ flow_loops_find (struct loops *loops, int flags)
       free_dominance_info (CDI_DOMINATORS);
     }
 
+  sbitmap_free (headers);
+
   loops->state = 0;
 #ifdef ENABLE_CHECKING
   verify_flow_info ();
diff --git a/gcc/predict.c b/gcc/predict.c
index 74a1f24c3ad504b36e37f822b9a42c413426b7db..0cba3a5f91e730256e403eb789fa798c8eaac954 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -467,6 +467,9 @@ estimate_probability (struct loops *loops_info)
 		    - predictor_info [(int) PRED_LOOP_EXIT].hitrate)
 		   / exits);
 	}
+      
+      /* Free basic blocks from get_loop_body. */
+      free (bbs);
     }
 
   /* Attempt to predict conditional jumps using a number of heuristics.  */