On Tue, Jun 24, 2014 at 10:53 AM, Prathamesh Kulkarni <bilbotheelffri...@gmail.com> wrote: > Hi, > This patch attempts to generate temporaries only when required. > > I have changed generation of operand names. All children of an expr-node > are assigned at expr-node itself. > Names are generated as follows at expr-node: > o<level><child-pos> = rhs; > where level is level of the expr-node in decision tree. > This is done by dt_operand::gen_opname. > > Names are referred to as follows at child-node: > o<parent-level><pos>. > This is done by dt_operand::get_name. > > To do this, I changed the type of indexes array in dt_simplify to > array of dt_operand *, so that each element points to the > decision-tree node, instead of storing it's level.
Thanks, I have applied the patch but changed + dt_node *temp = new dt_operand (dt_node::DT_OPERAND, c->what, 0); + elm = decision_tree::find_node (p->kids, temp); + free (temp); to dt_operand temp (dt_node::DT_OPERAND, c->what, 0); elm = decision_tree::find_node (p->kids, &temp); Richard. > * genmatch.c (operand::gen_gimple_transform): Remove 2nd argument. > (predicate::gen_gimple_transform): Likewise. > (expr::gen_gimple_transform): Likewise. > (c_expr::gen_gimple_transform): Likewise. > (capture::gen_gimple_transform): Likewise. > (dt_simplify::indexes): Change type to array of dt_operand * > (dt_simplify::dt_simplify): change type of 3rd argument to dt_operand ** > (dt_simplify::gen_gimple): Remove 2nd argument in call to > > .gen_gimple_transform() > (dt_operand::get_name): New member function. > (dt_operand::gen_opname): New member function. > (dt_operand::match_dop): New member. > (dt_operand::temps): Remove. > (dt_operand::temp_count): Likewise. > (dt_operand::m_level): Likewise. > (dt_operand::dt_operand): Change type of 2nd argument to dt_operand * > (dt_operand::gen_gimple): Call get_name for getting operand name. > (dt_operand::gen_gimple_expr_fn): Replace call to sprintf, > by get_name (opname). > (dt_operand::gen_gimple_expr_expr): Likwise. > (dt_operand::gen_generic_expr_expr): Likewise. > (dt_operand::gen_generic_expr_fn): Likewise > (decision_tree::insert_operand): Change type of 3rd argument to > dt_operand**. > (dt_node::append_simplify): Likewise. > > Thanks and Regards, > Prathamesh