diff options
author | Jeff Law <jeffreyalaw@gmail.com> | 2022-09-30 18:59:24 -0400 |
---|---|---|
committer | Jeff Law <jeffreyalaw@gmail.com> | 2022-09-30 19:04:43 -0400 |
commit | 89b5a316cffa4a9fa2504e776a4cdc2ef492f00b (patch) | |
tree | 11aaa758cde1a97e7f97281ba1bfa3843f4e5619 /gcc | |
parent | 2002c54cb7f183c27ad7a5c294b868930cea17db (diff) | |
download | gcc-89b5a316cffa4a9fa2504e776a4cdc2ef492f00b.zip gcc-89b5a316cffa4a9fa2504e776a4cdc2ef492f00b.tar.gz gcc-89b5a316cffa4a9fa2504e776a4cdc2ef492f00b.tar.bz2 |
Minor cleanup/prep in DOM
It's a bit weird that free_dom_edge_info leaves a dangling pointer in e->aux.
Not sure what I was thinking.
There's two callers. One wipes e->aux immediately after the call, the other
attaches a newly created object immediately after the call. So we can wipe
e->aux within the call and simplify one of the two call sites.
This is preparatory work for a minor optimization where we want to detect
another class of edge equivalences in DOM (until something better is available)
and either attach them an existing edge_info structure or create a new one if
one doesn't currently exist for a given edge.
gcc/
* tree-ssa-dom.cc (free_dom_edge_info): Clear e->aux too.
(free_all_edge_infos): Do not clear e->aux here.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/tree-ssa-dom.cc | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/tree-ssa-dom.cc b/gcc/tree-ssa-dom.cc index 84bef79..fa43dbe 100644 --- a/gcc/tree-ssa-dom.cc +++ b/gcc/tree-ssa-dom.cc @@ -393,7 +393,8 @@ edge_info::record_simple_equiv (tree lhs, tree rhs) simple_equivalences.safe_push (equiv_pair (lhs, rhs)); } -/* Free the edge_info data attached to E, if it exists. */ +/* Free the edge_info data attached to E, if it exists and + clear e->aux. */ void free_dom_edge_info (edge e) @@ -402,6 +403,7 @@ free_dom_edge_info (edge e) if (edge_info) delete edge_info; + e->aux = NULL; } /* Free all EDGE_INFO structures associated with edges in the CFG. @@ -420,10 +422,7 @@ free_all_edge_infos (void) FOR_EACH_BB_FN (bb, cfun) { FOR_EACH_EDGE (e, ei, bb->preds) - { - free_dom_edge_info (e); - e->aux = NULL; - } + free_dom_edge_info (e); } } |