From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2049) id B2E2B3856272; Thu, 5 May 2022 12:08:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B2E2B3856272 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Matthew Malcomson To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/ARM/heads/morello)] Add gimple_addr_expr_p X-Act-Checkin: gcc X-Git-Author: Richard Sandiford X-Git-Refname: refs/vendors/ARM/heads/morello X-Git-Oldrev: cebe45279cc2ad13cdcc324b868971c7a3e79495 X-Git-Newrev: 75b73ced14ba50da54bf471fce62dc42df874887 Message-Id: <20220505120807.B2E2B3856272@sourceware.org> Date: Thu, 5 May 2022 12:08:07 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 May 2022 12:08:07 -0000 https://gcc.gnu.org/g:75b73ced14ba50da54bf471fce62dc42df874887 commit 75b73ced14ba50da54bf471fce62dc42df874887 Author: Richard Sandiford Date: Mon Apr 11 17:30:46 2022 +0100 Add gimple_addr_expr_p Mechanically replace: gimple_assign_rhs_code (stmt) == ADDR_EXPR with: gimple_addr_expr_p (stmt) and remove any associated: is_gimple_assign (stmt) or: gimple_assign_single_p (stmt) (where one exists). Diff: --- gcc/cfgexpand.c | 2 +- gcc/gimple-laddress.c | 3 +-- gcc/gimple-ssa-warn-restrict.c | 4 +--- gcc/gimple.h | 17 +++++++++++++++++ gcc/tree-object-size.c | 4 ++-- gcc/tree-ssa-alias.c | 3 +-- gcc/tree-ssa-ccp.c | 6 +++--- gcc/tree-ssa-forwprop.c | 4 +--- gcc/tree-ssa-sccvn.c | 6 ++---- gcc/tree-ssa-strlen.c | 3 +-- gcc/tree-vect-data-refs.c | 3 +-- gcc/vr-values.c | 3 +-- 12 files changed, 32 insertions(+), 26 deletions(-) diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index b3a65140fe8..7fa4834a6d1 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -2653,7 +2653,7 @@ expand_call_stmt (gcall *stmt) if (builtin_p && TREE_CODE (arg) == SSA_NAME && (def = get_gimple_for_ssa_name (arg)) - && gimple_assign_rhs_code (def) == ADDR_EXPR) + && gimple_addr_expr_p (def)) arg = gimple_assign_rhs1 (def); CALL_EXPR_ARG (exp, i) = arg; } diff --git a/gcc/gimple-laddress.c b/gcc/gimple-laddress.c index 51d636e1614..d1d782bec5c 100644 --- a/gcc/gimple-laddress.c +++ b/gcc/gimple-laddress.c @@ -82,8 +82,7 @@ pass_laddress::execute (function *fun) for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);) { gimple *stmt = gsi_stmt (gsi); - if (!is_gimple_assign (stmt) - || gimple_assign_rhs_code (stmt) != ADDR_EXPR + if (!gimple_addr_expr_p (stmt) || is_gimple_invariant_address (gimple_assign_rhs1 (stmt))) { gsi_next (&gsi); diff --git a/gcc/gimple-ssa-warn-restrict.c b/gcc/gimple-ssa-warn-restrict.c index 370185845d3..95da221108c 100644 --- a/gcc/gimple-ssa-warn-restrict.c +++ b/gcc/gimple-ssa-warn-restrict.c @@ -403,9 +403,7 @@ builtin_memref::set_base_and_offset (tree expr) { /* Try to tease the offset out of the pointer. */ gimple *stmt = SSA_NAME_DEF_STMT (expr); - if (!base - && gimple_assign_single_p (stmt) - && gimple_assign_rhs_code (stmt) == ADDR_EXPR) + if (!base && gimple_addr_expr_p (stmt)) expr = gimple_assign_rhs1 (stmt); else if (is_gimple_assign (stmt)) { diff --git a/gcc/gimple.h b/gcc/gimple.h index c40a22e6d05..1d605982bdd 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -2803,6 +2803,23 @@ gimple_assign_rhs_code (const gimple *gs) return gimple_assign_rhs_code (ass); } +/* Return true if ASSIGN takes the address of an object. If so, the object + is given by gimple_assign_rhs1 (ASSIGN). */ + +static inline bool +gimple_addr_expr_p (const gassign *assign) +{ + return ADDR_EXPR_CODE_P (gimple_assign_rhs_code (assign)); +} + +/* Likewise for general gimple statements. */ + +static inline bool +gimple_addr_expr_p (const gimple *gs) +{ + return (is_gimple_assign (gs) + && gimple_addr_expr_p (as_a (gs))); +} /* Set CODE to be the code for the expression computed on the RHS of assignment S. */ diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c index a971bbc17d8..76cc7f1df46 100644 --- a/gcc/tree-object-size.c +++ b/gcc/tree-object-size.c @@ -883,7 +883,7 @@ plus_stmt_object_size (struct object_size_info *osi, tree var, gimple *stmt) op0 = gimple_assign_rhs1 (stmt); op1 = gimple_assign_rhs2 (stmt); } - else if (gimple_assign_rhs_code (stmt) == ADDR_EXPR) + else if (gimple_addr_expr_p (stmt)) { tree rhs = TREE_OPERAND (gimple_assign_rhs1 (stmt), 0); gcc_assert (TREE_CODE (rhs) == MEM_REF); @@ -1043,7 +1043,7 @@ collect_object_sizes_for (struct object_size_info *osi, tree var) { tree rhs = gimple_assign_rhs1 (stmt); if (gimple_assign_rhs_code (stmt) == POINTER_PLUS_EXPR - || (gimple_assign_rhs_code (stmt) == ADDR_EXPR + || (gimple_addr_expr_p (stmt) && TREE_CODE (TREE_OPERAND (rhs, 0)) == MEM_REF)) reexamine = plus_stmt_object_size (osi, var, stmt); else if (gimple_assign_rhs_code (stmt) == COND_EXPR) diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index dc5bae1f5a1..71d207b2a40 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -716,8 +716,7 @@ ao_ref_init_from_ptr_and_size (ao_ref *ref, tree ptr, tree size) if (TREE_CODE (ptr) == SSA_NAME) { gimple *stmt = SSA_NAME_DEF_STMT (ptr); - if (gimple_assign_single_p (stmt) - && gimple_assign_rhs_code (stmt) == ADDR_EXPR) + if (gimple_addr_expr_p (stmt)) ptr = gimple_assign_rhs1 (stmt); else if (is_gimple_assign (stmt) && gimple_assign_rhs_code (stmt) == POINTER_PLUS_EXPR diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index bbf01b01b3a..e742802ecbb 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -1911,9 +1911,9 @@ evaluate_stmt (gimple *stmt) /* Resort to simplification for bitwise tracking. */ if (flag_tree_bit_ccp - && (likelyvalue == CONSTANT || is_gimple_call (stmt) - || (gimple_assign_single_p (stmt) - && gimple_assign_rhs_code (stmt) == ADDR_EXPR)) + && (likelyvalue == CONSTANT + || is_gimple_call (stmt) + || gimple_addr_expr_p (stmt)) && !is_constant) { enum gimple_code code = gimple_code (stmt); diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index e92bb397f3c..974cf39a621 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -3092,9 +3092,7 @@ pass_forwprop::execute (function *fun) substituted_p = true; } } - if (substituted_p - && is_gimple_assign (stmt) - && gimple_assign_rhs_code (stmt) == ADDR_EXPR) + if (substituted_p && gimple_addr_expr_p (stmt)) recompute_tree_invariant_for_addr_expr (gimple_assign_rhs1 (stmt)); bool changed; diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 911de2c151b..dca2bc12153 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -2642,8 +2642,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_, || TREE_OPERAND (base, 0) != ref2)) { gimple *def_stmt = SSA_NAME_DEF_STMT (ref2); - if (gimple_assign_single_p (def_stmt) - && gimple_assign_rhs_code (def_stmt) == ADDR_EXPR) + if (gimple_addr_expr_p (def_stmt)) ref2 = gimple_assign_rhs1 (def_stmt); } } @@ -3270,8 +3269,7 @@ vn_reference_lookup_3 (ao_ref *ref, tree vuse, void *data_, if (TREE_CODE (lhs) == SSA_NAME) { gimple *def_stmt = SSA_NAME_DEF_STMT (lhs); - if (gimple_assign_single_p (def_stmt) - && gimple_assign_rhs_code (def_stmt) == ADDR_EXPR) + if (gimple_addr_expr_p (def_stmt)) lhs = gimple_assign_rhs1 (def_stmt); } } diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index e1e92c98a2b..6619ccfc072 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -1841,8 +1841,7 @@ maybe_set_strlen_range (tree lhs, tree src, tree bound) if (TREE_CODE (src) == SSA_NAME) { gimple *def = SSA_NAME_DEF_STMT (src); - if (is_gimple_assign (def) - && gimple_assign_rhs_code (def) == ADDR_EXPR) + if (gimple_addr_expr_p (def)) src = gimple_assign_rhs1 (def); } diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 9a42f5ace1a..ef35a62f261 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -3772,8 +3772,7 @@ vect_check_gather_scatter (stmt_vec_info stmt_info, loop_vec_info loop_vinfo, && !expr_invariant_in_loop_p (loop, TREE_OPERAND (base, 0))) { gimple *def_stmt = SSA_NAME_DEF_STMT (TREE_OPERAND (base, 0)); - if (is_gimple_assign (def_stmt) - && gimple_assign_rhs_code (def_stmt) == ADDR_EXPR) + if (gimple_addr_expr_p (def_stmt)) base = TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0); } diff --git a/gcc/vr-values.c b/gcc/vr-values.c index a6b1db35ef0..e9a2a0ef1eb 100644 --- a/gcc/vr-values.c +++ b/gcc/vr-values.c @@ -364,8 +364,7 @@ vr_values::vrp_stmt_computes_nonzero (gimple *stmt) /* If we have an expression of the form &X->a, then the expression is nonnull if X is nonnull. */ - if (is_gimple_assign (stmt) - && gimple_assign_rhs_code (stmt) == ADDR_EXPR) + if (gimple_addr_expr_p (stmt)) { tree expr = gimple_assign_rhs1 (stmt); poly_int64 bitsize, bitpos;