diff mbox

[GOOGLE] AutoFDO profile propagation should use all dominators

Message ID CAO2gOZX_AgSd0t56--cGLY8iDHYrY4D2RwapMi9DzKQ=K4wegA@mail.gmail.com
State New
Headers show

Commit Message

Dehao Chen Oct. 9, 2013, 11:47 p.m. UTC
This patch updates the AutoFDO profile propagation of equivalence
class: instead of looking just immediate dominators, traverse all
dominators. This helps improving profile accuracy.

Bootstrapped and passed regression test.

OK for google-4_8 branch?

Thanks,
Dehao

Comments

Xinliang David Li Oct. 9, 2013, 11:54 p.m. UTC | #1
ok.

David

On Wed, Oct 9, 2013 at 4:47 PM, Dehao Chen <dehao@google.com> wrote:
> This patch updates the AutoFDO profile propagation of equivalence
> class: instead of looking just immediate dominators, traverse all
> dominators. This helps improving profile accuracy.
>
> Bootstrapped and passed regression test.
>
> OK for google-4_8 branch?
>
> Thanks,
> Dehao
>
> Index: gcc/auto-profile.c
> ===================================================================
> --- gcc/auto-profile.c (revision 203331)
> +++ gcc/auto-profile.c (working copy)
> @@ -891,7 +891,7 @@ afdo_find_equiv_class (void)
>        if (bb->aux != NULL)
>   continue;
>        bb->aux = bb;
> -      dom_bbs = get_dominated_by (CDI_DOMINATORS, bb);
> +      dom_bbs = get_all_dominated_blocks (CDI_DOMINATORS, bb);
>        FOR_EACH_VEC_ELT (dom_bbs, i, bb1)
>   if (bb1->aux == NULL
>      && dominated_by_p (CDI_POST_DOMINATORS, bb, bb1)
> @@ -904,7 +904,7 @@ afdo_find_equiv_class (void)
>   bb->flags |= BB_ANNOTATED;
>        }
>    }
> -      dom_bbs = get_dominated_by (CDI_POST_DOMINATORS, bb);
> +      dom_bbs = get_all_dominated_blocks (CDI_POST_DOMINATORS, bb);
>        FOR_EACH_VEC_ELT (dom_bbs, i, bb1)
>   if (bb1->aux == NULL
>      && dominated_by_p (CDI_DOMINATORS, bb, bb1)
diff mbox

Patch

Index: gcc/auto-profile.c
===================================================================
--- gcc/auto-profile.c (revision 203331)
+++ gcc/auto-profile.c (working copy)
@@ -891,7 +891,7 @@  afdo_find_equiv_class (void)
       if (bb->aux != NULL)
  continue;
       bb->aux = bb;
-      dom_bbs = get_dominated_by (CDI_DOMINATORS, bb);
+      dom_bbs = get_all_dominated_blocks (CDI_DOMINATORS, bb);
       FOR_EACH_VEC_ELT (dom_bbs, i, bb1)
  if (bb1->aux == NULL
     && dominated_by_p (CDI_POST_DOMINATORS, bb, bb1)
@@ -904,7 +904,7 @@  afdo_find_equiv_class (void)
  bb->flags |= BB_ANNOTATED;
       }
   }
-      dom_bbs = get_dominated_by (CDI_POST_DOMINATORS, bb);
+      dom_bbs = get_all_dominated_blocks (CDI_POST_DOMINATORS, bb);
       FOR_EACH_VEC_ELT (dom_bbs, i, bb1)
  if (bb1->aux == NULL
     && dominated_by_p (CDI_DOMINATORS, bb, bb1)