diff mbox series

tree-object-size: Avoid unnecessary processing of __builtin_object_size

Message ID 20211018042438.803964-1-siddhesh@gotplt.org
State New
Headers show
Series tree-object-size: Avoid unnecessary processing of __builtin_object_size | expand

Commit Message

Siddhesh Poyarekar Oct. 18, 2021, 4:24 a.m. UTC
This is a minor cleanup to bail out early if the result of
__builtin_object_size is not assigned to anything and avoid initializing
the object size arrays.

gcc/ChangeLog:

	* tree-object-size (object_sizes_execute): Consolidate LHS null
	check and do it early.

Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
---
 gcc/tree-object-size.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

Comments

Richard Biener Oct. 18, 2021, 9:57 a.m. UTC | #1
On Mon, Oct 18, 2021 at 6:25 AM Siddhesh Poyarekar <siddhesh@gotplt.org> wrote:
>
> This is a minor cleanup to bail out early if the result of
> __builtin_object_size is not assigned to anything and avoid initializing
> the object size arrays.

OK.

Thanks,
Richard.

> gcc/ChangeLog:
>
>         * tree-object-size (object_sizes_execute): Consolidate LHS null
>         check and do it early.
>
> Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
> ---
>  gcc/tree-object-size.c | 12 +++++-------
>  1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c
> index 6a4dc724f34..46a976dfe10 100644
> --- a/gcc/tree-object-size.c
> +++ b/gcc/tree-object-size.c
> @@ -1298,6 +1298,10 @@ object_sizes_execute (function *fun, bool insert_min_max_p)
>           if (!gimple_call_builtin_p (call, BUILT_IN_OBJECT_SIZE))
>             continue;
>
> +         tree lhs = gimple_call_lhs (call);
> +         if (!lhs)
> +           continue;
> +
>           init_object_sizes ();
>
>           /* If insert_min_max_p, only attempt to fold
> @@ -1312,11 +1316,9 @@ object_sizes_execute (function *fun, bool insert_min_max_p)
>                 {
>                   unsigned HOST_WIDE_INT object_size_type = tree_to_uhwi (ost);
>                   tree ptr = gimple_call_arg (call, 0);
> -                 tree lhs = gimple_call_lhs (call);
>                   if ((object_size_type == 1 || object_size_type == 3)
>                       && (TREE_CODE (ptr) == ADDR_EXPR
> -                         || TREE_CODE (ptr) == SSA_NAME)
> -                     && lhs)
> +                         || TREE_CODE (ptr) == SSA_NAME))
>                     {
>                       tree type = TREE_TYPE (lhs);
>                       unsigned HOST_WIDE_INT bytes;
> @@ -1339,10 +1341,6 @@ object_sizes_execute (function *fun, bool insert_min_max_p)
>               continue;
>             }
>
> -         tree lhs = gimple_call_lhs (call);
> -         if (!lhs)
> -           continue;
> -
>           result = gimple_fold_stmt_to_constant (call, do_valueize);
>           if (!result)
>             {
> --
> 2.31.1
>
Jakub Jelinek Oct. 18, 2021, 10:12 a.m. UTC | #2
On Mon, Oct 18, 2021 at 11:57:19AM +0200, Richard Biener via Gcc-patches wrote:
> On Mon, Oct 18, 2021 at 6:25 AM Siddhesh Poyarekar <siddhesh@gotplt.org> wrote:
> >
> > This is a minor cleanup to bail out early if the result of
> > __builtin_object_size is not assigned to anything and avoid initializing
> > the object size arrays.
> 
> OK.

Yeah, fortunately we have expansion for __builtin_object_size so even if
the user tries hard to avoid DCE of the builtin with no LHS through
-fno-tree-dce etc., it shouldn't ICE but expand to -1, 0 or __builtin_trap ()
depending on the arguments it had.

> > gcc/ChangeLog:
> >
> >         * tree-object-size (object_sizes_execute): Consolidate LHS null
> >         check and do it early.
> >
> > Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>

	Jakub
diff mbox series

Patch

diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c
index 6a4dc724f34..46a976dfe10 100644
--- a/gcc/tree-object-size.c
+++ b/gcc/tree-object-size.c
@@ -1298,6 +1298,10 @@  object_sizes_execute (function *fun, bool insert_min_max_p)
 	  if (!gimple_call_builtin_p (call, BUILT_IN_OBJECT_SIZE))
 	    continue;
 
+	  tree lhs = gimple_call_lhs (call);
+	  if (!lhs)
+	    continue;
+
 	  init_object_sizes ();
 
 	  /* If insert_min_max_p, only attempt to fold
@@ -1312,11 +1316,9 @@  object_sizes_execute (function *fun, bool insert_min_max_p)
 		{
 		  unsigned HOST_WIDE_INT object_size_type = tree_to_uhwi (ost);
 		  tree ptr = gimple_call_arg (call, 0);
-		  tree lhs = gimple_call_lhs (call);
 		  if ((object_size_type == 1 || object_size_type == 3)
 		      && (TREE_CODE (ptr) == ADDR_EXPR
-			  || TREE_CODE (ptr) == SSA_NAME)
-		      && lhs)
+			  || TREE_CODE (ptr) == SSA_NAME))
 		    {
 		      tree type = TREE_TYPE (lhs);
 		      unsigned HOST_WIDE_INT bytes;
@@ -1339,10 +1341,6 @@  object_sizes_execute (function *fun, bool insert_min_max_p)
 	      continue;
 	    }
 
-	  tree lhs = gimple_call_lhs (call);
-	  if (!lhs)
-	    continue;
-
 	  result = gimple_fold_stmt_to_constant (call, do_valueize);
 	  if (!result)
 	    {