aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2022-10-06 02:23:48 -0300
committerMarc Poulhiès <poulhies@adacore.com>2022-11-14 14:46:51 +0100
commitf3597ba6c5ea9c0eb2c3dac7271f8a8bf9fbb220 (patch)
treee173356435df8c2c9e2846dd9d694d1c0f78a675 /gcc/cp
parent90b9052e0b5df49d6c298c4706978135d2af2a86 (diff)
downloadgcc-f3597ba6c5ea9c0eb2c3dac7271f8a8bf9fbb220.zip
gcc-f3597ba6c5ea9c0eb2c3dac7271f8a8bf9fbb220.tar.gz
gcc-f3597ba6c5ea9c0eb2c3dac7271f8a8bf9fbb220.tar.bz2
ada: hardcfr docs: add optional checkpoints
Previously, control flow redundancy only checked the visited bitmap against the control flow graph at return points and before mandatory tail calls, missing various other possibilities of exiting a subprogram, such as by raising or propagating exceptions, and calling noreturn functions. The checks inserted before returns also prevented potential tail-call optimizations. This incremental change introduces options to control checking at each of these previously-missed checkpoints. Unless disabled, a cleanup is introduced to check when an exceptions escapes a subprogram. To avoid disrupting sibcall optimizations, when they are enabled, checks are introduced before calls whose results are immediately returned, whether or not they are ultimately optimized. If enabled, checks are introduced before noreturn calls and exception raises, or only before nothrow noreturn calls. Add examples of code transformations to the GNAT RM. gcc/ada/ * doc/gnat_rm/security_hardening_features.rst: Document optional hardcfr checkpoints. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate.
Diffstat (limited to 'gcc/cp')
0 files changed, 0 insertions, 0 deletions