Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2226707/?format=api
{ "id": 2226707, "url": "http://patchwork.ozlabs.org/api/patches/2226707/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/bmm.hhuom29jc4.gcc.gcc-TEST.pinskia.61.1.3@forge-stage.sourceware.org/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<bmm.hhuom29jc4.gcc.gcc-TEST.pinskia.61.1.3@forge-stage.sourceware.org>", "list_archive_url": null, "date": "2026-04-22T18:30:28", "name": "[v1,3/6] forwprop: Don't do copy-prop-aggregates from statements that could throw [PR120599]", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "9b2c289faf5bdf8322f1e8c58d2a3379a62b564e", "submitter": { "id": 93219, "url": "http://patchwork.ozlabs.org/api/people/93219/?format=api", "name": "Andrew Pinski via Sourceware Forge", "email": "forge-bot+pinskia@forge-stage.sourceware.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/bmm.hhuom29jc4.gcc.gcc-TEST.pinskia.61.1.3@forge-stage.sourceware.org/mbox/", "series": [ { "id": 501080, "url": "http://patchwork.ozlabs.org/api/series/501080/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=501080", "date": "2026-04-22T18:30:28", "name": "copy-propv3", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/501080/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2226707/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2226707/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org; dmarc=none (p=none dis=none)\n header.from=forge-stage.sourceware.org", "sourceware.org;\n spf=pass smtp.mailfrom=forge-stage.sourceware.org", "server2.sourceware.org;\n arc=none smtp.remote-ip=38.145.34.39" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g17RL1f52z1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 04:43:58 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 663774BAE7ED\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 18:43:56 +0000 (GMT)", "from forge-stage.sourceware.org (vm08.sourceware.org [38.145.34.39])\n by sourceware.org (Postfix) with ESMTPS id 3AF43442FC10\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:32:05 +0000 (GMT)", "from forge-stage.sourceware.org (localhost [IPv6:::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256)\n (No client certificate requested)\n by forge-stage.sourceware.org (Postfix) with ESMTPS id 06C49434CF\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 18:32:05 +0000 (UTC)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 663774BAE7ED", "OpenDKIM Filter v2.11.0 sourceware.org 3AF43442FC10" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 3AF43442FC10", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 3AF43442FC10", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776882725; cv=none;\n b=gL6KlK52rUwUyN4B6ggtMwZSUpklUjbA0w40+TEPJ71iq8PSJQOayUs1hQnA388c7HhXQZq9k6ntgl+o6CMqHfnU97/RLoedigyjXSuEV/+zjTIZEA/q5L7Kohwf2xWCmugDEQeygDt68A7Rly/1z1kDjMqkfCNUa63EyuaiEMo=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776882725; c=relaxed/simple;\n bh=5rQ8RYU53vzKizI7wY9MNbS+bGPAFf+Qlz2e1bfe9co=;\n h=From:Date:Subject:To:Message-ID;\n b=A7poWQdLjSjEi1iFsyZZJuS7IMmx7+K8P+DH0vt4e8+4n93di9LirM+aS1wJeqrKm5I1TTdxkLISp4QKOlLNvw7IdHBiFcVEjsWcb22hfu5WMNbMnd0YUHgkM80rNdSYdT8F171dm4DIAM4GSnJq2HfVI1fEturLulb8RBNtmmY=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "From": "Andrew Pinski via Sourceware Forge\n <forge-bot+pinskia@forge-stage.sourceware.org>", "Date": "Wed, 22 Apr 2026 18:30:28 +0000", "Subject": "[PATCH v1 3/6] forwprop: Don't do copy-prop-aggregates from\n statements that could throw [PR120599]", "To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>", "Message-ID": "\n <bmm.hhuom29jc4.gcc.gcc-TEST.pinskia.61.1.3@forge-stage.sourceware.org>", "X-Mailer": "batrachomyomachia", "X-Pull-Request-Organization": "gcc", "X-Pull-Request-Repository": "gcc-TEST", "X-Pull-Request": "https://forge.sourceware.org/gcc/gcc-TEST/pulls/61", "References": "\n <bmm.hhuom29jc4.gcc.gcc-TEST.pinskia.61.1.0@forge-stage.sourceware.org>", "In-Reply-To": "\n <bmm.hhuom29jc4.gcc.gcc-TEST.pinskia.61.1.0@forge-stage.sourceware.org>", "X-Patch-URL": "\n https://forge.sourceware.org/pinskia/gcc-TEST/commit/53659eeccbfe4e33eb875f6fe83014f62603e4c9", "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>,\n <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>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Reply-To": "gcc-patches mailing list <gcc-patches@gcc.gnu.org>,\n pinskia@gcc.gnu.org", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "From: Andrew Pinski <quic_apinski@quicinc.com>\n\nIn the testcase provided, currently we lose the landing pad for the exception that could\nthrow from the aggregate load as we remove one copy and the second statement where load\nhappens was not marked as throwable before so the landing pad for that internal throw is\nnow gone.\n\nThe fix is to ignore statements that could throw (internally or externally).\n\n\tPR tree-optimization/120599\n\ngcc/ChangeLog:\n\n\t* tree-ssa-forwprop.cc (optimize_agr_copyprop): Don't try to copy\n\tfrom statements that throw.\n\ngcc/testsuite/ChangeLog:\n\n\t* g++.dg/torture/noncall-eh-1.C: New test.\n\nSigned-off-by: Andrew Pinski <quic_apinski@quicinc.com>\n---\n gcc/testsuite/g++.dg/torture/noncall-eh-1.C | 24 +++++++++++++++++++++\n gcc/tree-ssa-forwprop.cc | 4 ++++\n 2 files changed, 28 insertions(+)\n create mode 100644 gcc/testsuite/g++.dg/torture/noncall-eh-1.C", "diff": "diff --git a/gcc/testsuite/g++.dg/torture/noncall-eh-1.C b/gcc/testsuite/g++.dg/torture/noncall-eh-1.C\nnew file mode 100644\nindex 000000000000..cc36eb8abb99\n--- /dev/null\n+++ b/gcc/testsuite/g++.dg/torture/noncall-eh-1.C\n@@ -0,0 +1,24 @@\n+// { dg-do compile }\n+// { dg-additional-options \"-fnon-call-exceptions -fexceptions -fdump-tree-optimized-eh\" }\n+\n+// PR tree-optimization/120599\n+// Copying prop for aggregates should not touch `a = *__val` since that statement\n+// can throw (internally) so we need to be able to keep the landing pad.\n+\n+struct RefitOption {\n+ char subtype;\n+ int string;\n+} n;\n+void h(RefitOption) __attribute__((nothrow));\n+void k(RefitOption *__val, RefitOption a)\n+{\n+ try {\n+ a = *__val;\n+ RefitOption __trans_tmp_2 = a;\n+ h(__trans_tmp_2);\n+ }\n+ catch(...){}\n+}\n+\n+// Make sure There is a landing pad for the non-call exception from the aggregate load.\n+// { dg-final { scan-tree-dump \"LP \" \"optimized\" } }\ndiff --git a/gcc/tree-ssa-forwprop.cc b/gcc/tree-ssa-forwprop.cc\nindex ca8578cb72a3..ca2faf5468cc 100644\n--- a/gcc/tree-ssa-forwprop.cc\n+++ b/gcc/tree-ssa-forwprop.cc\n@@ -1404,6 +1404,10 @@ optimize_agr_copyprop (gimple_stmt_iterator *gsip)\n if (gimple_has_volatile_ops (stmt))\n return false;\n \n+ /* Can't prop if the statement could throw. */\n+ if (stmt_could_throw_p (cfun, stmt))\n+ return false;\n+\n tree dest = gimple_assign_lhs (stmt);\n tree src = gimple_assign_rhs1 (stmt);\n /* If the statement is `src = src;` then ignore it. */\n", "prefixes": [ "v1", "3/6" ] }