toplev.c (rest_of_compilation): Run mark_constant_function before profile-arcs.
authorJan Hubicka <jh@suse.cz>
Wed, 20 Jun 2001 17:12:34 +0000 (19:12 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 20 Jun 2001 17:12:34 +0000 (17:12 +0000)
* toplev.c (rest_of_compilation): Run mark_constant_function
before profile-arcs.

From-SVN: r43477

gcc/ChangeLog
gcc/toplev.c

index d258e10a6c3d0c70f9def6d5b4ed2bec89fe7770..4370b43294322713825a0153dc89befe1ad78ba8 100644 (file)
@@ -1,3 +1,8 @@
+Wed Jun 20 19:10:48 CEST 2001  Jan Hubicka  <jh@suse.cz>
+
+       * toplev.c (rest_of_compilation): Run mark_constant_function
+       before profile-arcs.
+
 Wed Jun 20 19:08:18 CEST 2001  Jan Hubicka  <jh@suse.cz>
 
        * predict.c (estimate_loops_at_level, propagate_freq
index 7272d0c6b6586eb37542ac95287464dab716e2b5..eb6ec52a7eda382266622afcad4aa2403371992d 100644 (file)
@@ -3258,6 +3258,15 @@ rest_of_compilation (decl)
   cleanup_cfg ();
   check_function_return_warnings ();
 
+  /* It may make more sense to mark constant functions after dead code is
+     eliminated by life_analyzis, but we need to do it early, as -fprofile-arcs
+     may insert code making function non-constant, but we still must consider
+     it as constant, otherwise -fbranch-probabilities will not read data back.
+
+     life_analyzis rarely eliminates modification of external memory.
+   */
+  mark_constant_function ();
+
   close_dump_file (DFI_cfg, print_rtl_with_bb, insns);
 
   if (profile_arc_flag || flag_test_coverage || flag_branch_probabilities)
@@ -3290,7 +3299,6 @@ rest_of_compilation (decl)
       flow_loops_free (&loops);
     }
   life_analysis (insns, rtl_dump_file, PROP_FINAL);
-  mark_constant_function ();
   timevar_pop (TV_FLOW);
 
   register_life_up_to_date = 1;