Hello,

This tiny patch fixes the issue previously discussed in
http://gcc.gnu.org/ml/gcc-patches/2012-09/msg00794.html

Not maintaining bb->count while merging basic blocs results in wrong
partitioning (and surely other) decisions. This is visible on the SH4
with shrink-wrapping. I haven't noticed any difference on x86.

This also solves a few "Invalid sum of incoming frequencies" messages
while dumping the CFG

Reg-tested on x85 and sh-superh-elf. Is it OK for the 4.7 and 4.8 branches ?

Thanks

Christian
2012-11-07  Christian Bruel  <christian.br...@st.com>

	* tree-ssa-tail-merge.c (replace_block_by): Update target bb count.

Index: tree-ssa-tail-merge.c
===================================================================
--- tree-ssa-tail-merge.c	(revision 193283)
+++ tree-ssa-tail-merge.c	(working copy)
@@ -1490,6 +1490,8 @@ replace_block_by (basic_block bb1, basic_block bb2
     bb2->frequency = BB_FREQ_MAX;
   bb1->frequency = 0;
 
+  bb2->count += bb1->count;
+
   /* Do updates that use bb1, before deleting bb1.  */
   release_last_vdef (bb1);
   same_succ_flush_bb (bb1);

Reply via email to