From d2a365a843021a55899050ed48e914998a7d2205 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 30 Sep 2013 22:17:07 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/fold-const.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29c8d6b..d125ced 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,10 @@ 2013-09-30 Jakub Jelinek 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 : : 0 optimization, punt if sign_bit_p looked through any zero extension. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index f68fd8b..fc29291 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -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); } -- 2.7.4