Browse Source

nir: Delete the nir_function_impl::start_block field.

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>
tags/11.1-branchpoint
Kenneth Graunke 10 years ago
parent
commit
8e0d4ef341

+ 0
- 1
src/glsl/nir/nir.c View 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);

+ 7
- 1
src/glsl/nir/nir.h View 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)
{

+ 5
- 4
src/glsl/nir/nir_dominance.c View 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

+ 1
- 1
src/glsl/nir/nir_lower_vars_to_ssa.c View 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);

+ 1
- 1
src/glsl/nir/nir_opt_gcm.c View 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);

+ 1
- 1
src/glsl/nir/nir_to_ssa.c View 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);


Loading…
Cancel
Save