Caio Marcelo de Oliveira Filho <caio.olive...@intel.com> writes: > Separate higher level logic of visiting instructions and chosing when > to store and use new copy data from the datastructure holding the copy > propagation information. This will also make easier later patches that > change the structure. > --- > .../glsl/opt_copy_propagation_elements.cpp | 269 ++++++++++-------- > 1 file changed, 143 insertions(+), 126 deletions(-) > > diff --git a/src/compiler/glsl/opt_copy_propagation_elements.cpp > b/src/compiler/glsl/opt_copy_propagation_elements.cpp > index 8975e727522..5d3664a503b 100644 > --- a/src/compiler/glsl/opt_copy_propagation_elements.cpp > +++ b/src/compiler/glsl/opt_copy_propagation_elements.cpp > @@ -89,6 +89,121 @@ public: > acp_ref rhs_node; > }; > > +class copy_propagation_state {
Since this copy_propagation_state covers just the acp and not the kills list (whcih is still part of the copy propagation state in the visitor class), could we call it "acp"? > @@ -191,26 +283,21 @@ > ir_copy_propagation_elements_visitor::visit_enter(ir_function_signature *ir) > exec_list *orig_kills = this->kills; > bool orig_killed_all = this->killed_all; > > - hash_table *orig_lhs_ht = lhs_ht; > - hash_table *orig_rhs_ht = rhs_ht; > - > this->kills = new(mem_ctx) exec_list; > this->killed_all = false; > > - create_acp(); > + copy_propagation_state *orig_state = state; > + this->state = new(mem_ctx) copy_propagation_state(mem_ctx, lin_ctx); > > visit_list_elements(this, &ir->body); > > - ralloc_free(this->kills); > - > - destroy_acp(); > + delete this->state; > + this->state = orig_state; Don't you want destroy_acp()'s body in ~copy_propagation_state()? Other than that, it looks good.
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev