aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@gotplt.org>2021-10-18 09:15:42 +0530
committerSiddhesh Poyarekar <siddhesh@gotplt.org>2021-10-18 19:04:16 +0530
commit30d6ff3916882c7af80f92e0030cedb0788572d3 (patch)
treef1ba4aad88ceb3f710805dd41f2b74838d308c55
parentc9ff4581841f079e00d37fa7743021c62c935315 (diff)
downloadgcc-30d6ff3916882c7af80f92e0030cedb0788572d3.zip
gcc-30d6ff3916882c7af80f92e0030cedb0788572d3.tar.gz
gcc-30d6ff3916882c7af80f92e0030cedb0788572d3.tar.bz2
tree-object-size: Avoid unnecessary processing of __builtin_object_size
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.c (object_sizes_execute): Consolidate LHS null check and do it early. Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
-rw-r--r--gcc/tree-object-size.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c
index 6a4dc72..46a976d 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)
{