https://gcc.gnu.org/g:15b965d6bbb33e1a29ebae58ec167cc20525d43f

commit r16-6756-g15b965d6bbb33e1a29ebae58ec167cc20525d43f
Author: Andrew Pinski <[email protected]>
Date:   Tue Jan 13 15:21:56 2026 -0800

    match: Remove redundant type checks from `(T1)(a bit_op (T2)b)` pattern.
    
    As mentioned in 
https://gcc.gnu.org/pipermail/gcc-patches/2026-January/705657.html,
    there were some redundant checks in this pattern. In the first if,
    the check for pointer and OFFSET_TYPE is redundant as there is a check for
    INTEGRAL_TYPE_P before hand. For the second one, the check for 
INTEGRAL_TYPE_P
    on the inner most type is not needed as there is a types_match right 
afterwards
    
    Pushed as obvious after bootstra/test on x86_64-linux-gnu.
    
    gcc/ChangeLog:
    
            * match.pd (`(T1)(a bit_op (T2)b)`): Remove redundant
            type checks.
    
    Signed-off-by: Andrew Pinski <[email protected]>

Diff:
---
 gcc/match.pd | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/gcc/match.pd b/gcc/match.pd
index 400330aae541..91f92b56b03a 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -2320,15 +2320,12 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
        && INTEGRAL_TYPE_P (TREE_TYPE (@0))
        && TREE_CODE (@1) != INTEGER_CST
        && tree_nop_conversion_p (type, TREE_TYPE (@2))
-       && !POINTER_TYPE_P (TREE_TYPE (@0))
-       && TREE_CODE (TREE_TYPE (@0)) != OFFSET_TYPE
        && TYPE_PRECISION (TREE_TYPE (@0)) > TYPE_PRECISION (type))
    (bitop:type (convert @0) (convert @1))
    /* Similar as above, but the outer and inner most types match
        and it was widening cast; replacing 2 casts with only one.  */
    (if (GIMPLE
         && INTEGRAL_TYPE_P (type)
-        && INTEGRAL_TYPE_P (TREE_TYPE (@0))
         && types_match (type, TREE_TYPE (@0))
         && TYPE_PRECISION (TREE_TYPE (@2)) > TYPE_PRECISION (type))
     (bitop:type @0 (convert @1))))))

Reply via email to