Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2231705/?format=api
{ "id": 2231705, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2231705/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260501091300.3061376-1-daniel.barboza@oss.qualcomm.com/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/1.1/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 }, "msgid": "<20260501091300.3061376-1-daniel.barboza@oss.qualcomm.com>", "date": "2026-05-01T09:13:00", "name": "match.pd: ((A&N)==CST1) & (((A&M)==CST2) | ((A&Q)==CST3)) [PR93150]", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "4d7e66bf88095a706998f736f8400a03cb594c31", "submitter": { "id": 92288, "url": "http://patchwork.ozlabs.org/api/1.1/people/92288/?format=api", "name": "Daniel Barboza", "email": "daniel.barboza@oss.qualcomm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260501091300.3061376-1-daniel.barboza@oss.qualcomm.com/mbox/", "series": [ { "id": 502434, "url": "http://patchwork.ozlabs.org/api/1.1/series/502434/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=502434", "date": "2026-05-01T09:13:00", "name": "match.pd: ((A&N)==CST1) & (((A&M)==CST2) | ((A&Q)==CST3)) [PR93150]", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/502434/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2231705/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2231705/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=HzkEWOH3;\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=M7Lmsgot;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.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=HzkEWOH3;\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=M7Lmsgot", "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 [38.145.34.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 4g6QPN6lrnz1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 19:15:35 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 1BEB64374209\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 1 May 2026 09:13:39 +0000 (GMT)", "from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n by sourceware.org (Postfix) with ESMTPS id BC0154374208\n for <gcc-patches@gcc.gnu.org>; Fri, 1 May 2026 09:13:09 +0000 (GMT)", "from pps.filterd (m0279862.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 6417811M2481390\n for <gcc-patches@gcc.gnu.org>; Fri, 1 May 2026 09:13:08 GMT", "from mail-dy1-f199.google.com (mail-dy1-f199.google.com\n [74.125.82.199])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dv7x6knnq-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <gcc-patches@gcc.gnu.org>; Fri, 01 May 2026 09:13:07 +0000 (GMT)", "by mail-dy1-f199.google.com with SMTP id\n 5a478bee46e88-2c0f6593ef5so2617932eec.1\n for <gcc-patches@gcc.gnu.org>; Fri, 01 May 2026 02:13:07 -0700 (PDT)", "from QCOM-UWl2o8bcGT.qualcomm.com ([191.202.237.136])\n by smtp.gmail.com with ESMTPSA id\n 5a478bee46e88-2ee3bf6812asm3710351eec.28.2026.05.01.02.13.04\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 01 May 2026 02:13:05 -0700 (PDT)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 1BEB64374209", "OpenDKIM Filter v2.11.0 sourceware.org BC0154374208" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org BC0154374208", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org BC0154374208", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777626790; cv=none;\n b=eqiBwu3hl1ywKYyLpaIvMUVzKJiJYFebRSW/pJIHKdtE+2RXseii50xWiJORJQrCWhFNEwsjVKbX+oGUAHEfUbYjlZY1HMhJnY/RHo3QoPXZxrFTC6TniSdonCe91gkLASi3FBrNmRbO1h2unwUQiujOxRcqKp+E+qaw6kXWOB4=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777626790; c=relaxed/simple;\n bh=5ouyJdywhi5405OU2n4iS72qHR0w5PVhkmMtpr1w/ms=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=srKaJd7ZacHyxNQ5ZA00lKeb+h4WANZy4tw9LluU7TLNfVD0pzk4MVXkg7vBLQapeo2TBYQYjLQwgey4GCNBJ3VV+ZEqNByx7/wlJlsT4B15hXD+bi2oHRXq5Y5P77ZtaBZD0qMrcVfD96f9oIDN1sFU72ILnESR6YnSC8MWjQI=", "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=/JqTXpv+1hNbgnRbN3fIvmd9VSG7L8ajOri\n x8o3RfJM=; b=HzkEWOH32wHrrnLGmhUf6xhfwIfDRMyev+wJ3UeUezKG6jl27RY\n 5LaLfFPwRpWST7g7MZqh/ionQsSNadYoQYVmrd+L3+Nvz+cUYZrJaAapaCaAXEY2\n zdPrzjr/YbaE48tWFLpC3gopVCZfWWYdwLsY4cqyWbeUOpQW/4dEy4G3rzfR1/G+\n 78oiJpUw1VJPfWbQr/ELCUFjV8/Tx4doJOdR7+Y7MPoQ9KGcwFdzn8xQfQD/2D7h\n kXkFQyF9FDF97HpaWXNbMoFOG/bFUJ4vBn6Yspb/aojXnWiD0e7OQltM62u91bzY\n XsZ6TREIDgbh1xW/HeiBnPzh8NK2/7MLChQ==", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1777626787; x=1778231587; 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=/JqTXpv+1hNbgnRbN3fIvmd9VSG7L8ajOrix8o3RfJM=;\n b=M7LmsgotAePJBZ9viJke4+TjrbfbLiydt3YrhIAeR/ZHuJ+r9ZpKg7TRSVYnzd/YuF\n 4+0wWMLIQGzmNKCDbQiHbq/TOC3pxL4TdRndVQvVteeMa5l5jVelnaNFG6c1do4hazWD\n C91Qg64dxy6LPvFkt4+MpuOtNjveXJ9US58d4RS+PvpewZGz3F1AS3vkxfH5h0R9vMEk\n 29h1FGSxEZbqhgJVu5ufhv/5wmljAlP9wUD51kShF9ANMivV5WpcuPYut+C0QKvkubrT\n QkWtgK6y90Q1djKphhpZR4ELQ7MrtdpST+q+n6t85BYku7jNWJrTPktCjM2gtx8PwJbS\n D7oA==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777626787; x=1778231587;\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=/JqTXpv+1hNbgnRbN3fIvmd9VSG7L8ajOrix8o3RfJM=;\n b=c2mtO45fwQ2QstX6HHw6JnetLidMeIi+rSBnR4go6IkuIFQc7dby0HwuRQ+PbDXtMr\n Rvo+1w1OgyL5OetU6Yf/t4IZfcmUk6vEvrkRV7YcbPNXLG/e01oEApLn/7SQfEic0UvZ\n PE2B7N4YskkjtOV8Wo0b//Yqjy0oCUjsFgKraW//yREjeGQ7kXhwr43qsRBXTvA8C+8Y\n HzGdqxv6ors6Vczjj4jmH1EzJ5tuNLIF4k/co05xi/qZCXfYXiX5VLusbrsa89Huo4UA\n 2dWPlBPMSVv5LeaG4XM7+quXU9sZvoSEemE1oB/EzOwf0zpOU8mgBDakJZGsBd/vdQTm\n J9lg==", "X-Gm-Message-State": "AOJu0YyIUT+s5wF/N7WWG0c6oUbFMTrNvRQLMteJ59fMQISMhWxxBVLK\n H6JXKF5H8oP1dLeUn4Cu1IV8j4YM+r0LnW7L1sKYC35u9l1jfD3m6SBEpheg4ETtBahLcXfoPyD\n mg3b79JlNMB3FxG0NKQ4OEln2RBhWsjkvRgJ53fS6ygcnG0bb3sxTYEtuM3cc6EOlDafU", "X-Gm-Gg": "AeBDiet2lsy0MqgGZcdF+vUuyvLaQYbGCxgthNC5kVUpvAOarnCEjSE9llRvRuMl/Az\n Acbgyn9y6WPYrCbsF7S1gIu+YkZx21lRSptZPedTx8e0JIdVLQ0M8i1jdT2BldqW1Kg86wYojyF\n 2yWofwJdu8PzCh24quihJYyCJ1zDpERO27QgrIG61P1G7W8GC2WuHiknNe9zllNGpddwqk3czD1\n GDAdYPUwwYxESU877Qj1tR0kIbWx298BOr7B+LESia7wOjfwhL4PBSdT6b+R8cPfWvVqb5zAqSl\n ArwHikWU+UcerZseIu75J+C/0iTarHIN0PZvwsmZ8wh8XB6xUluheFJHRiJJgvuD1w2i1NKjSna\n HC5xRNpzYPLbwj1tWbIoFpay4LuAxr71Bp7mmSVlaVvc3qL6HyKHQY1iUdQ2lhnTnS1p1n8E=", "X-Received": [ "by 2002:a05:7301:168f:b0:2c1:7793:7bbb with SMTP id\n 5a478bee46e88-2ed3e67f82dmr2994608eec.27.1777626786848;\n Fri, 01 May 2026 02:13:06 -0700 (PDT)", "by 2002:a05:7301:168f:b0:2c1:7793:7bbb with SMTP id\n 5a478bee46e88-2ed3e67f82dmr2994596eec.27.1777626786152;\n Fri, 01 May 2026 02:13:06 -0700 (PDT)" ], "From": "Daniel Barboza <daniel.barboza@oss.qualcomm.com>", "To": "gcc-patches@gcc.gnu.org", "Cc": "jeffrey.law@oss.qualcomm.com, andrew.pinski@oss.qualcomm.com,\n Daniel Barboza <daniel.barboza@oss.qualcomm.com>", "Subject": "[PATCH] match.pd: ((A&N)==CST1) & (((A&M)==CST2) | ((A&Q)==CST3))\n [PR93150]", "Date": "Fri, 1 May 2026 06:13:00 -0300", "Message-ID": "<20260501091300.3061376-1-daniel.barboza@oss.qualcomm.com>", "X-Mailer": "git-send-email 2.43.0", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Proofpoint-GUID": "0cFUNMIMhfDIR6gb1Etz6RqFwX5_EPVY", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNTAxMDA4NyBTYWx0ZWRfX2O8JKXsZzo4i\n xYd9HYm9IcGDBGSJKSTTSpBkKCFP1pdIor6Brkmr5bAtaAP48DKXV/r9kJXHC03yb8mCJq/POnd\n J19VSWxPdpF1C+WAiP1g6to5CWIDhKF7KBrUYxg4GtGJgh5654OWude2H+TZhgpN+PEQTd5CCCs\n ZhwbR6UzOxNPMdUAivRWJMfuVSoCsOlgGUN6a7oTblK12KrkRkuvO95S3hjUgdVpdO1BlKmE26V\n pNzxJxYnSuTrSBHOf2+sgVOUxxaglkYPHehJzUlD5yTEzUwzdqkvVa0q299HkXRWebDSqeISk0g\n FLJy5FlOYhMqPPO3qViF9c6mjAVMaLi5sNko0kR3e8pRkgnW4yDkulPuuiD6ZoU6NEXsTrpdzLS\n X0PpDVK/b6z1SykQn6y12ibWK1iqyMd0uCja5fessUeen6COQl9pF9ZIOgioMTSiJvfBwHMO8IW\n ABr/dOqWi+feoiMz8FQ==", "X-Authority-Analysis": "v=2.4 cv=XoTK/1F9 c=1 sm=1 tr=0 ts=69f46ea3 cx=c_pps\n a=cFYjgdjTJScbgFmBucgdfQ==:117 a=IZaa5BNpKBTNMhuJoHisKw==:17\n a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=Jwj9rLE5QSKEY8_T0R4A:9\n a=scEy_gLbYbu1JhEsrz4S:22", "X-Proofpoint-ORIG-GUID": "0cFUNMIMhfDIR6gb1Etz6RqFwX5_EPVY", "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-05-01_02,2026-04-30_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n suspectscore=0 adultscore=0 bulkscore=0 clxscore=1015 phishscore=0\n lowpriorityscore=0 malwarescore=0 impostorscore=0 spamscore=0\n priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2605010087", "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": "Distribute the operators and simplify them back to:\n\n((A & (N | M)) == (CST1|CST2)) | ((A & (N | Q) == (CST1|CST3)))\n\nAnd we'll eliminate the two IORs between constants, resulting in one\nless op. This will reduce even further if N|M|Q are also constants,\nsomething that wouldn't happen in the original pattern.\n\nThe same is valid for its DeMorgan variant:\n\n(A & N) != CST1 | (((A & M) != CST2) & ((A & Q) != CST3)) ->\n((A & (N | M)) != (CST1|CST2)) & ((A & (N | Q) != (CST1|CST3)))\n\nWe're also taking the opportunity to address the following subpatterns:\n\n((A & M) == X) & ((A & N) == Y) -> ((A & (M|N)) == (X | Y))\n((A & M) != X) | ((A & N) != Y) -> ((A & (M|N)) != (X | Y))\n\nThe two simplifications above will be advantageous even if there are\nno CSTs, giving us one less stmt in forwprop at least.\n\nBootstrapped and regression tested in x86, aarch64 and RISC-V.\n\n\tPR tree-optimization/93150\n\ngcc/ChangeLog:\n\n\t* match.pd(`((A&N)==C1)&(((A&M)==C2)|((A&Q)==C3))`): New\n\tpattern.\n\t(`((A&N)!=C1)|(((A&M)!=C2)&((A&Q)!=C3))`): New pattern.\n\t(`((A & M) == X) & ((A & N) == Y)`): New pattern.\n\t(`((A & M) != X) | ((A & N) != Y)`): New pattern.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.dg/tree-ssa/pr93150-2.c: New test.\n\t* gcc.dg/tree-ssa/pr93150.c: New test.\n---\n gcc/match.pd | 54 +++++++++++++++++++++++\n gcc/testsuite/gcc.dg/tree-ssa/pr93150-2.c | 16 +++++++\n gcc/testsuite/gcc.dg/tree-ssa/pr93150.c | 17 +++++++\n 3 files changed, 87 insertions(+)\n create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr93150-2.c\n create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr93150.c", "diff": "diff --git a/gcc/match.pd b/gcc/match.pd\nindex 7b652afb43d..32a26aa7e4e 100644\n--- a/gcc/match.pd\n+++ b/gcc/match.pd\n@@ -8388,6 +8388,60 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)\n (cmp (bit_ior:c @0 (convert? (ne @0 integer_zerop))) integer_zerop)\n (cmp @0 { build_zero_cst (TREE_TYPE (@0)); })))\n \n+/* PR93150: (A & N) == CST1 & (((A & M) == CST2) | ((A & Q) == CST3))\n+\n+ We can distribute the bitops operands and simplify them back to:\n+\n+ ((A & (N | M)) == (CST1|CST2)) | ((A & (N | Q) == (CST1|CST3)))\n+\n+ And this will get rid of the CST|CST IOR stmts, resulting in\n+ one less op in forwprop. This will also optimize even further if\n+ N, M and Q are constants, something that wouldn't happen in the\n+ original form.\n+\n+ We're also adding the DeMorgan variant. Same observations apply:\n+\n+ (A & N) != CST1 | (((A & M) != CST2) & ((A & Q) != CST3)) ->\n+ ((A & (N | M)) != (CST1|CST2)) & ((A & (N | Q) != (CST1|CST3))) */\n+(for cmp (eq ne)\n+ bitop1 (bit_and bit_ior)\n+ bitop2 (bit_ior bit_and)\n+ (simplify\n+ (bitop1\n+ (cmp (bit_and @A @N) INTEGER_CST@1)\n+ (bitop2\n+ (cmp (bit_and @A @M) INTEGER_CST@2)\n+ (cmp (bit_and @A @Q) INTEGER_CST@3)))\n+ (if (INTEGRAL_TYPE_P (TREE_TYPE (@A))\n+\t&& INTEGRAL_TYPE_P (TREE_TYPE (@N))\n+\t&& INTEGRAL_TYPE_P (TREE_TYPE (@M))\n+\t&& INTEGRAL_TYPE_P (TREE_TYPE (@Q)))\n+ (bitop2\n+ (cmp (bit_and @A (bit_ior @N @M)) (bit_ior @1 @2))\n+ (cmp (bit_and @A (bit_ior @N @Q)) (bit_ior @1 @3))))))\n+\n+/* PR93150: a subset from the previous pattern:\n+\n+ ((A & M) == X) & ((A & N) == Y) -> ((A & (M|N)) == (X | Y))\n+ DeMorgan variant:\n+ ((A & M) != X) | ((A & N) != Y) -> ((A & (M|N)) != (X | Y))\n+\n+ They are worth doing even if no CSTs are present - we'll have one\n+ less stmt in forwprop, and the transformed pattern will optimize\n+ further if CSTs are present. */\n+(for cmp (eq ne)\n+ bitop (bit_and bit_ior)\n+ (simplify\n+ (bitop\n+ (cmp (bit_and @A @M) @X)\n+ (cmp (bit_and @A @N) @Y))\n+ (if (INTEGRAL_TYPE_P (TREE_TYPE (@A))\n+\t&& INTEGRAL_TYPE_P (TREE_TYPE (@M))\n+\t&& INTEGRAL_TYPE_P (TREE_TYPE (@N))\n+\t&& INTEGRAL_TYPE_P (TREE_TYPE (@X))\n+\t&& INTEGRAL_TYPE_P (TREE_TYPE (@Y)))\n+ (cmp (bit_and @A (bit_ior @M @N)) (bit_ior @X @Y)))))\n+\n /* When the addresses are not directly of decls compare base and offset.\n This implements some remaining parts of fold_comparison address\n comparisons but still no complete part of it. Still it is good\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr93150-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr93150-2.c\nnew file mode 100644\nindex 00000000000..c11003916d4\n--- /dev/null\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr93150-2.c\n@@ -0,0 +1,16 @@\n+/* { dg-do compile } */\n+/* { dg-options \"-O1 -fdump-tree-forwprop\" } */\n+\n+unsigned foo (unsigned a)\n+{\n+ return ((a & 12) == 8) & ((a & 7) == 3);\n+}\n+\n+unsigned foo2 (unsigned a)\n+{\n+ return ((a & 12) != 8) | ((a & 7) != 3);\n+}\n+\n+/* { dg-final { scan-tree-dump-times \" & \" 2 \"forwprop1\" } } */\n+/* { dg-final { scan-tree-dump-times \" == \" 1 \"forwprop1\" } } */\n+/* { dg-final { scan-tree-dump-times \" != \" 1 \"forwprop1\" } } */\ndiff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr93150.c b/gcc/testsuite/gcc.dg/tree-ssa/pr93150.c\nnew file mode 100644\nindex 00000000000..ac60c6090d3\n--- /dev/null\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr93150.c\n@@ -0,0 +1,17 @@\n+/* { dg-do compile } */\n+/* { dg-options \"-O1 -fdump-tree-forwprop\" } */\n+\n+unsigned foo (unsigned x)\n+{\n+ return (x & 0xF) == 4 & (((x & 0xA) == 8) | ((x & 0x7) == 3));\n+}\n+\n+unsigned foo2 (unsigned x)\n+{\n+ return (x & 0xF) != 4 | (((x & 0xA) != 8) & ((x & 0x7) != 3));\n+}\n+\n+/* { dg-final { scan-tree-dump-times \" == \" 2 \"forwprop1\" } } */\n+/* { dg-final { scan-tree-dump-times \" != \" 2 \"forwprop1\" } } */\n+/* { dg-final { scan-tree-dump-times \" & \" 5 \"forwprop1\" } } */\n+/* { dg-final { scan-tree-dump-times \" \\\\| \" 1 \"forwprop1\" } } */\n", "prefixes": [] }