From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2140) id 541413857023; Fri, 9 Jun 2023 06:16:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 541413857023 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686291392; bh=ApVPaa27X3ogEu62+pcf8WvNw9xw7Xo6y5OtJ9yN8Zo=; h=From:To:Subject:Date:From; b=B8PkbHTPrCye6yUVAlFj9RMjr/T885MAYqXXaHFJzSebhkWScq7ia1ZF/JkrQ1jFT 7lSv9HWrxfnAWa51os2j04rojcd05M8MvIfC7bcSweDUPnLXfEH5tjGfYVvSyn4P95 HVVumTwPNOatrgQdbzf5V+auYauNgTQhSDWjiFjk= 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: a35dea054642fee54092002156693f88fdb7813f X-Git-Newrev: c66ec1a0792b659633ac071693791a87842a0dae Message-Id: <20230609061632.541413857023@sourceware.org> Date: Fri, 9 Jun 2023 06:16:32 +0000 (GMT) List-Id: https://gcc.gnu.org/g:c66ec1a0792b659633ac071693791a87842a0dae commit c66ec1a0792b659633ac071693791a87842a0dae Author: Alexandre Oliva Date: Thu Jun 8 01:34:59 2023 -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: