diff options
Diffstat (limited to 'src/compiler/glsl/opt_copy_propagation.cpp')
-rw-r--r-- | src/compiler/glsl/opt_copy_propagation.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/compiler/glsl/opt_copy_propagation.cpp b/src/compiler/glsl/opt_copy_propagation.cpp index e904e6ede4a..6220aa86da9 100644 --- a/src/compiler/glsl/opt_copy_propagation.cpp +++ b/src/compiler/glsl/opt_copy_propagation.cpp @@ -213,17 +213,12 @@ ir_copy_propagation_visitor::handle_if_block(exec_list *instructions) set *orig_kills = this->kills; bool orig_killed_all = this->killed_all; - acp = _mesa_hash_table_create(NULL, _mesa_hash_pointer, - _mesa_key_pointer_equal); kills = _mesa_set_create(NULL, _mesa_hash_pointer, _mesa_key_pointer_equal); this->killed_all = false; /* Populate the initial acp with a copy of the original */ - struct hash_entry *entry; - hash_table_foreach(orig_acp, entry) { - _mesa_hash_table_insert(acp, entry->key, entry->data); - } + acp = _mesa_hash_table_clone(orig_acp, NULL); visit_list_elements(this, instructions); @@ -264,17 +259,15 @@ ir_copy_propagation_visitor::handle_loop(ir_loop *ir, bool keep_acp) set *orig_kills = this->kills; bool orig_killed_all = this->killed_all; - acp = _mesa_hash_table_create(NULL, _mesa_hash_pointer, - _mesa_key_pointer_equal); kills = _mesa_set_create(NULL, _mesa_hash_pointer, _mesa_key_pointer_equal); this->killed_all = false; if (keep_acp) { - struct hash_entry *entry; - hash_table_foreach(orig_acp, entry) { - _mesa_hash_table_insert(acp, entry->key, entry->data); - } + acp = _mesa_hash_table_clone(orig_acp, NULL); + } else { + acp = _mesa_hash_table_create(NULL, _mesa_hash_pointer, + _mesa_key_pointer_equal); } visit_list_elements(this, &ir->body_instructions); |