Message ID | 20250107125350.619654-20-poulhies@adacore.com |
---|---|
State | New |
Headers |
Return-Path: <gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C888D3857C6D for <patchwork@sourceware.org>; Tue, 7 Jan 2025 13:25:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C888D3857C6D Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=fBTaraaw X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id E7F143856082 for <gcc-patches@gcc.gnu.org>; Tue, 7 Jan 2025 12:54:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E7F143856082 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org E7F143856082 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::330 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736254465; cv=none; b=jSle9lfj4A2sX+sJMV9bpD9CLWQp02T7CjIX8L/+7BbCCN7qYwJGXfurFA+gIXce3qDG2xIIEPkxJlC4WXc+GQybAbio30eAb0VnxuCHI4EJX/H/w7zrZbpnuJ7YN+WQ77N6CBR0BD2/g9EEBcSb+my2jbRXmol3UKWv4znBZKA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736254465; c=relaxed/simple; bh=pHQV+PA3SGNVIc2om1++BIHX2tuDPMB3sLzJO9unRrc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=lYOUCWJHHHfQuhE8B8IKhQwahfz5W8HGZGta7wMHgxpXwp65w3WPhCdIdY/iqGmj5ApVqW60pfjPUCWlmxPndBI4C2E0MdBfhQvmwxIYgot8QyevhgTTiDyZe3UcQBxmRmPXloiY756xnaJMLimHUwOk5G2c0pLUC3XgyZJ1jJs= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E7F143856082 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-436341f575fso159646265e9.1 for <gcc-patches@gcc.gnu.org>; Tue, 07 Jan 2025 04:54:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1736254464; x=1736859264; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uj4ZZwqwu6x+aap+GatGI1pllSLf4rEqryfZAJzG4YU=; b=fBTaraawvbO1AZD97D6CmBC7s27d3MTSQT0DnW/RDs7kepplosIZhkZ0PJD+TJOryW 1SnocWyYQFUgim0VfAOIwGrOPrCwjEv11jbn1C5vrafNCf1MdjEaOjy4pQi7ExEOYqt+ fsF06GJ5Bj0gR6I1VkedpclOrj2jGj04hjCyM6ar9hs5NvSu16hmODkXomQ1hxb6Rjg4 TaVvySntyvchzdkhsw891Q+Kxy+L1pXFL8RilVzCa1E2YOPJ3WJpQAplT92cPu+pIGpv 6zemvIqje9pDzJzMGIjockO2uQUoabECpVtKFVvMQ3OErSIdHItxGX4Hmkqbfrf+e5Q1 ltwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736254464; x=1736859264; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uj4ZZwqwu6x+aap+GatGI1pllSLf4rEqryfZAJzG4YU=; b=AM3MAjTpC5V45QkfVvgE5/rgPo8ULeH/EfG4gmXO3f71MhXm89yt507hjqS9qh5n2X jWxsmm4Wa9ZHlk41sa5+T5J/e+aPNkRkgg5pxjurvt0qX+l79cFQSbEfvZdPOv2E1nuw B16foSFMJTdFygDTMYmI3Jjl0pJBTgpjzv/eIC+4BbFHibeyQjNipzGe6yffOW2aOp4m vpFVwzIDslDUO4DFUCRzIUyrGZ8mqzC+/CwOXal9nUPsdwej486Jql00xUdu746IV0MM tR2kH73HW6tCy72J1HBlIxiYvJO7OwTL2uu2HADCWukc279T20bnzUGzEPk436/7d2b+ xwYg== X-Gm-Message-State: AOJu0YyHOgNdCVrnHyXXlxeGJ9JwUWAg+klLWlvx/WLfam0tP81aZHdl 0xE6/ehXoS1ecO3hpqAGR6huXc0aSwOIVbcKRMKBGFtgFN8+NZOeV6esxQM7yeYDF2K7Iw5lzos = X-Gm-Gg: ASbGncv/od/DeLGURN4l9HBG6kxW8UobDeWIcT771q8+tZfu/CmPWr5A+Aa+mxzCvpC beaqklSJVTrrXqOz8SPa46I0k72xoNcxgMcjWk4ALK8mwobLgqGr9UT2bsCypHjTj/pi6n7BXdS kjlqTQ7yXAEnwh5EhrC8vbItHOVn9/CJdrBPzKPqCOk0tkzXfvgUlZ3szWsP+2yUR6oQZjA+Zcb 9RvqXqHOF5KivpjE54A5tuCkyqFLpeJjxHjIYVzrTq7vNHucAfg86lM2Tmv259+DtBy1y/To9JP jKy8n7uryyVeKbjZrLNYgBYjVc9HHOtl2M+2a3wgq8v0nSf9oJ8Yww4RDYoo71kCqjEm74ry X-Google-Smtp-Source: AGHT+IGcBYVbmaWUus4odHthQMLIQqP4P6rF9g25gIliTVbTKAdaXymJyXqeI40sRTe5+QX+6L2wmQ== X-Received: by 2002:a5d:5e09:0:b0:385:f909:eb2c with SMTP id ffacd0b85a97d-38a223f7548mr54729562f8f.38.1736254463665; Tue, 07 Jan 2025 04:54:23 -0800 (PST) Received: from poulhies-Precision-5550.telnowedge.local (lmontsouris-659-1-24-67.w81-250.abo.wanadoo.fr. [81.250.175.67]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43656af6c42sm631014805e9.9.2025.01.07.04.54.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jan 2025 04:54:23 -0800 (PST) From: =?utf-8?q?Marc_Poulhi=C3=A8s?= <poulhies@adacore.com> To: gcc-patches@gcc.gnu.org Cc: Ronan Desplanques <desplanques@adacore.com> Subject: [COMMITTED 20/31] ada: Fix abort deferral for finally parts Date: Tue, 7 Jan 2025 13:53:38 +0100 Message-ID: <20250107125350.619654-20-poulhies@adacore.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250107125350.619654-1-poulhies@adacore.com> References: <20250107125350.619654-1-poulhies@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org |
Series |
[COMMITTED,01/31] ada: Restrict previous change made to expansion of allocators
|
|
Commit Message
Marc Poulhiès
Jan. 7, 2025, 12:53 p.m. UTC
From: Ronan Desplanques <desplanques@adacore.com>
This patch fixes two problems with how abort was deferred in finally
parts. First, calls to runtime subprograms are now omitted when
aborting is disallowed by active restrictions. Second, Abort_Undefer is
now correctly called when the finally part propagates an exception.
gcc/ada/ChangeLog:
* exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Fix abort
deferral.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/exp_ch11.adb | 27 +++++++++++++++++++--------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb index 66f38671008..189e0911fc4 100644 --- a/gcc/ada/exp_ch11.adb +++ b/gcc/ada/exp_ch11.adb @@ -1302,14 +1302,25 @@ package body Exp_Ch11 is Expand_Cleanup_Actions (Parent (N)); end if; - if Present (Finally_Statements (N)) then - Prepend_To - (Finally_Statements (N), - Build_Runtime_Call (Sloc (N), RE_Abort_Defer)); - - Append_To - (Finally_Statements (N), - Build_Runtime_Call (Sloc (N), RE_Abort_Undefer)); + if Present (Finally_Statements (N)) and then Abort_Allowed then + if Exceptions_OK then + Set_Finally_Statements + (N, + New_List + (Build_Runtime_Call (Sloc (N), RE_Abort_Defer), + Build_Abort_Undefer_Block + (Sloc (N), + Stmts => Finally_Statements (N), + Context => N))); + else + Prepend_To + (Finally_Statements (N), + Build_Runtime_Call (Sloc (N), RE_Abort_Defer)); + + Append_To + (Finally_Statements (N), + Build_Runtime_Call (Sloc (N), RE_Abort_Undefer)); + end if; Analyze_List (Finally_Statements (N)); end if;