GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | operand_entry |
struct | range_entry |
Functions | |
void | dump_range_entry (FILE *file, struct range_entry *r) |
void | debug_range_entry (struct range_entry *r) |
void | init_range_entry (struct range_entry *r, tree exp, gimple *stmt) |
bool | no_side_effect_bb (basic_block bb) |
void debug_range_entry | ( | struct range_entry * | r | ) |
Dump the range entry R to STDERR.
References dump_range_entry(), fputc(), and r.
void dump_range_entry | ( | FILE * | file, |
struct range_entry * | r ) |
void init_range_entry | ( | struct range_entry * | r, |
tree | exp, | ||
gimple * | stmt ) |
This is similar to make_range in fold-const.cc, but on top of GIMPLE instead of trees. If EXP is non-NULL, it should be an SSA_NAME and STMT argument is ignored, otherwise STMT argument should be a GIMPLE_COND.
References boolean_false_node, boolean_type_node, build_int_cst(), CASE_CONVERT, exp(), gcc_assert, gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs_code(), gimple_cond_code(), gimple_cond_lhs(), gimple_cond_rhs(), gimple_location(), integer_onep(), integer_zerop(), INTEGRAL_TYPE_P, is_gimple_assign(), make_range_step(), NULL_TREE, r, SSA_NAME_DEF_STMT, ssa_name_maybe_undef_p(), SSA_NAME_OCCURS_IN_ABNORMAL_PHI, TREE_CODE, TREE_TYPE, TYPE_PRECISION, and TYPE_UNSIGNED.
Referenced by find_conditions(), and optimize_range_tests().
bool no_side_effect_bb | ( | basic_block | bb | ) |
Return true if BB doesn't have side-effects that would disallow range test optimization, all SSA_NAMEs set in the bb are consumed in the bb and there are no PHIs.
References FOR_EACH_IMM_USE_FAST, gimple_assign_lhs(), gimple_assign_rhs_could_trap_p(), gimple_bb(), gimple_has_side_effects(), gimple_seq_empty_p(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), is_gimple_assign(), is_gimple_debug(), last, last_nondebug_stmt(), phi_nodes(), TREE_CODE, and USE_STMT.
Referenced by find_conditions(), and maybe_optimize_range_tests().