aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <quic_apinski@quicinc.com>2024-09-03 12:48:46 -0700
committerAndrew Pinski <quic_apinski@quicinc.com>2024-09-04 07:32:47 -0700
commit97e011a472e16ddab67d7374ee9c3db040b62798 (patch)
tree9607adb6e788974ca9b819bd004d11223b0daf8b /gcc
parent284feaa809294995d6c133b8d002850a069c1ded (diff)
downloadgcc-97e011a472e16ddab67d7374ee9c3db040b62798.zip
gcc-97e011a472e16ddab67d7374ee9c3db040b62798.tar.gz
gcc-97e011a472e16ddab67d7374ee9c3db040b62798.tar.bz2
object-size: Use simple_dce_from_worklist in object-size pass
While trying to see if there was a way to improve object-size pass to use the ranger (for pointer plus), I noticed that it leaves around the statement containing __builtin_object_size if it was reduced to a constant. This fixes that by using simple_dce_from_worklist. Bootstrapped and tested on x86_64-linux-gnu. gcc/ChangeLog: * tree-object-size.cc (object_sizes_execute): Mark lhs for maybe dceing if doing a propagate. Call simple_dce_from_worklist. Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-object-size.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/tree-object-size.cc b/gcc/tree-object-size.cc
index 4c1fa9b..6544730 100644
--- a/gcc/tree-object-size.cc
+++ b/gcc/tree-object-size.cc
@@ -38,6 +38,7 @@ along with GCC; see the file COPYING3. If not see
#include "builtins.h"
#include "gimplify-me.h"
#include "gimplify.h"
+#include "tree-ssa-dce.h"
struct object_size_info
{
@@ -2187,6 +2188,7 @@ static unsigned int
object_sizes_execute (function *fun, bool early)
{
todo = 0;
+ auto_bitmap sdce_worklist;
basic_block bb;
FOR_EACH_BB_FN (bb, fun)
@@ -2277,13 +2279,18 @@ object_sizes_execute (function *fun, bool early)
/* Propagate into all uses and fold those stmts. */
if (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI (lhs))
- replace_uses_by (lhs, result);
+ {
+ replace_uses_by (lhs, result);
+ /* Mark lhs as being possiblely DCEd. */
+ bitmap_set_bit (sdce_worklist, SSA_NAME_VERSION (lhs));
+ }
else
replace_call_with_value (&i, result);
}
}
fini_object_sizes ();
+ simple_dce_from_worklist (sdce_worklist);
return todo;
}