diff options
author | Alexandre Oliva <oliva@adacore.com> | 2023-10-31 09:32:08 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2023-10-31 09:32:08 -0300 |
commit | 15404016d96dca9132b952980cda24cae33b3ee0 (patch) | |
tree | e6a305430460c73d77ab7a0dbb3811291944c70b /libgcc | |
parent | e3da1d7bb288c8c864f0284bc4bc5877b466a2f7 (diff) | |
download | gcc-15404016d96dca9132b952980cda24cae33b3ee0.zip gcc-15404016d96dca9132b952980cda24cae33b3ee0.tar.gz gcc-15404016d96dca9132b952980cda24cae33b3ee0.tar.bz2 |
hardcfr: support checking at abnormal edges [PR111943]
Control flow redundancy may choose abnormal edges for early checking,
but that breaks because we can't insert checks on such edges.
Introduce conditional checking on the dest block of abnormal edges,
and leave it for the optimizer to drop the conditional.
for gcc/ChangeLog
PR tree-optimization/111943
* gimple-harden-control-flow.cc: Adjust copyright year.
(rt_bb_visited): Add vfalse and vtrue data members.
Zero-initialize them in the ctor.
(rt_bb_visited::insert_exit_check_on_edge): Upon encountering
abnormal edges, insert initializers for vfalse and vtrue on
entry, and insert the check sequence guarded by a conditional
in the dest block.
for libgcc/ChangeLog
* hardcfr.c: Adjust copyright year.
for gcc/testsuite/ChangeLog
PR tree-optimization/111943
* gcc.dg/harden-cfr-pr111943.c: New.
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/hardcfr.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libgcc/hardcfr.c b/libgcc/hardcfr.c index 7496095..25ff067 100644 --- a/libgcc/hardcfr.c +++ b/libgcc/hardcfr.c @@ -1,5 +1,5 @@ /* Control flow redundancy hardening - Copyright (C) 2022 Free Software Foundation, Inc. + Copyright (C) 2022-2023 Free Software Foundation, Inc. Contributed by Alexandre Oliva <oliva@adacore.com> This file is part of GCC. |