}
break;
+ case nir_instr_type_deref:
+ instr->pass_flags = 0;
+ break;
+
case nir_instr_type_tex:
switch (nir_instr_as_tex(instr)->op) {
case nir_texop_tex:
if (lca == NULL)
return true;
- /* We know have the LCA of all of the uses. If our invariants hold,
+ /* We now have the LCA of all of the uses. If our invariants hold,
* this is dominated by the block that we chose when scheduling early.
* We now walk up the dominance tree and pick the lowest block that is
* as far outside loops as we can get.
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;
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) {