diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b051cb13578e9c94b2640863fcd86d29efbb1e28..df960ee66ba7a2c4474d47ebb9f0a20df52f0a0b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Mon Mar  3 19:07:21 CET 2003  Jan Hubicka  <jh@suse.cz>
+
+	* toplev.c (rest_of_compilation):  Avoid cfg_cleanup calls when not
+	optimizing.
+
 2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* config/h8300/h8300.md (*ixorsi3_zext_hi): Restrict to
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 215b3186c525a6f9f970e3ce8340ac92651ed9f7..339b198b0cfabf5415f3c1b9cf0b697885b54e0a 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2812,7 +2812,8 @@ rest_of_compilation (decl)
     }
 
   timevar_push (TV_JUMP);
-  cleanup_cfg (optimize ? CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP: 0);
+  if (optimize)
+    cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_PRE_LOOP);
 
   /* Try to identify useless null pointer tests and delete them.  */
   if (flag_delete_null_pointer_checks)
@@ -3043,8 +3044,9 @@ rest_of_compilation (decl)
   open_dump_file (DFI_cfg, decl);
   if (rtl_dump_file)
     dump_flow_info (rtl_dump_file);
-  cleanup_cfg ((optimize ? CLEANUP_EXPENSIVE : 0)
-	       | (flag_thread_jumps ? CLEANUP_THREADING : 0));
+  if (optimize)
+    cleanup_cfg (CLEANUP_EXPENSIVE
+		 | (flag_thread_jumps ? CLEANUP_THREADING : 0));
 
   /* It may make more sense to mark constant functions after dead code is
      eliminated by life_analysis, but we need to do it early, as -fprofile-arcs
@@ -3473,7 +3475,8 @@ rest_of_compilation (decl)
 #endif
     split_all_insns (0);
 
-  cleanup_cfg (optimize ? CLEANUP_EXPENSIVE : 0);
+  if (optimize)
+    cleanup_cfg (CLEANUP_EXPENSIVE);
 
   /* On some machines, the prologue and epilogue code, or parts thereof,
      can be represented as RTL.  Doing so lets us schedule insns between