GCC Middle and Back End API Reference
|
#include <gimple-range-gori.h>
Public Member Functions | |
gori_compute (gori_map &map, int not_executable_flag=0, int max_sw_edges=0) | |
virtual | ~gori_compute () |
bool | edge_range_p (vrange &r, edge e, tree name, range_query &q) |
bool | has_edge_range_p (tree name, basic_block bb=NULL) |
bool | has_edge_range_p (tree name, edge e) |
void | dump (FILE *f) |
bool | compute_operand_range (vrange &r, gimple *stmt, const vrange &lhs, tree name, class fur_source &src, value_relation *rel=NULL) |
gimple * | edge_range_p (irange &r, edge e) |
void | set_switch_limit (int max_sw_edges=INT_MAX) |
Private Attributes | |
gori_map & | m_map |
int_range< 2 > | m_bool_zero |
int_range< 2 > | m_bool_one |
range_tracer | tracer |
int | m_not_executable_flag |
int | m_recompute_depth |
int | m_max_edges |
hash_map< edge, vrange_storage * > * | m_edge_table |
class vrange_allocator * | m_range_allocator |
gori_compute::gori_compute | ( | gori_map & | map, |
int | not_executable_flag = 0, | ||
int | max_sw_edges = 0 ) |
|
virtual |
|
privateinherited |
References CASE_HIGH, CASE_LOW, cfun, gcc_checking_assert, gimple_switch_default_edge(), gimple_switch_edge(), gimple_switch_index(), gimple_switch_label(), gimple_switch_num_labels(), irange::intersect(), irange::invert(), m_edge_table, m_range_allocator, range_cast(), irange::set_undefined(), wi::to_wide(), TREE_TYPE, irange::union_(), and vrange::varying_p().
Referenced by switch_edge_range().
|
private |
References compute_operand_range(), dump_file, fur_source::get_operand(), gimple_expr_code(), gimple_range_ssa_p(), gimple_range_op_handler::lhs(), m_bool_one, m_bool_zero, m_map, NULL, NULL_TREE, print_generic_expr(), SSA_NAME_DEF_STMT, gimple_range_op_handler::stmt(), TDF_SLIM, and tracer.
Referenced by compute_operand_range().
|
private |
|
private |
References gimple_range_op_handler::calc_op1(), value_relation::create_trio(), dump_file, fputc(), fur_source::get_operand(), gimple_get_lhs(), gimple_range_ssa_p(), relation_trio::lhs_op1(), relation_trio::lhs_op2(), relation_trio::op1_op2(), op1_range(), op2_range(), gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), print_generic_expr(), print_gimple_stmt(), r, refine_using_relation(), gimple_range_op_handler::stmt(), TDF_SLIM, tracer, TREE_CODE, TREE_TYPE, VREL_EQ, and VREL_VARYING.
Referenced by compute_operand1_and_operand2_range(), and compute_operand_range().
|
private |
References gimple_range_op_handler::calc_op2(), value_relation::create_trio(), dump_file, fputc(), fur_source::get_operand(), gimple_get_lhs(), gimple_range_ssa_p(), relation_trio::lhs_op1(), relation_trio::lhs_op2(), relation_trio::op1_op2(), op1_range(), op2_range(), gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), print_generic_expr(), print_gimple_stmt(), r, refine_using_relation(), gimple_range_op_handler::stmt(), TDF_SLIM, tracer, TREE_CODE, TREE_TYPE, VREL_EQ, and VREL_VARYING.
Referenced by compute_operand1_and_operand2_range(), and compute_operand_range().
|
virtual |
Reimplemented from gimple_outgoing_range.
References as_a(), compute_logical_operands(), compute_operand1_and_operand2_range(), compute_operand1_range(), compute_operand2_range(), compute_operand_range(), compute_operand_range_switch(), dump_file, gcc_checking_assert, gimple_expr_code(), gimple_range_ssa_p(), is_a(), is_gimple_logical_p(), gimple_range_op_handler::lhs(), logical_combine(), m_map, value_relation::op1(), range_op_handler::op1_op2_relation(), value_relation::op2(), gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), print_generic_expr(), print_gimple_stmt(), r, value_relation::set_relation(), value_range::set_type(), value_range::set_varying(), SSA_NAME_DEF_STMT, TDF_SLIM, tracer, TREE_TYPE, and VREL_VARYING.
Referenced by compute_logical_operands(), compute_operand1_and_operand2_range(), compute_operand_range(), compute_operand_range_switch(), and edge_range_p().
|
private |
References compute_operand_range(), gimple_range_ssa_p(), gimple_switch_index(), m_map, r, and SSA_NAME_DEF_STMT.
Referenced by compute_operand_range().
|
virtual |
Reimplemented from gimple_outgoing_range.
References m_map.
References as_a(), EDGE_COUNT, gcc_checking_assert, gcond_edge_range(), gimple_outgoing_range_stmt_p(), is_a(), m_max_edges, NULL, r, single_succ_p(), and switch_edge_range().
Referenced by gori_compute::edge_range_p(), and gori_on_edge().
|
virtual |
Reimplemented from gimple_outgoing_range.
References compute_operand_range(), dump_file, dump_flags, gimple_outgoing_range::edge_range_p(), fold_range(), gcc_checking_assert, gimple_range_ssa_p(), m_map, m_not_executable_flag, may_recompute_p(), print_generic_expr(), print_gimple_stmt(), r, range_cast(), range_compatible_p(), SSA_NAME_DEF_STMT, TDF_DETAILS, TDF_SLIM, tracer, and TREE_TYPE.
|
virtual |
Reimplemented from gimple_outgoing_range.
References m_map, and may_recompute_p().
Referenced by has_edge_range_p().
Reimplemented from gimple_outgoing_range.
References gcc_checking_assert, and has_edge_range_p().
|
private |
References vrange::dump(), dump_file, fputc(), gcc_unreachable, value_range::intersect(), logical_combine(), m_bool_one, m_bool_zero, NULL_TREE, r, range_is_either_true_or_false(), tracer, and vrange::varying_p().
Referenced by compute_operand_range(), and logical_combine().
|
private |
References gimple_has_side_effects(), is_a(), m_map, m_recompute_depth, may_recompute_p(), and SSA_NAME_DEF_STMT.
References gcc_checking_assert, and may_recompute_p().
Referenced by edge_range_p(), has_edge_range_p(), may_recompute_p(), and may_recompute_p().
|
private |
References range_op_handler::fold_range(), gcc_checking_assert, fur_source::get_operand(), relation_trio::lhs_op1(), relation_trio::lhs_op2(), m_map, op1_range(), range_op_handler::op1_range(), op2_range(), range_op_handler::op2_range(), gimple_range_op_handler::operand1(), gimple_range_op_handler::operand2(), relation_swap(), SSA_NAME_DEF_STMT, TREE_CODE, TREE_TYPE, VREL_EQ, VREL_UNDEFINED, and VREL_VARYING.
Referenced by compute_operand1_range(), and compute_operand2_range().
|
inherited |
References m_max_edges.
References calc_switch_ranges(), CASE_LOW, cfun, gcc_checking_assert, gimple_switch_index(), gimple_switch_label(), gimple_switch_num_labels(), m_edge_table, m_range_allocator, n_edges_for_fn, r, TREE_TYPE, and TYPE_PRECISION.
Referenced by edge_range_p().
|
private |
Referenced by compute_logical_operands(), gori_compute(), and logical_combine().
|
private |
Referenced by compute_logical_operands(), gori_compute(), and logical_combine().
|
privateinherited |
Referenced by calc_switch_ranges(), gimple_outgoing_range(), switch_edge_range(), and ~gimple_outgoing_range().
|
private |
|
privateinherited |
Referenced by edge_range_p(), gimple_outgoing_range(), and set_switch_limit().
|
private |
Referenced by edge_range_p(), and gori_compute().
|
privateinherited |
Referenced by calc_switch_ranges(), gimple_outgoing_range(), switch_edge_range(), and ~gimple_outgoing_range().
|
private |
Referenced by gori_compute(), and may_recompute_p().
|
private |