Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2224240/?format=api
{ "id": 2224240, "url": "http://patchwork.ozlabs.org/api/1.2/patches/2224240/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260417065425.985251-1-naveen.siddegowda@oss.qualcomm.com/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/1.2/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": "<20260417065425.985251-1-naveen.siddegowda@oss.qualcomm.com>", "list_archive_url": null, "date": "2026-04-17T06:54:25", "name": "c, middle-end: Fold SAT_ADD at gimple level [PR123286]", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "2b28acc975c9dd1266f3e60c203ff2c6f3f6a393", "submitter": { "id": 93028, "url": "http://patchwork.ozlabs.org/api/1.2/people/93028/?format=api", "name": "Naveen", "email": "naveen.siddegowda@oss.qualcomm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260417065425.985251-1-naveen.siddegowda@oss.qualcomm.com/mbox/", "series": [ { "id": 500246, "url": "http://patchwork.ozlabs.org/api/1.2/series/500246/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=500246", "date": "2026-04-17T06:54:25", "name": "c, middle-end: Fold SAT_ADD at gimple level [PR123286]", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/500246/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2224240/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2224240/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\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=faGwZV0a;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=fY2ZVb3W;\n\tdkim-atps=neutral", "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;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=faGwZV0a;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=fY2ZVb3W", "sourceware.org; dmarc=none (p=none dis=none)\n header.from=oss.qualcomm.com", "sourceware.org;\n spf=pass smtp.mailfrom=oss.qualcomm.com", "server2.sourceware.org;\n arc=none smtp.remote-ip=205.220.168.131" ], "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 4fxlxf6VmLz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 16:55:01 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 75EB64BAE7C2\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 06:54:59 +0000 (GMT)", "from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n by sourceware.org (Postfix) with ESMTPS id 5EF0B4BA23F5\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 06:54:32 +0000 (GMT)", "from pps.filterd (m0279865.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63H0fh8t869236\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 06:54:31 GMT", "from mail-dy1-f197.google.com (mail-dy1-f197.google.com\n [74.125.82.197])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4djvruc2cr-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 06:54:31 +0000 (GMT)", "by mail-dy1-f197.google.com with SMTP id\n 5a478bee46e88-2ddd8ef5343so413679eec.1\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 23:54:30 -0700 (PDT)", "from hu-navehs-lv.qualcomm.com (Global_NAT1.qualcomm.com.\n [129.46.96.20]) by smtp.gmail.com with ESMTPSA id\n a92af1059eb24-12c749c422csm983431c88.3.2026.04.16.23.54.28\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 16 Apr 2026 23:54:29 -0700 (PDT)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 75EB64BAE7C2", "OpenDKIM Filter v2.11.0 sourceware.org 5EF0B4BA23F5" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 5EF0B4BA23F5", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 5EF0B4BA23F5", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776408872; cv=none;\n b=RpDkQyFfE2xQCC05ddhr8/vPGoVeCApdXvaQ8sNWrX2S1q5vDmzKi+TfYdMjwjJudtgK9C3gDkI2vH6Q6e+j6x8W20ZGgZq2+Od5PzQ1Uk35CdkV2xlTBQgrOOm9v9MGr229QCpY/UUNtbIeF0q66ujPuPJzD2awL5wRycv4SkY=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776408872; c=relaxed/simple;\n bh=ypGA6zDfn5NSaa1FjUBcU9hBUgqWcGtAuYMZNPo0fgE=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id:\n MIME-Version;\n b=R9QYKSi7De9uFY2t+nT/lI+Lpi6yczV09F1vVonAPz23dx688wwJOWQafeRTqE57ssJyHInvhBAmY6c8Zh4d0gUWFYr2QmnQKfMtPozfsNr39ejPrErTsdlPLM/HKwfIg5rKrJ3pyhGGRXh0OFFRitaS+M9BQH7/EZVX/2gm6/I=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:date:from:message-id:mime-version\n :subject:to; s=qcppdkim1; bh=z+Zb6s/1XJXnDJe2PEtvFwToOITe9fvBxaX\n pIgtsRME=; b=faGwZV0aeeyaOh/IuaRn/jjerPgHBjYK9AFl7BA0yhESWGqNTLR\n uIBjCP8ewsJdiKmg8/i1mjj0wvVWbBVBbSj/asMQK416aX66yyDXiAz+TCH9hEjf\n ibtqTGuUKxTYxtFVCXvZhYHExB3OxJwroPnsi56Pku6kDVPS0FDrRiCLMhgtJ6+y\n WWXOvPxffMteNgIXCpklwafBC2nDhzoMjDPcBs5+S7hZLoGTqYcb24DEcUgEt/Uk\n ir0ltt9uxUmVEYTUlcegQw8hbFoSPFDYzEav3n36IU6W7Rc8CRrT6TctOpmMQ/PE\n G7Dm+35q3uAOgw1h3ehLyI02dyYihT0H1jA==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1776408870; x=1777013670; darn=gcc.gnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=z+Zb6s/1XJXnDJe2PEtvFwToOITe9fvBxaXpIgtsRME=;\n b=fY2ZVb3Wj2hiiR1mMMkYYbkN4sNwJKDBTcF5YYYRnPCO9f1D92I3c0gL6ZAl0DqSn4\n 2F4RSwRXRfavlIxBCpnHj6KJR/iXMIh4BfBd3orCeJmi+4kJYnND54R3R5nK9YXzvY/n\n tYdYS+AJrNnZlrevIaMZ+fcQBmRfxYAt9wB7/w10q3UITJoYGYGrRW6QNGEHbDmmD31R\n Em1vKA6OWPbFI91x7ofMboaIUXzAKli+dg7NqGpTzB+dlUrhc4u65LHuLHTB5PYBX5GM\n beGiX9Mzs+mm4HnHPbmkqW4+Vcfrm01/8tSg5DAIOjAoEsOZvP1ZWZLMuVd6jTx54gMI\n KAEA==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776408870; x=1777013670;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=z+Zb6s/1XJXnDJe2PEtvFwToOITe9fvBxaXpIgtsRME=;\n b=juCV2ow/FK/4O4kqx1RV0GXgpzAJKeiJL9VI4UsF0OKHZDCN/edzyoi/UqSJBbyo/X\n 0rQlf2Gt4j3bTiCa8whR5bvqaJ8moy2FMLb+7282zEIi17iuYiFZP1u0PYAsB55ZIcTi\n jCJsBiG9lhG7rqtGNX5M1MTof+K4ljkfolWIEaS1zv9oDNFhqmnQzK2I3NLd/GDevE5u\n QKVhYhgRn8VHcZ4y5qqPH77uID3i3YyRbLdoE357FGYYz7JPndSa1O6i25LMI9nEACi5\n 85UfSMQ9qle9xKaDpFJPXiXgede0Xbb/+mYzIAmPoUDVWipF3t9I059LMppE7i+QZ32l\n olkw==", "X-Gm-Message-State": "AOJu0YwQfuNpIA3G1eMq7BHT1BZDlFBB+gfglFSQlVFn4Y4Tj6oVWujF\n i9eDshptAkL1yqhoVBId9hxO1UfGq7PABjOGrdnaIpcZi7VgVduR7Ie00mCktQz7YSBAXpbBT0G\n mhLOqaAfWroEcTFAHl0CICkZpC1HB1m/kSaMJHCY+diBvQgkkzwC6XT8ZDLWJ+5ZoJWSv", "X-Gm-Gg": "AeBDietb7YoJMDKDlg7IdJME6TSiiiEQgWBAjvzk5DXxKkJem69nG/WoFg93Mu+Kpb1\n 51aZoMOG9qvzuI9QS6m3zVn5oIczJfyIWLETqcFyiDjFOdJNqZKWo6HcBr2q5cYNZiUwet467sg\n VZvIwKw6rN+lip6kS7GjuT4QjP2m1QkCPISrq08H4D9bR9KgAY7AU/5mjoGWpRVwB5jcDBzJKes\n VkK0YTkJqEwag1YbgVo+uHVqWCDSI2ERT6zK2+6pRJs2JZUGl9TnkVPRZ+mrVP+9n12cTy/6hXf\n dtkKiHKj41Xvclj6VYGtUpORbLDn3fpdS8Y6u1prnRc4zpo+AHqgu73i1W71ZkuG0Xr16lBG2dT\n udk7EnC146XWSh24mKodoKBXLe6s5+ymnsTJJqhwoI/f6TeLG6R+TBYCf6XzlZaoA77yhLD464y\n ltpsYVhh4ir0c4Cok=", "X-Received": [ "by 2002:a05:7022:12b:b0:128:d5bd:357f with SMTP id\n a92af1059eb24-12c73fa779fmr664623c88.30.1776408870078;\n Thu, 16 Apr 2026 23:54:30 -0700 (PDT)", "by 2002:a05:7022:12b:b0:128:d5bd:357f with SMTP id\n a92af1059eb24-12c73fa779fmr664608c88.30.1776408869359;\n Thu, 16 Apr 2026 23:54:29 -0700 (PDT)" ], "From": "Naveen <naveen.siddegowda@oss.qualcomm.com>", "To": "gcc-patches@gcc.gnu.org", "Cc": "Naveen <naveen.siddegowda@oss.qualcomm.com>", "Subject": "[PATCH] c, middle-end: Fold SAT_ADD at gimple level [PR123286]", "Date": "Thu, 16 Apr 2026 23:54:25 -0700", "Message-Id": "<20260417065425.985251-1-naveen.siddegowda@oss.qualcomm.com>", "X-Mailer": "git-send-email 2.34.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDE3MDA2NiBTYWx0ZWRfX+AYIM5xUZ+rw\n ARd0Hv5qhacG2UPfN4YxPZKn9mMyYARDYKu7cKzHlagpvntk3hnzK7QNjXGgOvzEYMupuxXbfJh\n cZ+dLVD01X7Uh2dq4HQMOz8DzcezKrgz5lr2IP3bEcgsIBwvUvoqM2S4ir0T5lRg+YAGzhmyR65\n IBPqHkC2Uxba4I6hDDq+c7fB1WC+EvF5FIOK4qehh+gOB3XdK3UwKnHR1vPmZDoApZ5fkNEndsJ\n lDhbo4zMEM1v7PaWWQZwoTsX+zaKLtn8CzXKwqqudx6lgeRoKcbmt/OHvnYp1cIz9XtjG7xLRpm\n q2hgaXwbSuQayd6cOcV9tw7GCsoZMklJ+z8p1XYPUH7WFMgb6g+5ETm0OFZUSvfnwXgNpPt0+aG\n VocjvYK96FB+loNa0/OcV684Q1LySHpL0SYV08zQO0RlCdYVGDLTX9Zj1CdxDPOiGLJavi5L8od\n +xdkZ0OYujkhr5hqOGg==", "X-Proofpoint-GUID": "gvuXabrL3AHbjWdFFD0WDeNFkJHE0pL3", "X-Proofpoint-ORIG-GUID": "gvuXabrL3AHbjWdFFD0WDeNFkJHE0pL3", "X-Authority-Analysis": "v=2.4 cv=GcInWwXL c=1 sm=1 tr=0 ts=69e1d927 cx=c_pps\n a=Uww141gWH0fZj/3QKPojxA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17\n a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8\n a=ErkrIr04nCuAW1fLU_MA:9 a=PxkB5W3o20Ba91AHUih5:22", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-16_04,2026-04-16_03,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n lowpriorityscore=0 adultscore=0 priorityscore=1501 malwarescore=0\n impostorscore=0 phishscore=0 suspectscore=0 bulkscore=0 spamscore=0\n clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000\n definitions=main-2604170066", "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>", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "Extend scalar SAT_ADD constant folding to recognize cases where one operand is\nzero. It allows SAT_ADD expressions with constant operands to fold away early.\nThe change improves optimization opportunities and avoids emitting unnecessary\nSAT_ADD operations.\nBootstrapped and tested on aarch64-linux-gnu.\n\nPR middle-end/123826\n\ngcc/ChangeLog:\n\t* fold-const-call.cc (fold_internal_fn_sat_add): New function.\n\t(fold_const_call): Handle CFN_SAT_ADD.\n\t* match.pd: Add simplifications for x SAT_ADD 0 == x.\n\ngcc/testsuite/ChangeLog:\n\t* gcc.dg/pr123826.c: New test.\n\nSigned-off-by: Naveen <naveen.siddegowda@oss.qualcomm.com>\n---\n gcc/fold-const-call.cc | 30 ++++++++++++++++++++++++++++++\n gcc/match.pd | 11 +++++++++++\n gcc/testsuite/gcc.dg/pr123826.c | 33 +++++++++++++++++++++++++++++++++\n 3 files changed, 74 insertions(+)\n create mode 100644 gcc/testsuite/gcc.dg/pr123826.c", "diff": "diff --git a/gcc/fold-const-call.cc b/gcc/fold-const-call.cc\nindex 7dd1b21c34f..37b44e19db0 100644\n--- a/gcc/fold-const-call.cc\n+++ b/gcc/fold-const-call.cc\n@@ -1477,6 +1477,33 @@ fold_const_vec_extract (tree, tree arg0, tree)\n return NULL_TREE;\n }\n \n+/* Try to fold scalar integer IFN_SAT_ADD with operands OP0 and OP1. */\n+\n+static tree\n+fold_internal_fn_sat_add (tree type, tree op0, tree op1)\n+{\n+ if (!INTEGRAL_TYPE_P (type)\n+ || VECTOR_TYPE_P (type)\n+ || TREE_CODE (type) == BOOLEAN_TYPE)\n+ return NULL_TREE;\n+\n+ if (TREE_CODE (op0) != INTEGER_CST\n+ || TREE_CODE (op1) != INTEGER_CST)\n+ return NULL_TREE;\n+\n+ if (!arith_overflowed_p (PLUS_EXPR, type, op0, op1))\n+ {\n+ tree res = fold_binary (PLUS_EXPR, type, op0, op1);\n+ if (res && TREE_CODE (res) == INTEGER_CST && !TREE_OVERFLOW (res))\n+\treturn res;\n+ return NULL_TREE;\n+ }\n+\n+ if (TYPE_UNSIGNED (type) || tree_int_cst_sgn (op0) >= 0)\n+ return TYPE_MAX_VALUE (type);\n+ return TYPE_MIN_VALUE (type);\n+}\n+\n /* Try to evaluate:\n \n *RESULT = FN (*ARG0, *ARG1)\n@@ -1886,6 +1913,9 @@ fold_const_call (combined_fn fn, tree type, tree arg0, tree arg1)\n case CFN_VEC_EXTRACT:\n return fold_const_vec_extract (type, arg0, arg1);\n \n+ case CFN_SAT_ADD:\n+ return fold_internal_fn_sat_add (type, arg0, arg1);\n+\n case CFN_UBSAN_CHECK_ADD:\n case CFN_ADD_OVERFLOW:\n subcode = PLUS_EXPR;\ndiff --git a/gcc/match.pd b/gcc/match.pd\nindex 7b652afb43d..9adc3f38989 100644\n--- a/gcc/match.pd\n+++ b/gcc/match.pd\n@@ -8738,6 +8738,17 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)\n && TYPE_UNSIGNED (TREE_TYPE (@0)))\n (cmp @1 @0))))\n \n+/* x SAT_ADD 0 == x */\n+(simplify\n+ (CFN_SAT_ADD @0 INTEGER_CST@1)\n+ (if (integer_zerop (@1))\n+ @0))\n+\n+(simplify\n+ (CFN_SAT_ADD INTEGER_CST@0 @1)\n+ (if (integer_zerop (@0))\n+ @1))\n+\n /* Optimize A - B + -1 >= A into B >= A for unsigned comparisons. */\n (for cmp (ge lt)\n (simplify\ndiff --git a/gcc/testsuite/gcc.dg/pr123826.c b/gcc/testsuite/gcc.dg/pr123826.c\nnew file mode 100644\nindex 00000000000..d6689aa91d4\n--- /dev/null\n+++ b/gcc/testsuite/gcc.dg/pr123826.c\n@@ -0,0 +1,33 @@\n+/* PR middle-end/123286 */\n+/* { dg-do compile } */\n+/* { dg-additional-options \"-O2 -fdump-tree-optimized\" } */\n+\n+#include <arm_neon.h>\n+#include <stdint.h>\n+\n+uint64_t\n+f1 (uint64_t a)\n+{\n+ uint64x1_t va;\n+ uint64x1_t vz;\n+\n+ va = vdup_n_u64 (a);\n+ vz = vdup_n_u64 (0);\n+\n+ return vqadd_u64 (va, vz)[0];\n+}\n+\n+uint64_t\n+f2 (uint64_t a)\n+{\n+ uint64x1_t va;\n+ uint64x1_t vz;\n+\n+ va = vdup_n_u64 (0);\n+ vz = vdup_n_u64 (a);\n+\n+ return vqadd_u64 (va, vz)[0];\n+}\n+\n+/* Both SAT_ADD calls should fold away. */\n+/* { dg-final { scan-tree-dump-not \"\\\\.SAT_ADD\" \"optimized\" } } */\n", "prefixes": [] }