nir: Delete the nir_function_impl::start_block field.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 7 Aug 2015 01:18:40 +0000 (18:18 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 24 Aug 2015 20:31:41 +0000 (13:31 -0700)
It's simply the first nir_cf_node in the nir_function_impl::body list,
which is easy enough to access - we don't to store a pointer to it
explicitly.  Removing it means we don't need to maintain the pointer
when, say, splitting the start block when modifying control flow.

Thanks to Connor Abbott for suggesting this.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/glsl/nir/nir.c
src/glsl/nir/nir.h
src/glsl/nir/nir_dominance.c
src/glsl/nir/nir_lower_vars_to_ssa.c
src/glsl/nir/nir_opt_gcm.c
src/glsl/nir/nir_to_ssa.c

index 2f7cbae42be9f7a582f5eced08e40b995c3b7bb1..60fdac5920d7010179114d8a48af545ceda8d7ef 100644 (file)
@@ -262,7 +262,6 @@ nir_function_impl_create(nir_function_overload *overload)
    nir_block *end_block = nir_block_create(mem_ctx);
    start_block->cf_node.parent = &impl->cf_node;
    end_block->cf_node.parent = &impl->cf_node;
-   impl->start_block = start_block;
    impl->end_block = end_block;
 
    exec_list_push_tail(&impl->body, &start_block->cf_node.node);
index 222a219d0e67cade5b2281aa19b834ec6b50a219..52f84c4d62c819366b4e769076778895a921609e 100644 (file)
@@ -1309,7 +1309,7 @@ typedef struct {
 
    struct exec_list body; /** < list of nir_cf_node */
 
-   nir_block *start_block, *end_block;
+   nir_block *end_block;
 
    /** list for all local variables in the function */
    struct exec_list locals;
@@ -1336,6 +1336,12 @@ typedef struct {
    nir_metadata valid_metadata;
 } nir_function_impl;
 
+static inline nir_block *
+nir_start_block(nir_function_impl *impl)
+{
+   return (nir_block *) exec_list_get_head(&impl->body);
+}
+
 static inline nir_cf_node *
 nir_cf_node_next(nir_cf_node *node)
 {
index 2f50db1c1f6d31959c215048577b31fffd5aec46..af4caae0055913d184a7de096d5a3ceddc64e757 100644 (file)
@@ -42,7 +42,7 @@ static bool
 init_block_cb(nir_block *block, void *_state)
 {
    dom_state *state = (dom_state *) _state;
-   if (block == state->impl->start_block)
+   if (block == nir_start_block(state->impl))
       block->imm_dom = block;
    else
       block->imm_dom = NULL;
@@ -78,7 +78,7 @@ static bool
 calc_dominance_cb(nir_block *block, void *_state)
 {
    dom_state *state = (dom_state *) _state;
-   if (block == state->impl->start_block)
+   if (block == nir_start_block(state->impl))
       return true;
 
    nir_block *new_idom = NULL;
@@ -209,12 +209,13 @@ nir_calc_dominance_impl(nir_function_impl *impl)
 
    nir_foreach_block(impl, calc_dom_frontier_cb, &state);
 
-   impl->start_block->imm_dom = NULL;
+   nir_block *start_block = nir_start_block(impl);
+   start_block->imm_dom = NULL;
 
    calc_dom_children(impl);
 
    unsigned dfs_index = 0;
-   calc_dfs_indicies(impl->start_block, &dfs_index);
+   calc_dfs_indicies(start_block, &dfs_index);
 }
 
 void
index ccb8f99dfbaf46df7ceb3322633c9bb595b2d6fb..4ff21663e57f9c7f4b2af482f7d745131aac1ad1 100644 (file)
@@ -935,7 +935,7 @@ nir_lower_vars_to_ssa_impl(nir_function_impl *impl)
    nir_foreach_block(impl, register_variable_uses_block, &state);
 
    insert_phi_nodes(&state);
-   rename_variables_block(impl->start_block, &state);
+   rename_variables_block(nir_start_block(impl), &state);
 
    nir_metadata_preserve(impl, nir_metadata_block_index |
                                nir_metadata_dominance);
index 44068bf37b8561820d3440667a778f855b4f3496..5b412eebc32df9fba71658f6fce100db386efbd3 100644 (file)
@@ -256,7 +256,7 @@ gcm_schedule_early_instr(nir_instr *instr, struct gcm_state *state)
    /* Start with the instruction at the top.  As we iterate over the
     * sources, it will get moved down as needed.
     */
-   instr->block = state->impl->start_block;
+   instr->block = nir_start_block(state->impl);
    state->instr = instr;
 
    nir_foreach_src(instr, gcm_schedule_early_src, state);
index a3c35fa049325ece470cc544d0fb8366480bb9af..b089df79fcf2ee53f3449a4b1c32ad47096d5b7a 100644 (file)
@@ -516,7 +516,7 @@ nir_convert_to_ssa_impl(nir_function_impl *impl)
    rewrite_state state;
    init_rewrite_state(impl, &state);
 
-   rewrite_block(impl->start_block, &state);
+   rewrite_block(nir_start_block(impl), &state);
 
    remove_unused_regs(impl, &state);