diff mbox series

function.h: eliminate macros "dom_computed" and "n_bbs_in_dom_tree"

Message ID 20240618001103.909278-1-dmalcolm@redhat.com
State New
Headers show
Series function.h: eliminate macros "dom_computed" and "n_bbs_in_dom_tree" | expand

Commit Message

David Malcolm June 18, 2024, 12:11 a.m. UTC
Be explicit when we use "cfun".

No functional change intended.

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.

OK for trunk?

gcc/ChangeLog:
	* dominance.cc (compute_dom_fast_query): Replace uses of
	"dom_computed" macro with explicit use of cfun.
	(compute_dom_fast_query_in_region): Likewise.
	(calculate_dominance_info): Likewise, also for macro
	"n_bbs_in_dom_tree".
	(calculate_dominance_info_for_region): Likewise for
	"dom_computed" macro.
	(get_immediate_dominator): Likewise.
	(set_immediate_dominator): Likewise.
	(get_dominated_by): Likewise.
	(redirect_immediate_dominators): Likewise.
	(nearest_common_dominator): Likewise.
	(dominated_by_p): Likewise.
	(bb_dom_dfs_in): Likewise.
	(bb_dom_dfs_out): Likewise.
	(recompute_dominator): Likewise.
	(iterate_fix_dominators): Likewise.
	(add_to_dominance_info): Likewise, also for macro
	"n_bbs_in_dom_tree".
	(delete_from_dominance_info): Likewise.
	(set_dom_info_availability): Likewise for
	"dom_computed" macro.
	* function.h (dom_computed): Delete macro.
	(n_bbs_in_dom_tree): Delete macro.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/dominance.cc | 70 +++++++++++++++++++++++++-----------------------
 gcc/function.h   |  3 ---
 2 files changed, 36 insertions(+), 37 deletions(-)

Comments

Richard Biener June 18, 2024, 6:59 a.m. UTC | #1
On Tue, Jun 18, 2024 at 2:11 AM David Malcolm <dmalcolm@redhat.com> wrote:
>
> Be explicit when we use "cfun".
>
> No functional change intended.
>
> Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
>
> OK for trunk?
>
> gcc/ChangeLog:
>         * dominance.cc (compute_dom_fast_query): Replace uses of
>         "dom_computed" macro with explicit use of cfun.
>         (compute_dom_fast_query_in_region): Likewise.
>         (calculate_dominance_info): Likewise, also for macro
>         "n_bbs_in_dom_tree".
>         (calculate_dominance_info_for_region): Likewise for
>         "dom_computed" macro.
>         (get_immediate_dominator): Likewise.
>         (set_immediate_dominator): Likewise.
>         (get_dominated_by): Likewise.
>         (redirect_immediate_dominators): Likewise.
>         (nearest_common_dominator): Likewise.
>         (dominated_by_p): Likewise.
>         (bb_dom_dfs_in): Likewise.
>         (bb_dom_dfs_out): Likewise.
>         (recompute_dominator): Likewise.
>         (iterate_fix_dominators): Likewise.
>         (add_to_dominance_info): Likewise, also for macro
>         "n_bbs_in_dom_tree".
>         (delete_from_dominance_info): Likewise.
>         (set_dom_info_availability): Likewise for
>         "dom_computed" macro.
>         * function.h (dom_computed): Delete macro.
>         (n_bbs_in_dom_tree): Delete macro.
>
> Signed-off-by: David Malcolm <dmalcolm@redhat.com>
> ---
>  gcc/dominance.cc | 70 +++++++++++++++++++++++++-----------------------
>  gcc/function.h   |  3 ---
>  2 files changed, 36 insertions(+), 37 deletions(-)
>
> diff --git a/gcc/dominance.cc b/gcc/dominance.cc
> index 0357210ed27f..528b38caa9db 100644
> --- a/gcc/dominance.cc
> +++ b/gcc/dominance.cc
> @@ -672,7 +672,7 @@ compute_dom_fast_query (enum cdi_direction dir)
>
>    gcc_checking_assert (dom_info_available_p (dir));
>
> -  if (dom_computed[dir_index] == DOM_OK)
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)

The x_* members are named this way to be not used directly.  I think the
canonical replacement these days would be a

inline bool dom_computed (function *, enum cdi_direction) {...}

inline function.

Richard.

>      return;
>
>    FOR_ALL_BB_FN (bb, cfun)
> @@ -681,7 +681,7 @@ compute_dom_fast_query (enum cdi_direction dir)
>         assign_dfs_numbers (bb->dom[dir_index], &num);
>      }
>
> -  dom_computed[dir_index] = DOM_OK;
> +  cfun->cfg->x_dom_computed[dir_index] = DOM_OK;
>  }
>
>  /* Analogous to the previous function but compute the data for reducible
> @@ -697,7 +697,7 @@ compute_dom_fast_query_in_region (enum cdi_direction dir,
>
>    gcc_checking_assert (dom_info_available_p (dir));
>
> -  if (dom_computed[dir_index] == DOM_OK)
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
>      return;
>
>    /* Assign dfs numbers for region nodes except for entry and exit nodes.  */
> @@ -708,7 +708,7 @@ compute_dom_fast_query_in_region (enum cdi_direction dir,
>         assign_dfs_numbers (bb->dom[dir_index], &num);
>      }
>
> -  dom_computed[dir_index] = DOM_OK;
> +  cfun->cfg->x_dom_computed[dir_index] = DOM_OK;
>  }
>
>  /* The main entry point into this module.  DIR is set depending on whether
> @@ -721,7 +721,7 @@ calculate_dominance_info (cdi_direction dir, bool compute_fast_query)
>  {
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>
> -  if (dom_computed[dir_index] == DOM_OK)
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
>      {
>        checking_verify_dominators (dir);
>        return;
> @@ -730,14 +730,14 @@ calculate_dominance_info (cdi_direction dir, bool compute_fast_query)
>    timevar_push (TV_DOMINANCE);
>    if (!dom_info_available_p (dir))
>      {
> -      gcc_assert (!n_bbs_in_dom_tree[dir_index]);
> +      gcc_assert (!cfun->cfg->x_n_bbs_in_dom_tree[dir_index]);
>
>        basic_block b;
>        FOR_ALL_BB_FN (b, cfun)
>         {
>           b->dom[dir_index] = et_new_tree (b);
>         }
> -      n_bbs_in_dom_tree[dir_index] = n_basic_blocks_for_fn (cfun);
> +      cfun->cfg->x_n_bbs_in_dom_tree[dir_index] = n_basic_blocks_for_fn (cfun);
>
>        dom_info di (cfun, dir);
>        di.calc_dfs_tree ();
> @@ -749,7 +749,7 @@ calculate_dominance_info (cdi_direction dir, bool compute_fast_query)
>             et_set_father (b->dom[dir_index], d->dom[dir_index]);
>         }
>
> -      dom_computed[dir_index] = DOM_NO_FAST_QUERY;
> +      cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
>      }
>    else
>      checking_verify_dominators (dir);
> @@ -772,7 +772,7 @@ calculate_dominance_info_for_region (cdi_direction dir,
>    basic_block bb;
>    unsigned int i;
>
> -  if (dom_computed[dir_index] == DOM_OK)
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
>      return;
>
>    timevar_push (TV_DOMINANCE);
> @@ -791,7 +791,7 @@ calculate_dominance_info_for_region (cdi_direction dir,
>      if (basic_block d = di.get_idom (bb))
>        et_set_father (bb->dom[dir_index], d->dom[dir_index]);
>
> -  dom_computed[dir_index] = DOM_NO_FAST_QUERY;
> +  cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
>    compute_dom_fast_query_in_region (dir, region);
>
>    timevar_pop (TV_DOMINANCE);
> @@ -858,7 +858,7 @@ get_immediate_dominator (enum cdi_direction dir, basic_block bb)
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>    struct et_node *node = bb->dom[dir_index];
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
>    if (!node->father)
>      return NULL;
> @@ -875,7 +875,7 @@ set_immediate_dominator (enum cdi_direction dir, basic_block bb,
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>    struct et_node *node = bb->dom[dir_index];
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
>    if (node->father)
>      {
> @@ -887,8 +887,8 @@ set_immediate_dominator (enum cdi_direction dir, basic_block bb,
>    if (dominated_by)
>      et_set_father (node, dominated_by->dom[dir_index]);
>
> -  if (dom_computed[dir_index] == DOM_OK)
> -    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
> +    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
>  }
>
>  /* Returns the list of basic blocks immediately dominated by BB, in the
> @@ -900,7 +900,7 @@ get_dominated_by (enum cdi_direction dir, basic_block bb)
>    struct et_node *node = bb->dom[dir_index], *son = node->son, *ason;
>    auto_vec<basic_block> bbs;
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
>    if (!son)
>      return bbs;
> @@ -992,7 +992,7 @@ redirect_immediate_dominators (enum cdi_direction dir, basic_block bb,
>    bb_node = bb->dom[dir_index];
>    to_node = to->dom[dir_index];
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
>    if (!bb_node->son)
>      return;
> @@ -1005,8 +1005,8 @@ redirect_immediate_dominators (enum cdi_direction dir, basic_block bb,
>        et_set_father (son, to_node);
>      }
>
> -  if (dom_computed[dir_index] == DOM_OK)
> -    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
> +    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
>  }
>
>  /* Find first basic block in the tree dominating both BB1 and BB2.  */
> @@ -1015,7 +1015,7 @@ nearest_common_dominator (enum cdi_direction dir, basic_block bb1, basic_block b
>  {
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
>    if (!bb1)
>      return bb2;
> @@ -1127,9 +1127,9 @@ dominated_by_p (enum cdi_direction dir, const_basic_block bb1, const_basic_block
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>    struct et_node *n1 = bb1->dom[dir_index], *n2 = bb2->dom[dir_index];
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
> -  if (dom_computed[dir_index] == DOM_OK)
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
>      return (n1->dfs_num_in >= n2->dfs_num_in
>             && n1->dfs_num_out <= n2->dfs_num_out);
>
> @@ -1144,7 +1144,7 @@ bb_dom_dfs_in (enum cdi_direction dir, basic_block bb)
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>    struct et_node *n = bb->dom[dir_index];
>
> -  gcc_checking_assert (dom_computed[dir_index] == DOM_OK);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index] == DOM_OK);
>    return n->dfs_num_in;
>  }
>
> @@ -1156,7 +1156,7 @@ bb_dom_dfs_out (enum cdi_direction dir, basic_block bb)
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>    struct et_node *n = bb->dom[dir_index];
>
> -  gcc_checking_assert (dom_computed[dir_index] == DOM_OK);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index] == DOM_OK);
>    return n->dfs_num_out;
>  }
>
> @@ -1207,7 +1207,7 @@ recompute_dominator (enum cdi_direction dir, basic_block bb)
>    edge e;
>    edge_iterator ei;
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
>    if (dir == CDI_DOMINATORS)
>      {
> @@ -1409,7 +1409,8 @@ iterate_fix_dominators (enum cdi_direction dir, vec<basic_block> &bbs,
>       problems would be unused, untested, and almost surely buggy.  We keep
>       the DIR argument for consistency with the rest of the dominator analysis
>       interface.  */
> -  gcc_checking_assert (dir == CDI_DOMINATORS && dom_computed[dir_index]);
> +  gcc_checking_assert (dir == CDI_DOMINATORS
> +                      && cfun->cfg->x_dom_computed[dir_index]);
>
>    /* The algorithm we use takes inspiration from the following papers, although
>       the details are quite different from any of them:
> @@ -1558,14 +1559,15 @@ add_to_dominance_info (enum cdi_direction dir, basic_block bb)
>  {
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>
> -  gcc_checking_assert (dom_computed[dir_index] && !bb->dom[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]
> +                      && !bb->dom[dir_index]);
>
> -  n_bbs_in_dom_tree[dir_index]++;
> +  cfun->cfg->x_n_bbs_in_dom_tree[dir_index]++;
>
>    bb->dom[dir_index] = et_new_tree (bb);
>
> -  if (dom_computed[dir_index] == DOM_OK)
> -    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
> +    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
>  }
>
>  void
> @@ -1573,14 +1575,14 @@ delete_from_dominance_info (enum cdi_direction dir, basic_block bb)
>  {
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>
> -  gcc_checking_assert (dom_computed[dir_index]);
> +  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
>
>    et_free_tree (bb->dom[dir_index]);
>    bb->dom[dir_index] = NULL;
> -  n_bbs_in_dom_tree[dir_index]--;
> +  cfun->cfg->x_n_bbs_in_dom_tree[dir_index]--;
>
> -  if (dom_computed[dir_index] == DOM_OK)
> -    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
> +  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
> +    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
>  }
>
>  /* Returns the first son of BB in the dominator or postdominator tree
> @@ -1632,7 +1634,7 @@ set_dom_info_availability (enum cdi_direction dir, enum dom_state new_state)
>  {
>    unsigned int dir_index = dom_convert_dir_to_idx (dir);
>
> -  dom_computed[dir_index] = new_state;
> +  cfun->cfg->x_dom_computed[dir_index] = new_state;
>  }
>
>  /* Returns true if dominance information for direction DIR is available.  */
> diff --git a/gcc/function.h b/gcc/function.h
> index c0ba6cc1531a..e56de1195b5f 100644
> --- a/gcc/function.h
> +++ b/gcc/function.h
> @@ -535,10 +535,7 @@ get_new_clique (function *fn)
>
>  /* For backward compatibility... eventually these should all go away.  */
>  #define current_function_funcdef_no (cfun->funcdef_no)
> -
>  #define current_loops (cfun->x_current_loops)
> -#define dom_computed (cfun->cfg->x_dom_computed)
> -#define n_bbs_in_dom_tree (cfun->cfg->x_n_bbs_in_dom_tree)
>  #define VALUE_HISTOGRAMS(fun) (fun)->value_histograms
>
>  /* A pointer to a function to create target specific, per-function
> --
> 2.26.3
>
diff mbox series

Patch

diff --git a/gcc/dominance.cc b/gcc/dominance.cc
index 0357210ed27f..528b38caa9db 100644
--- a/gcc/dominance.cc
+++ b/gcc/dominance.cc
@@ -672,7 +672,7 @@  compute_dom_fast_query (enum cdi_direction dir)
 
   gcc_checking_assert (dom_info_available_p (dir));
 
-  if (dom_computed[dir_index] == DOM_OK)
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
     return;
 
   FOR_ALL_BB_FN (bb, cfun)
@@ -681,7 +681,7 @@  compute_dom_fast_query (enum cdi_direction dir)
 	assign_dfs_numbers (bb->dom[dir_index], &num);
     }
 
-  dom_computed[dir_index] = DOM_OK;
+  cfun->cfg->x_dom_computed[dir_index] = DOM_OK;
 }
 
 /* Analogous to the previous function but compute the data for reducible
@@ -697,7 +697,7 @@  compute_dom_fast_query_in_region (enum cdi_direction dir,
 
   gcc_checking_assert (dom_info_available_p (dir));
 
-  if (dom_computed[dir_index] == DOM_OK)
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
     return;
 
   /* Assign dfs numbers for region nodes except for entry and exit nodes.  */
@@ -708,7 +708,7 @@  compute_dom_fast_query_in_region (enum cdi_direction dir,
 	assign_dfs_numbers (bb->dom[dir_index], &num);
     }
 
-  dom_computed[dir_index] = DOM_OK;
+  cfun->cfg->x_dom_computed[dir_index] = DOM_OK;
 }
 
 /* The main entry point into this module.  DIR is set depending on whether
@@ -721,7 +721,7 @@  calculate_dominance_info (cdi_direction dir, bool compute_fast_query)
 {
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
 
-  if (dom_computed[dir_index] == DOM_OK)
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
     {
       checking_verify_dominators (dir);
       return;
@@ -730,14 +730,14 @@  calculate_dominance_info (cdi_direction dir, bool compute_fast_query)
   timevar_push (TV_DOMINANCE);
   if (!dom_info_available_p (dir))
     {
-      gcc_assert (!n_bbs_in_dom_tree[dir_index]);
+      gcc_assert (!cfun->cfg->x_n_bbs_in_dom_tree[dir_index]);
 
       basic_block b;
       FOR_ALL_BB_FN (b, cfun)
 	{
 	  b->dom[dir_index] = et_new_tree (b);
 	}
-      n_bbs_in_dom_tree[dir_index] = n_basic_blocks_for_fn (cfun);
+      cfun->cfg->x_n_bbs_in_dom_tree[dir_index] = n_basic_blocks_for_fn (cfun);
 
       dom_info di (cfun, dir);
       di.calc_dfs_tree ();
@@ -749,7 +749,7 @@  calculate_dominance_info (cdi_direction dir, bool compute_fast_query)
 	    et_set_father (b->dom[dir_index], d->dom[dir_index]);
 	}
 
-      dom_computed[dir_index] = DOM_NO_FAST_QUERY;
+      cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
     }
   else
     checking_verify_dominators (dir);
@@ -772,7 +772,7 @@  calculate_dominance_info_for_region (cdi_direction dir,
   basic_block bb;
   unsigned int i;
 
-  if (dom_computed[dir_index] == DOM_OK)
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
     return;
 
   timevar_push (TV_DOMINANCE);
@@ -791,7 +791,7 @@  calculate_dominance_info_for_region (cdi_direction dir,
     if (basic_block d = di.get_idom (bb))
       et_set_father (bb->dom[dir_index], d->dom[dir_index]);
 
-  dom_computed[dir_index] = DOM_NO_FAST_QUERY;
+  cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
   compute_dom_fast_query_in_region (dir, region);
 
   timevar_pop (TV_DOMINANCE);
@@ -858,7 +858,7 @@  get_immediate_dominator (enum cdi_direction dir, basic_block bb)
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
   struct et_node *node = bb->dom[dir_index];
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
   if (!node->father)
     return NULL;
@@ -875,7 +875,7 @@  set_immediate_dominator (enum cdi_direction dir, basic_block bb,
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
   struct et_node *node = bb->dom[dir_index];
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
   if (node->father)
     {
@@ -887,8 +887,8 @@  set_immediate_dominator (enum cdi_direction dir, basic_block bb,
   if (dominated_by)
     et_set_father (node, dominated_by->dom[dir_index]);
 
-  if (dom_computed[dir_index] == DOM_OK)
-    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
+    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
 }
 
 /* Returns the list of basic blocks immediately dominated by BB, in the
@@ -900,7 +900,7 @@  get_dominated_by (enum cdi_direction dir, basic_block bb)
   struct et_node *node = bb->dom[dir_index], *son = node->son, *ason;
   auto_vec<basic_block> bbs;
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
   if (!son)
     return bbs;
@@ -992,7 +992,7 @@  redirect_immediate_dominators (enum cdi_direction dir, basic_block bb,
   bb_node = bb->dom[dir_index];
   to_node = to->dom[dir_index];
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
   if (!bb_node->son)
     return;
@@ -1005,8 +1005,8 @@  redirect_immediate_dominators (enum cdi_direction dir, basic_block bb,
       et_set_father (son, to_node);
     }
 
-  if (dom_computed[dir_index] == DOM_OK)
-    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
+    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
 }
 
 /* Find first basic block in the tree dominating both BB1 and BB2.  */
@@ -1015,7 +1015,7 @@  nearest_common_dominator (enum cdi_direction dir, basic_block bb1, basic_block b
 {
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
   if (!bb1)
     return bb2;
@@ -1127,9 +1127,9 @@  dominated_by_p (enum cdi_direction dir, const_basic_block bb1, const_basic_block
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
   struct et_node *n1 = bb1->dom[dir_index], *n2 = bb2->dom[dir_index];
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
-  if (dom_computed[dir_index] == DOM_OK)
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
     return (n1->dfs_num_in >= n2->dfs_num_in
   	    && n1->dfs_num_out <= n2->dfs_num_out);
 
@@ -1144,7 +1144,7 @@  bb_dom_dfs_in (enum cdi_direction dir, basic_block bb)
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
   struct et_node *n = bb->dom[dir_index];
 
-  gcc_checking_assert (dom_computed[dir_index] == DOM_OK);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index] == DOM_OK);
   return n->dfs_num_in;
 }
 
@@ -1156,7 +1156,7 @@  bb_dom_dfs_out (enum cdi_direction dir, basic_block bb)
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
   struct et_node *n = bb->dom[dir_index];
 
-  gcc_checking_assert (dom_computed[dir_index] == DOM_OK);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index] == DOM_OK);
   return n->dfs_num_out;
 }
 
@@ -1207,7 +1207,7 @@  recompute_dominator (enum cdi_direction dir, basic_block bb)
   edge e;
   edge_iterator ei;
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
   if (dir == CDI_DOMINATORS)
     {
@@ -1409,7 +1409,8 @@  iterate_fix_dominators (enum cdi_direction dir, vec<basic_block> &bbs,
      problems would be unused, untested, and almost surely buggy.  We keep
      the DIR argument for consistency with the rest of the dominator analysis
      interface.  */
-  gcc_checking_assert (dir == CDI_DOMINATORS && dom_computed[dir_index]);
+  gcc_checking_assert (dir == CDI_DOMINATORS
+		       && cfun->cfg->x_dom_computed[dir_index]);
 
   /* The algorithm we use takes inspiration from the following papers, although
      the details are quite different from any of them:
@@ -1558,14 +1559,15 @@  add_to_dominance_info (enum cdi_direction dir, basic_block bb)
 {
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
 
-  gcc_checking_assert (dom_computed[dir_index] && !bb->dom[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]
+		       && !bb->dom[dir_index]);
 
-  n_bbs_in_dom_tree[dir_index]++;
+  cfun->cfg->x_n_bbs_in_dom_tree[dir_index]++;
 
   bb->dom[dir_index] = et_new_tree (bb);
 
-  if (dom_computed[dir_index] == DOM_OK)
-    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
+    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
 }
 
 void
@@ -1573,14 +1575,14 @@  delete_from_dominance_info (enum cdi_direction dir, basic_block bb)
 {
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
 
-  gcc_checking_assert (dom_computed[dir_index]);
+  gcc_checking_assert (cfun->cfg->x_dom_computed[dir_index]);
 
   et_free_tree (bb->dom[dir_index]);
   bb->dom[dir_index] = NULL;
-  n_bbs_in_dom_tree[dir_index]--;
+  cfun->cfg->x_n_bbs_in_dom_tree[dir_index]--;
 
-  if (dom_computed[dir_index] == DOM_OK)
-    dom_computed[dir_index] = DOM_NO_FAST_QUERY;
+  if (cfun->cfg->x_dom_computed[dir_index] == DOM_OK)
+    cfun->cfg->x_dom_computed[dir_index] = DOM_NO_FAST_QUERY;
 }
 
 /* Returns the first son of BB in the dominator or postdominator tree
@@ -1632,7 +1634,7 @@  set_dom_info_availability (enum cdi_direction dir, enum dom_state new_state)
 {
   unsigned int dir_index = dom_convert_dir_to_idx (dir);
 
-  dom_computed[dir_index] = new_state;
+  cfun->cfg->x_dom_computed[dir_index] = new_state;
 }
 
 /* Returns true if dominance information for direction DIR is available.  */
diff --git a/gcc/function.h b/gcc/function.h
index c0ba6cc1531a..e56de1195b5f 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -535,10 +535,7 @@  get_new_clique (function *fn)
 
 /* For backward compatibility... eventually these should all go away.  */
 #define current_function_funcdef_no (cfun->funcdef_no)
-
 #define current_loops (cfun->x_current_loops)
-#define dom_computed (cfun->cfg->x_dom_computed)
-#define n_bbs_in_dom_tree (cfun->cfg->x_n_bbs_in_dom_tree)
 #define VALUE_HISTOGRAMS(fun) (fun)->value_histograms
 
 /* A pointer to a function to create target specific, per-function