re PR middle-end/58564 (possible wrong code bug at -O0)

PR middle-end/58564
	* fold-const.c (tree_unary_nonnegative_warnv_p): Use
	INTEGRAL_TYPE_P (t) instead of TREE_CODE (t) == INTEGER_TYPE.

From-SVN: r203044
This commit is contained in:
Jakub Jelinek 2013-09-30 22:17:07 +02:00 committed by Jakub Jelinek
parent f66d089128
commit d2a365a843
2 changed files with 7 additions and 3 deletions

View file

@ -1,5 +1,9 @@
2013-09-30 Jakub Jelinek <jakub@redhat.com>
PR middle-end/58564
* fold-const.c (tree_unary_nonnegative_warnv_p): Use
INTEGRAL_TYPE_P (t) instead of TREE_CODE (t) == INTEGER_TYPE.
PR middle-end/58564
* fold-const.c (fold_ternary_loc): For A < 0 : <sign bit of A> : 0
optimization, punt if sign_bit_p looked through any zero extension.

View file

@ -15448,7 +15448,7 @@ tree_unary_nonnegative_warnv_p (enum tree_code code, tree type, tree op0,
if (TREE_CODE (inner_type) == REAL_TYPE)
return tree_expr_nonnegative_warnv_p (op0,
strict_overflow_p);
if (TREE_CODE (inner_type) == INTEGER_TYPE)
if (INTEGRAL_TYPE_P (inner_type))
{
if (TYPE_UNSIGNED (inner_type))
return true;
@ -15456,12 +15456,12 @@ tree_unary_nonnegative_warnv_p (enum tree_code code, tree type, tree op0,
strict_overflow_p);
}
}
else if (TREE_CODE (outer_type) == INTEGER_TYPE)
else if (INTEGRAL_TYPE_P (outer_type))
{
if (TREE_CODE (inner_type) == REAL_TYPE)
return tree_expr_nonnegative_warnv_p (op0,
strict_overflow_p);
if (TREE_CODE (inner_type) == INTEGER_TYPE)
if (INTEGRAL_TYPE_P (inner_type))
return TYPE_PRECISION (inner_type) < TYPE_PRECISION (outer_type)
&& TYPE_UNSIGNED (inner_type);
}