GCC Middle and Back End API Reference
dt_operand Class Reference
Inheritance diagram for dt_operand:
Collaboration diagram for dt_operand:

Public Types

enum  dt_type {
  DT_NODE , DT_OPERAND , DT_TRUE , DT_MATCH ,
  DT_SIMPLIFY
}
 

Public Member Functions

 dt_operand (enum dt_type type, operand *op_, dt_operand *match_dop_, dt_operand *parent_, unsigned pos_)
 
void gen (FILE *, int, bool, int) final override
 
unsigned gen_predicate (FILE *, int, const char *, bool)
 
unsigned gen_match_op (FILE *, int, const char *, bool)
 
unsigned gen_gimple_expr (FILE *, int, int)
 
unsigned gen_generic_expr (FILE *, int, const char *)
 
char * get_name (char *)
 
void gen_opname (char *, unsigned)
 
void gen_phi_on_cond (FILE *, int, int)
 
dt_nodeappend_node (dt_node *)
 
dt_nodeappend_op (operand *, dt_node *parent, unsigned pos)
 
dt_nodeappend_true_op (operand *, dt_node *parent, unsigned pos)
 
dt_nodeappend_match_op (operand *, dt_operand *, dt_node *parent, unsigned pos)
 
dt_nodeappend_simplify (simplify *, unsigned, dt_operand **)
 
void gen_kids (FILE *, int, bool, int)
 
void gen_kids_1 (FILE *, int, bool, int, const vec< dt_operand * > &, const vec< dt_operand * > &, const vec< dt_operand * > &, const vec< dt_operand * > &, const vec< dt_operand * > &, const vec< dt_node * > &)
 
void analyze (sinfo_map_t &)
 

Data Fields

operandop
 
dt_operandmatch_dop
 
unsigned pos
 
bool value_match
 
unsigned for_id
 
enum dt_type type
 
unsigned level
 
dt_nodeparent
 
vec< dt_node * > kids
 
unsigned num_leafs
 
unsigned total_size
 
unsigned max_level
 

Detailed Description

Generic decision tree node used for DT_OPERAND, DT_MATCH and DT_TRUE.

Member Enumeration Documentation

◆ dt_type

enum dt_node::dt_type
inherited
Enumerator
DT_NODE 
DT_OPERAND 
DT_TRUE 
DT_MATCH 
DT_SIMPLIFY 

Constructor & Destructor Documentation

◆ dt_operand()

dt_operand::dt_operand ( enum dt_type type,
operand * op_,
dt_operand * match_dop_,
dt_operand * parent_,
unsigned pos_ )
inline

Member Function Documentation

◆ analyze()

void dt_node::analyze ( sinfo_map_t & map)
inherited
Analyze the node and its children.

References as_a(), DT_SIMPLIFY, i, dt_simplify::info, kids, level, map, MAX, max_level, NULL, num_leafs, si, total_size, and type.

◆ append_match_op()

dt_node * dt_node::append_match_op ( operand * op,
dt_operand * match_dop,
dt_node * parent,
unsigned pos )
inherited
Append a DT_MATCH decision tree node.

References append_node(), as_a(), DT_MATCH, dt_node(), and parent.

Referenced by decision_tree::insert_operand().

◆ append_node()

dt_node * dt_node::append_node ( dt_node * n)
inherited
Append N to the decision tree if it there is not already an existing identical child.

References dt_node(), decision_tree::find_node(), kids, and level.

Referenced by append_match_op(), append_op(), append_simplify(), and append_true_op().

◆ append_op()

dt_node * dt_node::append_op ( operand * op,
dt_node * parent,
unsigned pos )
inherited
Append OP to the decision tree.

References append_node(), dt_node(), DT_OPERAND, parent, and safe_as_a().

Referenced by decision_tree::insert_operand().

◆ append_simplify()

dt_node * dt_node::append_simplify ( simplify * s,
unsigned pattern_no,
dt_operand ** indexes )
inherited

◆ append_true_op()

dt_node * dt_node::append_true_op ( operand * op,
dt_node * parent,
unsigned pos )
inherited
Append a DT_TRUE decision tree node.

References append_node(), dt_node(), DT_TRUE, parent, and safe_as_a().

Referenced by decision_tree::insert_operand().

◆ gen()

void dt_operand::gen ( FILE * f,
int indent,
bool gimple,
int depth )
finaloverridevirtual

◆ gen_generic_expr()

unsigned dt_operand::gen_generic_expr ( FILE * f,
int indent,
const char * opname )
Generate GENERIC matching code for the decision tree operand.

References id_base::CODE, dyn_cast(), fprintf_indent(), gen_opname(), i, op, expr::operation, and expr::ops.

Referenced by gen().

◆ gen_gimple_expr()

unsigned dt_operand::gen_gimple_expr ( FILE * f,
int indent,
int depth )
Generate GIMPLE matching code for the decision tree operand.

References id_base::CODE, commutative_op(), dyn_cast(), fprintf_indent(), gen_opname(), get_name(), i, expr::is_generic, op, expr::operation, and expr::ops.

Referenced by gen().

◆ gen_kids()

void dt_node::gen_kids ( FILE * f,
int indent,
bool gimple,
int depth )
inherited

◆ gen_kids_1()

void dt_node::gen_kids_1 ( FILE * f,
int indent,
bool gimple,
int depth,
const vec< dt_operand * > & gimple_exprs,
const vec< dt_operand * > & generic_exprs,
const vec< dt_operand * > & fns,
const vec< dt_operand * > & generic_fns,
const vec< dt_operand * > & preds,
const vec< dt_node * > & others )
inherited
Generate matching code for the children of the decision tree node.

References as_a(), dyn_cast(), id_base::FN, fprintf_indent(), gcc_assert, gen(), i, id_base::id, id_base::kind, expr::match_phi, id_base::nargs, NULL, expr::operation, and expr::ops.

Referenced by gen_kids().

◆ gen_match_op()

unsigned dt_operand::gen_match_op ( FILE * f,
int indent,
const char * opname,
bool  )
Generate matching code for the decision tree operand which is a capture-match.

References fprintf_indent(), match_dop, and value_match.

Referenced by gen().

◆ gen_opname()

void dt_operand::gen_opname ( char * name,
unsigned pos )
Fill NAME with the operand name at position POS.

References dt_node::level, dt_node::parent, and pos.

Referenced by gen_generic_expr(), gen_gimple_expr(), and gen_phi_on_cond().

◆ gen_phi_on_cond()

void dt_operand::gen_phi_on_cond ( FILE * f,
int indent,
int depth )
Generate matching code for the phi when meet COND_EXPR.

References fprintf_indent(), dt_node::gen_kids(), and gen_opname().

◆ gen_predicate()

unsigned dt_operand::gen_predicate ( FILE * f,
int indent,
const char * opname,
bool gimple )
Generate matching code for the decision tree operand which is a predicate.

References as_a(), fprintf_indent(), id_base::id, predicate_id::matchers, op, and predicate::p.

Referenced by gen().

◆ get_name()

char * dt_operand::get_name ( char * name)
Return the name of the operand representing the decision tree node. Use NAME as space to generate it.

References as_a(), dt_node::DT_MATCH, dt_node::parent, and pos.

Field Documentation

◆ for_id

unsigned dt_operand::for_id

◆ kids

◆ level

unsigned dt_node::level
inherited

◆ match_dop

dt_operand* dt_operand::match_dop

Referenced by dt_operand(), and gen_match_op().

◆ max_level

unsigned dt_node::max_level
inherited

Referenced by analyze().

◆ num_leafs

unsigned dt_node::num_leafs
inherited

Referenced by analyze().

◆ op

◆ parent

◆ pos

unsigned dt_operand::pos

Referenced by dt_operand(), gen_opname(), and get_name().

◆ total_size

unsigned dt_node::total_size
inherited

Referenced by analyze().

◆ type

◆ value_match

bool dt_operand::value_match

The documentation for this class was generated from the following file: