Change range_handler, was Re: Fix gimple_expr_code?

Adjust the range_handler to not use gimple_expr_code/type.

	* gimple-range.h (gimple_range_handler): Use gimple_assign and
	gimple_cond routines to get type and code.
	* range-op.cc (range_op_handler): Check for integral types.
This commit is contained in:
Andrew MacLeod 2020-11-12 19:25:59 -05:00
parent a5a115258a
commit ee24da1b98
2 changed files with 10 additions and 4 deletions

View file

@ -97,8 +97,12 @@ extern bool gimple_range_calc_op2 (irange &r, const gimple *s,
static inline range_operator *
gimple_range_handler (const gimple *s)
{
if ((gimple_code (s) == GIMPLE_ASSIGN) || (gimple_code (s) == GIMPLE_COND))
return range_op_handler (gimple_expr_code (s), gimple_expr_type (s));
if (gimple_code (s) == GIMPLE_ASSIGN)
return range_op_handler (gimple_assign_rhs_code (s),
TREE_TYPE (gimple_assign_lhs (s)));
if (gimple_code (s) == GIMPLE_COND)
return range_op_handler (gimple_cond_code (s),
TREE_TYPE (gimple_cond_lhs (s)));
return NULL;
}

View file

@ -3341,10 +3341,12 @@ pointer_table::pointer_table ()
range_operator *
range_op_handler (enum tree_code code, tree type)
{
// First check if there is apointer specialization.
// First check if there is a pointer specialization.
if (POINTER_TYPE_P (type))
return pointer_tree_table[code];
return integral_tree_table[code];
if (INTEGRAL_TYPE_P (type))
return integral_tree_table[code];
return NULL;
}
// Cast the range in R to TYPE.