Module: Mesa Branch: master Commit: c9b74f3f0306a3305ad62644a7c7ef1e4a3f19f1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c9b74f3f0306a3305ad62644a7c7ef1e4a3f19f1
Author: Connor Abbott <cwabbo...@gmail.com> Date: Sat Jan 14 18:08:11 2017 -0500 nir/gcm: fix a bug with metadata handling We were using impl->num_blocks, but that isn't guaranteed to be up-to-date until after the block_index metadata is required. If we were unlucky, this could lead to overwriting memory. Noticed by inspection. Signed-off-by: Connor Abbott <cwabbo...@gmail.com> Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> --- src/compiler/nir/nir_opt_gcm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/nir/nir_opt_gcm.c b/src/compiler/nir/nir_opt_gcm.c index cff2315..879a77a 100644 --- a/src/compiler/nir/nir_opt_gcm.c +++ b/src/compiler/nir/nir_opt_gcm.c @@ -456,6 +456,9 @@ gcm_place_instr(nir_instr *instr, struct gcm_state *state) static bool opt_gcm_impl(nir_function_impl *impl, bool value_number) { + nir_metadata_require(impl, nir_metadata_block_index | + nir_metadata_dominance); + struct gcm_state state; state.impl = impl; @@ -463,9 +466,6 @@ opt_gcm_impl(nir_function_impl *impl, bool value_number) exec_list_make_empty(&state.instrs); state.blocks = rzalloc_array(NULL, struct gcm_block_info, impl->num_blocks); - nir_metadata_require(impl, nir_metadata_block_index | - nir_metadata_dominance); - gcm_build_block_info(&impl->body, &state, 0); nir_foreach_block(block, impl) { _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit