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, vrange_allocator::clone(), gcc_checking_assert, hash_map< KeyId, Value, Traits >::get_or_insert(), gimple_switch_default_edge(), gimple_switch_edge(), gimple_switch_index(), gimple_switch_label(), gimple_switch_num_labels(), irange::intersect(), irange::invert(), gimple_outgoing_range::m_edge_table, gimple_outgoing_range::m_range_allocator, range_cast(), wi::to_wide(), TREE_TYPE, and irange::union_().
Referenced by gimple_outgoing_range::switch_edge_range().
|
private |
References range_def_chain::chain_import_p(), compute_operand_range(), dump_file, fur_source::get_operand(), gimple_expr_code(), gimple_range_ssa_p(), range_tracer::header(), 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, tracer, and range_tracer::trailer().
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(), range_tracer::header(), 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(), range_tracer::print(), print_generic_expr(), print_gimple_stmt(), r, refine_using_relation(), gimple_range_op_handler::stmt(), TDF_SLIM, tracer, range_tracer::trailer(), 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(), range_tracer::header(), 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(), range_tracer::print(), print_generic_expr(), print_gimple_stmt(), r, refine_using_relation(), gimple_range_op_handler::stmt(), TDF_SLIM, tracer, range_tracer::trailer(), 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(), range_tracer::header(), range_def_chain::in_chain_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, range_tracer::trailer(), 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(), range_def_chain::in_chain_p(), 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(), gimple_outgoing_range::m_max_edges, NULL, r, single_succ_p(), and gimple_outgoing_range::switch_edge_range().
Referenced by edge_range_p(), evaluate_control_stmt_using_entry_checks(), 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(), range_tracer::header(), gori_map::is_export_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, range_tracer::trailer(), and TREE_TYPE.
|
virtual |
Reimplemented from gimple_outgoing_range.
References gori_map::is_export_p(), 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, range_tracer::header(), value_range::intersect(), vrange::intersect(), logical_combine(), m_bool_one, m_bool_zero, NULL_TREE, range_tracer::print(), r, range_is_either_true_or_false(), tracer, range_tracer::trailer(), value_range::union_(), and vrange::varying_p().
Referenced by compute_operand_range(), and logical_combine().
|
private |
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(), range_def_chain::in_chain_p(), relation_trio::lhs_op1(), relation_trio::lhs_op2(), m_map, 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 gimple_outgoing_range::m_max_edges.
References gimple_outgoing_range::calc_switch_ranges(), CASE_LOW, cfun, gcc_checking_assert, hash_map< KeyId, Value, Traits >::get(), vrange_storage::get_vrange(), gimple_switch_index(), gimple_switch_label(), gimple_switch_num_labels(), gimple_outgoing_range::m_edge_table, gimple_outgoing_range::m_range_allocator, n_edges_for_fn, r, TREE_TYPE, and TYPE_PRECISION.
Referenced by gimple_outgoing_range::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 |
|
private |
|
privateinherited |
|
private |
Referenced by edge_range_p(), and gori_compute().
|
privateinherited |
|
private |
Referenced by gori_compute(), and may_recompute_p().
|
private |