From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2140) id 02F423857343; Thu, 8 Jun 2023 09:16:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 02F423857343 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1686215816; bh=aXTPW0NyTPEy85avumR90rOhznXFFNtODXLo0VxvAZ0=; h=From:To:Subject:Date:From; b=azUA7AcucZ09drxvpy4bGBGvDHDsfx9XeXiGnL3C0b83OwqD/DV4sVaUPlG0TRz7j +UrXbWedFL96pwJvrSmci+7TL3SG/Ju8cN+mjDQUIzk3M7R01YcGiwd97qlsg3WWJ9 0MAovbQvB5xKaD/Ldui8ua6pAlcgX2OWcAfyn2jg= 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: f2bb0e3aa7cdf9c7adb34224aeda2947ce04df7e X-Git-Newrev: 440aa02e69cbda5ad34faddbde72ec5db6be1150 Message-Id: <20230608091656.02F423857343@sourceware.org> Date: Thu, 8 Jun 2023 09:16:56 +0000 (GMT) List-Id: https://gcc.gnu.org/g:440aa02e69cbda5ad34faddbde72ec5db6be1150 commit 440aa02e69cbda5ad34faddbde72ec5db6be1150 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: