From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2140) id 25C8E3857341; Thu, 8 Jun 2023 04:47:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 25C8E3857341 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686199640; bh=NsPkrpVlwIIoKeKJ2e/rWoxoOMakagqn2x81GY04tE4=; h=From:To:Subject:Date:From; b=aAEQgmQtiHizusI/2d8Lfynu4T2xlNaAkvwvpgX8o9QRqsDbsT1HCiy6yYvne3Zhn vKFEHSuH5CxGVbnBejXPvZzwAhFjRHiKORyXvVB/6/hIssAJKBCOg1rytv0cf/2DG/ jZGcRjywmVFboPbtnwdyyLD4AfnmAnd+wrG4tDYM= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Alexandre Oliva To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/aoliva/heads/testme)] hardcfr: add optional checkpoints [ada docs] X-Act-Checkin: gcc X-Git-Author: Alexandre Oliva X-Git-Refname: refs/users/aoliva/heads/testme X-Git-Oldrev: 6c914d07ef926b53d7c6ffeca352537e43b47dfc X-Git-Newrev: 5667c51ab286acf16b9e7bc67232514b614c0c68 Message-Id: <20230608044720.25C8E3857341@sourceware.org> Date: Thu, 8 Jun 2023 04:47:20 +0000 (GMT) List-Id: https://gcc.gnu.org/g:5667c51ab286acf16b9e7bc67232514b614c0c68 commit 5667c51ab286acf16b9e7bc67232514b614c0c68 Author: Alexandre Oliva Date: Wed Oct 19 20:36:17 2022 -0300 hardcfr: add optional checkpoints [ada docs] 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. for gcc/ada/ChangeLog * doc/gnat_rm/security_hardening_features.rst: Document optional hardcfr checkpoints. Diff: