]> gcc.gnu.org Git - gcc.git/commitdiff
Use get_def_for_expr in fold_single_bit_test
authorAndrew Pinski <apinski@marvell.com>
Fri, 19 May 2023 18:21:59 +0000 (18:21 +0000)
committerAndrew Pinski <apinski@marvell.com>
Sat, 20 May 2023 05:04:48 +0000 (05:04 +0000)
The code in fold_single_bit_test, checks if
the inner was a right shift and improve the bitnum
based on that. But since the inner will always be a
SSA_NAME at this point, the code is dead. Move it over
to use the helper function get_def_for_expr instead.

gcc/ChangeLog:

* expr.cc (fold_single_bit_test): Use get_def_for_expr
instead of checking the inner's code.

gcc/expr.cc

index 6221b6991c551defda7b760508043afbab03bf2d..a61772b68080c9a6de6b1823289bd19722d6efbb 100644 (file)
@@ -12920,6 +12920,7 @@ fold_single_bit_test (location_t loc, enum tree_code code,
       int ops_unsigned;
       tree signed_type, unsigned_type, intermediate_type;
       tree one;
+      gimple *inner_def;
 
       /* First, see if we can fold the single bit test into a sign-bit
         test.  */
@@ -12939,14 +12940,14 @@ fold_single_bit_test (location_t loc, enum tree_code code,
 
       /* If INNER is a right shift of a constant and it plus BITNUM does
         not overflow, adjust BITNUM and INNER.  */
-      if (TREE_CODE (inner) == RSHIFT_EXPR
-         && TREE_CODE (TREE_OPERAND (inner, 1)) == INTEGER_CST
+      if ((inner_def = get_def_for_expr (inner, RSHIFT_EXPR))
+         && TREE_CODE (gimple_assign_rhs2 (inner_def)) == INTEGER_CST
          && bitnum < TYPE_PRECISION (type)
-         && wi::ltu_p (wi::to_wide (TREE_OPERAND (inner, 1)),
+         && wi::ltu_p (wi::to_wide (gimple_assign_rhs2 (inner_def)),
                        TYPE_PRECISION (type) - bitnum))
        {
-         bitnum += tree_to_uhwi (TREE_OPERAND (inner, 1));
-         inner = TREE_OPERAND (inner, 0);
+         bitnum += tree_to_uhwi (gimple_assign_rhs2 (inner_def));
+         inner = gimple_assign_rhs1 (inner_def);
        }
 
       /* If we are going to be able to omit the AND below, we must do our
This page took 0.07523 seconds and 5 git commands to generate.