public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/vendors/ARM/heads/morello)] Add gimple_addr_expr_p
@ 2022-05-05 12:08 Matthew Malcomson
0 siblings, 0 replies; only message in thread
From: Matthew Malcomson @ 2022-05-05 12:08 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:75b73ced14ba50da54bf471fce62dc42df874887
commit 75b73ced14ba50da54bf471fce62dc42df874887
Author: Richard Sandiford <richard.sandiford@arm.com>
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<const gassign *> (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;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-05 12:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-05 12:08 [gcc(refs/vendors/ARM/heads/morello)] Add gimple_addr_expr_p Matthew Malcomson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).