diff options
author | Connor Abbott <[email protected]> | 2016-04-08 17:37:40 -0400 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2016-04-28 15:52:17 -0700 |
commit | eecf96f5303973968a11fad8d786c34aa614d5ee (patch) | |
tree | 142ef9bfdeb573d573920e42be1c53319cbd9cb8 /src | |
parent | 26b4c9ee159a8cb87b29eec0a1b8701c1750a29d (diff) |
nir/opt_constant_folding: fixup for new foreach_block()
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/nir/nir_opt_constant_folding.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/compiler/nir/nir_opt_constant_folding.c b/src/compiler/nir/nir_opt_constant_folding.c index 9232ec47b8e..a3adaecdd96 100644 --- a/src/compiler/nir/nir_opt_constant_folding.c +++ b/src/compiler/nir/nir_opt_constant_folding.c @@ -173,22 +173,21 @@ constant_fold_tex_instr(nir_tex_instr *instr) } static bool -constant_fold_block(nir_block *block, void *void_state) +constant_fold_block(nir_block *block, void *mem_ctx) { - struct constant_fold_state *state = void_state; + bool progress = false; nir_foreach_instr_safe(block, instr) { switch (instr->type) { case nir_instr_type_alu: - state->progress |= constant_fold_alu_instr(nir_instr_as_alu(instr), - state->mem_ctx); + progress |= constant_fold_alu_instr(nir_instr_as_alu(instr), mem_ctx); break; case nir_instr_type_intrinsic: - state->progress |= + progress |= constant_fold_intrinsic_instr(nir_instr_as_intrinsic(instr)); break; case nir_instr_type_tex: - state->progress |= constant_fold_tex_instr(nir_instr_as_tex(instr)); + progress |= constant_fold_tex_instr(nir_instr_as_tex(instr)); break; default: /* Don't know how to constant fold */ @@ -196,25 +195,24 @@ constant_fold_block(nir_block *block, void *void_state) } } - return true; + return progress; } static bool nir_opt_constant_folding_impl(nir_function_impl *impl) { - struct constant_fold_state state; - - state.mem_ctx = ralloc_parent(impl); - state.impl = impl; - state.progress = false; + void *mem_ctx = ralloc_parent(impl); + bool progress = false; - nir_foreach_block_call(impl, constant_fold_block, &state); + nir_foreach_block(block, impl) { + progress |= constant_fold_block(block, mem_ctx); + } - if (state.progress) + if (progress) nir_metadata_preserve(impl, nir_metadata_block_index | nir_metadata_dominance); - return state.progress; + return progress; } bool |