|
| | dt_simplify (simplify *s_, unsigned pattern_no_, dt_operand **indexes_) |
| void | gen_1 (FILE *, int, bool, operand *) |
| void | gen (FILE *f, int, bool, int) final override |
| dt_node * | append_node (dt_node *) |
| dt_node * | append_op (operand *, dt_node *parent, unsigned pos) |
| dt_node * | append_true_op (operand *, dt_node *parent, unsigned pos) |
| dt_node * | append_match_op (operand *, dt_operand *, dt_node *parent, unsigned pos) |
| dt_node * | append_simplify (simplify *, unsigned, dt_operand **) |
| void | gen_kids (FILE *, int, bool, int, bool, fn_splitter *=NULL) |
| 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 * > &, bool, fn_splitter *=NULL) |
| void | analyze (sinfo_map_t &) |
Leaf node of the decision tree, used for DT_SIMPLIFY.
| void dt_simplify::gen |
( |
FILE * | f, |
|
|
int | indent, |
|
|
bool | gimple, |
|
|
int | depth ) |
|
finaloverridevirtual |
Generate code for the '(if ...)', '(with ..)' and actual transform
step of a '(simplify ...)' or '(match ...)'. This handles everything
that is not part of the decision tree (simplify->match).
Reimplemented from dt_node.
References fprintf_indent(), gcc_unreachable, gen_1(), get_name(), i, indexes, info, is_a(), output_line_directive(), and s.
| void dt_simplify::gen_1 |
( |
FILE * | f, |
|
|
int | indent, |
|
|
bool | gimple, |
|
|
operand * | result ) |
Generate code for the '(if ...)', '(with ..)' and actual transform
step of a '(simplify ...)' or '(match ...)'. This handles everything
that is not part of the decision tree (simplify->match).
Main recursive worker.
References as_a(), dyn_cast(), emit_logging_call(), fail_label, capture_info::force_no_side_effects, fprintf_indent(), gcc_unreachable, gen_1(), c_code_id::gen_checking(), operand::gen_transform(), get_operand_type(), i, id_base::id, indexes, capture_info::info, is_a(), c_code_id::m_code_only, NULL, operand::OP_C_EXPR, operand::OP_CAPTURE, operand::OP_EXPR, output_line_directive(), possible_noop_convert(), s, simplify::SIMPLIFY, operand::type, verbose, and warning_at().
Referenced by gen(), and gen_1().
Generate matching code for the children of the decision tree node. If SP
is not null, it splits the matcher between functions.
References as_a(), DT_MATCH, DT_OPERAND, DT_SIMPLIFY, DT_TRUE, dyn_cast(), fn_splitter::emit_alternatives(), id_base::FN, gcc_assert, gcc_unreachable, gen_kids_1(), i, kids, dt_operand::op, operand::OP_PREDICATE, id_base::PREDICATE, user_id::substitutes, type, and operand::type.
Referenced by decision_tree::gen(), dt_operand::gen(), dt_operand::gen_phi_on_cond(), and write_predicate().
| 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, |
|
|
bool | in_gcond, |
|
|
fn_splitter * | sp = NULL ) |
|
inherited |
Generate matching code for the children of the decision tree node. If SP
is not null, call the function that holds a group in place of emitting its
body.
References fn_splitter::ALT_FNS, fn_splitter::ALT_GENERIC_EXPRS, fn_splitter::ALT_GENERIC_FNS, fn_splitter::ALT_GIMPLE_EXPRS, as_a(), dt_operand_group::cases, c_expr::code, collect_operand_groups(), fn_splitter::emit_dispatch(), emit_expr_group(), emit_fn_group(), emit_group_labels(), fprintf_indent(), gcc_checking_assert, gen(), i, id_base::id, id_base::nargs, NULL, dt_operand_group::operands, phi_cond_group_p(), fn_splitter::same_chunk_p(), fn_splitter::split_out_p(), and ssa_name_group_p().
Referenced by gen_kids().