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).