_mesa_hash_table_insert(var_to_member_map, var, members);
}
-static bool
-split_variables_in_list(nir_shader *shader, nir_variable_mode mode,
- struct hash_table *var_to_member_map, void *dead_ctx)
-{
- bool progress = false;
-
- nir_foreach_variable_with_modes_safe(var, shader, mode) {
- if (var->num_members == 0)
- continue;
-
- split_variable(var, shader, var_to_member_map, dead_ctx);
- exec_node_remove(&var->node);
- progress = true;
- }
-
- return progress;
-}
-
static nir_deref_instr *
build_member_deref(nir_builder *b, nir_deref_instr *deref, nir_variable *member)
{
struct hash_table *var_to_member_map =
_mesa_pointer_hash_table_create(dead_ctx);
- progress |= split_variables_in_list(shader, nir_var_shader_in,
- var_to_member_map, dead_ctx);
- progress |= split_variables_in_list(shader, nir_var_shader_out,
- var_to_member_map, dead_ctx);
- progress |= split_variables_in_list(shader, nir_var_system_value,
- var_to_member_map, dead_ctx);
+ nir_foreach_variable_with_modes_safe(var, shader, nir_var_shader_in |
+ nir_var_shader_out |
+ nir_var_system_value) {
+ if (var->num_members == 0)
+ continue;
+
+ split_variable(var, shader, var_to_member_map, dead_ctx);
+ exec_node_remove(&var->node);
+ progress = true;
+ }
+
if (!progress) {
ralloc_free(dead_ctx);
return false;