{"id":2230785,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2230785/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/20260430041056.2722022-1-andrew.pinski@oss.qualcomm.com/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/1.1/projects/17/?format=json","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},"msgid":"<20260430041056.2722022-1-andrew.pinski@oss.qualcomm.com>","date":"2026-04-30T04:10:56","name":"match: Simplify patterns for `a != b` implies a or b is non-zero","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"af4b83163489f960bc8343041b337a94d7b01a53","submitter":{"id":91428,"url":"http://patchwork.ozlabs.org/api/1.1/people/91428/?format=json","name":"Andrew Pinski","email":"andrew.pinski@oss.qualcomm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20260430041056.2722022-1-andrew.pinski@oss.qualcomm.com/mbox/","series":[{"id":502182,"url":"http://patchwork.ozlabs.org/api/1.1/series/502182/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=502182","date":"2026-04-30T04:10:56","name":"match: Simplify patterns for `a != b` implies a or b is non-zero","version":1,"mbox":"http://patchwork.ozlabs.org/series/502182/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2230785/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2230785/checks/","tags":{},"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=kDqlLziN;\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=H3kFkeLI;\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=kDqlLziN;\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=H3kFkeLI","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.180.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 4g5gj50N2Fz1yGq\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 14:11:37 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 1077E4BB1C14\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 04:11:35 +0000 (GMT)","from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n [205.220.180.131])\n by sourceware.org (Postfix) with ESMTPS id E7DAB4BB3BE9\n for <gcc-patches@gcc.gnu.org>; Thu, 30 Apr 2026 04:11:06 +0000 (GMT)","from pps.filterd (m0279871.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63TNvTX93733909\n for <gcc-patches@gcc.gnu.org>; Thu, 30 Apr 2026 04:11:06 GMT","from mail-pl1-f199.google.com (mail-pl1-f199.google.com\n [209.85.214.199])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4duv3x8qjj-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <gcc-patches@gcc.gnu.org>; Thu, 30 Apr 2026 04:11:06 +0000 (GMT)","by mail-pl1-f199.google.com with SMTP id\n d9443c01a7336-2b2e8bba2e6so5708145ad.1\n for <gcc-patches@gcc.gnu.org>; Wed, 29 Apr 2026 21:11:05 -0700 (PDT)","from xeond2.wrightpinski.org ([98.97.39.154])\n by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2b988772e9csm37116995ad.9.2026.04.29.21.11.02\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 29 Apr 2026 21:11:02 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 1077E4BB1C14","OpenDKIM Filter v2.11.0 sourceware.org E7DAB4BB3BE9"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org E7DAB4BB3BE9","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org E7DAB4BB3BE9","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777522267; cv=none;\n b=lRbtfU4kZP+sS5hHTlQn0qVXUFOJwhPP1DlOmheasBDJ2lUCuA112ljprjkfUDdRRw0G/VgoQ7bGJc4Tch7O200H7DHeiWB6S1PlDo4ODRee0GsXIBs/1qEWDwkXHIczNtDZwPcLi7TcIeFJIn3uBOGQN36CUziWjDctiWuMBDk=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777522267; c=relaxed/simple;\n bh=oDWNS+jcisTyajj+VhE5H+prCq1X1zrl5jwp8HZFvQM=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=jfIRs1lch3MxhS/EmbpLOvv2BOkuEsL+JLi6glrY55H5PlLBKpNWO8O36ecA7tvZNMkyZUHqwAYJTEFJ3ieCqyWD+uOBprKuRK8c0xNfIp79Pqku1o6ZXDNa5VdD+o3PP31FK3geCxCsD5el9EEFguJUAcPQawUanbEQPL3JSkQ=","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=mvukag+oGlCm7dBUjzjJz8DLEeAPkPyTZ9K\n o5EcHwWQ=; b=kDqlLziN9scAAHDCXu58cFsGLCyGleEiPvo9iDtVPQfME6ZSwUf\n 09hn3GrD+4392NaNpRHX/pDmHxN1Wgjwvp44vRZ1wA58Xu0Zr57+s3q2etpwvCSf\n IDfkDuv/aY59N+tLpkZbRIEyg7UGiohcqtRcveeqcWRTbyoG2q8jsH0ejEFhZDBr\n QkA3KU8sO91EN+3wg9TEcyUKSzjDtdvFt/sYxfvlT04JtpK3wCVceD4+0+qHjskF\n H2X9EupkaYxKPaPJNFMKGM5yZZIEJO9vzFK5Q5G9n7icoCzA0VudHu4qErr+ZR2l\n PCrncfh2fjXftUDC//akCluUlm0IgRGDWQw==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1777522264; x=1778127064; 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=mvukag+oGlCm7dBUjzjJz8DLEeAPkPyTZ9Ko5EcHwWQ=;\n b=H3kFkeLIC06UBr++X3su23gqcrFw7xsapvJfUfCri2If5yteDmDiGPtPa4cUuSG4x9\n UdMR/Y2J9DHcyJuwL2ScnQl6+2HQACNInWi0D/QIRCcbdQZ8k7e7e/PkQReFirgDiWBn\n 8JiuuM+g2rJy7BfjUey/bbQRfHfkF0JIbjkkA2JVOL2L7KlSg9rIE28Pirm1PI6e2plU\n aBlCJcQuH1oKuWBkHX+STwIFkqoilinpxFFcf94AjHsK1/IWz8jOQz7zxlOrEiZXJkdt\n 4VddNlYVqOKqdN4Mk2iPThA/lXJ3UX9l5bYilF5tiFQh2A+r7/nVHqTQS/V1hr//hmlL\n mW3g=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777522264; x=1778127064;\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=mvukag+oGlCm7dBUjzjJz8DLEeAPkPyTZ9Ko5EcHwWQ=;\n b=McoGHa4IUStfhxxmeF1AT2nT7Rtyo8f4dRQVtUeIa/O5b+kArbjuKJnBnI8sAIeQ/x\n wI+EsDx4Z1iY1NCuyjYpB/wf5o6NTJXLvkzWemDQdko1FsRq3fXAppbo8XlNwgNk5rEZ\n XwxZdUPZGL8HeTiMa7yFDIV509SijRtgsXsBIdX/SlKBSKZxaZu5sw+04gOqTCNzgUbF\n i/maBhV1hFJi4AqHX5nJUpS1iX+KNIPHLS4toyRO6PiXxwVH6lA9A6za41NNbEYpqmGc\n PVx1qmE0QuYDvQ4jBMpIu92hQ8RRkEB+IK8uhWnRWm1wJBX8gRPS/tFxK166eOChrWuL\n eXgA==","X-Gm-Message-State":"AOJu0Yz57lcW07ndYI5wLFLLBI5LhZ1VmxUc1eWjz6oIkkoxmuqhYEQl\n V5NbvDF+dtPmEQ5vXHMg0v0vxZ347jAzWNutsX/GOgdjz6n0pfSUPjW89Dgd6Gu69QhDXj48GyU\n Vvh4aStHRJoPwdp3EVSUG+ufE775M8WNPs1zx69x2U6aZ4VTuMfSD2k+2becGmAIHdkfU","X-Gm-Gg":"AeBDiesGEA/9NoTGqCqBaxWZeBa/dMypMnezISDe1/91MRfA6lncWpkmdkmQlibh/fL\n JEAUl3XqwH+EUlTXNx2IVcxTX4M88o0ntbAA9iRAUELD1u9TJSBlSrl+tLFuz35Gb9XndfhcUTQ\n cM8r9HH1v9JXhl8sDJpuq3+mqnAwkO6ljAEY+OJptnN6cNnK75k8hNG0we9emiq6qZdFLvshlFs\n q15trg1fjYpCXWs/mulwGQRdcF5hsOKiHZWaqMrUZtLRJr88ZIBV63FIcdVfET9ZkrJOSB25mox\n VBqbX6CUPLu4XS8RGvHulLSRYS+4M3C1ZJ97VDNv9xRB22MntUlaGvtft0pJiJGIwOV1Y0lVB2v\n FxPxAR3hYmbZ3FEnwdZpBOtB6lqL3QZDGfE96bCj5NLSRa4QKqjr3+HjHBNA=","X-Received":["by 2002:a17:903:3b8f:b0:2b4:59d4:9a with SMTP id\n d9443c01a7336-2b9a230b352mr14099355ad.2.1777522263763;\n Wed, 29 Apr 2026 21:11:03 -0700 (PDT)","by 2002:a17:903:3b8f:b0:2b4:59d4:9a with SMTP id\n d9443c01a7336-2b9a230b352mr14099085ad.2.1777522263287;\n Wed, 29 Apr 2026 21:11:03 -0700 (PDT)"],"From":"Andrew Pinski <andrew.pinski@oss.qualcomm.com>","To":"gcc-patches@gcc.gnu.org","Cc":"Andrew Pinski <andrew.pinski@oss.qualcomm.com>","Subject":"[PATCH] match: Simplify patterns for `a != b` implies a or b is\n non-zero","Date":"Wed, 29 Apr 2026 21:10:56 -0700","Message-ID":"<20260430041056.2722022-1-andrew.pinski@oss.qualcomm.com>","X-Mailer":"git-send-email 2.43.0","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDMwMDAzOSBTYWx0ZWRfX8vxNb4yiMAPS\n LG3CvkC2Dx+TRDgcT1V2SSI4C62dn2Im8dGeMjutJFCvVYAOw4Do4wbQoVknEMU3yHCpTiO5YW/\n 1IL4StQMs2atfWKFRB9pzMa6hjzUOMVXYTSR7pEZXidXC1gCk2ovRgYWM8ncTllEp84oiiAGZzW\n WM7mnoHbMWPqtkNBFcQ/VJXhyJtpefIsMylNp/R4Nx9CuNL1czQo5IJEFeQa+4PaxgQb5yvfOmi\n QZcq1+mIQWc5hqR4nwthrvZT8VSrwEV7BsDBCpEVV+kBnUGqKQTENS051gHmBtZne31eCuruK6X\n HimXr8I6Ec+qbuKhGqoa2KXAb79GD8GyHBB28suV3Azwp5sUq904XnyFT5gZG6DBRUnDlp5aQEK\n KsxfGw9KkiV/4ddxP9fjHo7RVIMPAyxC/VY95qXzdXuEGsGYvLEsBifzNo7yMgjZGan17jlhE9L\n tre/VO4KCbyG/4EqmUA==","X-Authority-Analysis":"v=2.4 cv=Oc2oyBTY c=1 sm=1 tr=0 ts=69f2d65a cx=c_pps\n a=JL+w9abYAAE89/QcEU+0QA==:117 a=PeT0JO4ISAhwW8zcdsH4sA==:17\n a=aYUD3ZXR9-_u2nEV:21 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22\n a=EUspDBNiAAAA:8 a=cQI928NZy9K7dY8Q7gwA:9 a=324X-CrmTo6CU4MGRt3R:22","X-Proofpoint-GUID":"D-oZVArevRGJ-GqSZ6Ngz-A3S6ezQMo6","X-Proofpoint-ORIG-GUID":"D-oZVArevRGJ-GqSZ6Ngz-A3S6ezQMo6","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-30_01,2026-04-28_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n clxscore=1015 spamscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0\n impostorscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 adultscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604300039","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":"This simplified the patterns by using a for loop. Also noticed\nthat the `:c` on the inner ne/eq is not needed as it will match\nthe same canonicalization as the inner bit_ior too so removes that too.\n\nThis removes a little more 300 lines from the generated gimple-match*.cc files too.\n\nBootstrapped and tested on x86_64-linux-gnu.\n\ngcc/ChangeLog:\n\n\t* match.pd (`(a !=/== b) &\\| ((a|b) ==/!= 0)`):\n\tSimplify patterns using for loop and remove the `:c`\n\ton the inner ne/eq.\n\nSigned-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>\n---\n gcc/match.pd | 40 ++++++++++++++++++++--------------------\n 1 file changed, 20 insertions(+), 20 deletions(-)","diff":"diff --git a/gcc/match.pd b/gcc/match.pd\nindex df960a0cf29..62c43b31117 100644\n--- a/gcc/match.pd\n+++ b/gcc/match.pd\n@@ -7068,29 +7068,29 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)\n #if GIMPLE\n /* Given two integers a and b:\n    (a != b) & ((a|b) != 0) -> (a != b)\n-   (a != b) | ((a|b) != 0) -> ((a|b) != 0)\n-   (a == b) & ((a|b) == 0) -> ((a|b) == 0)\n    (a == b) | ((a|b) == 0) -> (a == b)\n+\n+   (a == b) & ((a|b) == 0) -> ((a|b) == 0)\n+   (a != b) | ((a|b) != 0) -> ((a|b) != 0)\n+\n    (a != b) & ((a|b) == 0) -> false\n    (a == b) | ((a|b) != 0) -> true  */\n-(simplify\n- (bit_and:c (ne:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))\n- (ne @0 @1))\n-(simplify\n- (bit_ior:c (ne:c @0 @1) (ne (bit_ior@2 @0 @1) integer_zerop@3))\n- (ne @2 @3))\n-(simplify\n- (bit_and:c (eq:c @0 @1) (eq (bit_ior@2 @0 @1) integer_zerop@3))\n- (eq @2 @3))\n-(simplify\n- (bit_ior:c (eq:c @0 @1) (eq (bit_ior @0 @1) integer_zerop))\n- (eq @0 @1))\n-(simplify\n- (bit_and:c (ne:c @0 @1) (eq (bit_ior @0 @1) integer_zerop))\n- { constant_boolean_node (false, type); })\n-(simplify\n- (bit_ior:c (eq:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))\n- { constant_boolean_node (true, type); })\n+(for bitop (bit_and bit_ior)\n+     neeq  (ne      eq)\n+ (simplify\n+  (bitop:c (neeq @0 @1) (neeq (bit_ior @0 @1) integer_zerop))\n+  (neeq @0 @1)))\n+(for bitop (bit_and bit_ior)\n+     neeq  (eq      ne)\n+ (simplify\n+  (bitop:c (neeq @0 @1) (neeq (bit_ior@2 @0 @1) integer_zerop@3))\n+  (neeq @2 @3)))\n+(for bitop (bit_and bit_ior)\n+     neeql (ne      eq)\n+     neeqr (eq      ne)\n+ (simplify\n+  (bitop (neeql @0 @1) (neeqr (bit_ior @0 @1) integer_zerop))\n+  { constant_boolean_node (bitop==BIT_AND_EXPR, type); }))\n #endif\n \n /* These was part of minmax phiopt.  */\n","prefixes":[]}