[gcc(refs/users/aoliva/heads/testme)] hardcfr: add checking at exceptions and noreturn calls: tweaks
Alexandre Oliva
aoliva@gcc.gnu.org
Thu Aug 11 01:57:50 GMT 2022
https://gcc.gnu.org/g:125b843bb77c74a9329fa1b1db4dfcc688b5a054
commit 125b843bb77c74a9329fa1b1db4dfcc688b5a054
Author: Alexandre Oliva <oliva@gnu.org>
Date: Wed Aug 10 22:56:28 2022 -0300
hardcfr: add checking at exceptions and noreturn calls: tweaks
Diff:
---
gcc/gimple-harden-control-flow.cc | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/gcc/gimple-harden-control-flow.cc b/gcc/gimple-harden-control-flow.cc
index 5066a43fe6c..6d56e78dd8d 100644
--- a/gcc/gimple-harden-control-flow.cc
+++ b/gcc/gimple-harden-control-flow.cc
@@ -772,10 +772,6 @@ pass_harden_control_flow_redundancy::execute (function *fun)
if (!bb_eh_cleanup)
{
bb_eh_cleanup = create_empty_bb (bb);
- if (dom_info_available_p (CDI_DOMINATORS))
- set_immediate_dominator (CDI_DOMINATORS, bb_eh_cleanup, bb);
- if (current_loops)
- add_bb_to_loop (bb_eh_cleanup, current_loops->tree_root);
/* Make the new block an EH cleanup for the call. */
eh_region new_r = gen_eh_region_cleanup (NULL);
@@ -791,15 +787,18 @@ pass_harden_control_flow_redundancy::execute (function *fun)
gresx *resx = gimple_build_resx (new_r->index);
gsi_insert_before (&ehgsi, resx, GSI_SAME_STMT);
}
- else
- {
- // Update immedite dominator and loop?
- }
add_stmt_to_eh_lp (stmt, lp_eh_cleanup);
/* Finally, wire the EH cleanup block into the CFG. */
make_eh_edges (stmt); }
}
+
+ if (bb_eh_cleanup && dom_info_available_p (CDI_DOMINATORS))
+ {
+ basic_block immdom;
+ immdom = recompute_dominator (CDI_DOMINATORS, bb_eh_cleanup);
+ set_immediate_dominator (CDI_DOMINATORS, bb_eh_cleanup, immdom);
+ }
}
/* We wish to add verification at blocks without successors, such as
More information about the Gcc-cvs
mailing list