tree-cfg.c (gimple_merge_blocks): Updates bb count with max count.
authorDehao Chen <dehao@google.com>
Fri, 16 May 2014 23:16:13 +0000 (23:16 +0000)
committerDehao Chen <dehao@gcc.gnu.org>
Fri, 16 May 2014 23:16:13 +0000 (23:16 +0000)
2014-05-16  Dehao Chen  <dehao@google.com>

* tree-cfg.c (gimple_merge_blocks): Updates bb count with max count.

From-SVN: r210538

gcc/ChangeLog
gcc/tree-cfg.c

index e73879ceddc3146741cfb66ab589552bf217e3b9..5b516955a40dcf0fb30e0fc10cf9b4e1c3977851 100644 (file)
@@ -1,3 +1,7 @@
+2014-05-16  Dehao Chen  <dehao@google.com>
+
+       * tree-cfg.c (gimple_merge_blocks): Updates bb count with max count.
+
 2014-05-16  Oleg Endo  <olegendo@gcc.gnu.org>
 
        PR target/54089
index 9be04fe81b59f22096dd90adaccbe3f2fffbe7bc..25e65e0ea3860cba544a36bbb4d660f79daa5a16 100644 (file)
@@ -1877,6 +1877,12 @@ gimple_merge_blocks (basic_block a, basic_block b)
        }
     }
 
+  /* When merging two BBs, if their counts are different, the larger count
+     is selected as the new bb count. This is to handle inconsistent
+     profiles.  */
+  a->count = MAX (a->count, b->count);
+  a->frequency = MAX (a->frequency, b->frequency);
+
   /* Merge the sequences.  */
   last = gsi_last_bb (a);
   gsi_insert_seq_after (&last, bb_seq (b), GSI_NEW_STMT);