nir/spirv: Array lengths are constants not literals
[mesa.git] / src / glsl / opt_structure_splitting.cpp
index 414f0000db58050b64be651ca870d50c0da31c91..abf4310feb375c6d14fe8a2c9b4d772d70b598e7 100644 (file)
@@ -103,12 +103,12 @@ ir_structure_reference_visitor::get_variable_entry(ir_variable *var)
 {
    assert(var);
 
-   if (!var->type->is_record() || var->data.mode == ir_var_uniform
-       || var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out)
+   if (!var->type->is_record() ||
+       var->data.mode == ir_var_uniform || var->data.mode == ir_var_shader_storage ||
+       var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out)
       return NULL;
 
-   foreach_iter(exec_list_iterator, iter, this->variable_list) {
-      variable_entry *entry = (variable_entry *)iter.get();
+   foreach_in_list(variable_entry, entry, &this->variable_list) {
       if (entry->var == var)
         return entry;
    }
@@ -209,8 +209,7 @@ ir_structure_splitting_visitor::get_splitting_entry(ir_variable *var)
    if (!var->type->is_record())
       return NULL;
 
-   foreach_iter(exec_list_iterator, iter, *this->variable_list) {
-      variable_entry *entry = (variable_entry *)iter.get();
+   foreach_in_list(variable_entry, entry, this->variable_list) {
       if (entry->var == var) {
         return entry;
       }
@@ -315,9 +314,7 @@ do_structure_splitting(exec_list *instructions)
    visit_list_elements(&refs, instructions);
 
    /* Trim out variables we can't split. */
-   foreach_iter(exec_list_iterator, iter, refs.variable_list) {
-      variable_entry *entry = (variable_entry *)iter.get();
-
+   foreach_in_list_safe(variable_entry, entry, &refs.variable_list) {
       if (debug) {
         printf("structure %s@%p: decl %d, whole_access %d\n",
                entry->var->name, (void *) entry->var, entry->declaration,
@@ -337,8 +334,7 @@ do_structure_splitting(exec_list *instructions)
    /* Replace the decls of the structures to be split with their split
     * components.
     */
-   foreach_iter(exec_list_iterator, iter, refs.variable_list) {
-      variable_entry *entry = (variable_entry *)iter.get();
+   foreach_in_list_safe(variable_entry, entry, &refs.variable_list) {
       const struct glsl_type *type = entry->var->type;
 
       entry->mem_ctx = ralloc_parent(entry->var);