[{"id":3679116,"web_url":"http://patchwork.ozlabs.org/comment/3679116/","msgid":"<CALvbMcA3A_u2Upm7uA-Q_oMZyPY66AcKqG7vV9FOgy7WjFRqBQ@mail.gmail.com>","list_archive_url":null,"date":"2026-04-19T18:16:01","subject":"Re: [PATCH] cse: Validate subreg replacements [PR124643]","submitter":{"id":91428,"url":"http://patchwork.ozlabs.org/api/people/91428/","name":"Andrew Pinski","email":"andrew.pinski@oss.qualcomm.com"},"content":"On Sat, Apr 18, 2026 at 8:29 AM Richard Sandiford\n<rdsandiford@googlemail.com> wrote:\n>\n> The PR is about an ICE on sh caused by an \"invalid\" subreg.\n> cse replaced a pseudo register with the hard T register within:\n>\n>   (zero_extend:SI (subreg:QI (reg:SI pseudo) 3))\n>\n> Since this is a register-for-register replacement, cse just relied on\n> recog to reject anything that wasn't valid.\n>\n> However, if validate_subreg had been asked, it would have said that:\n>\n>   (subreg:QI (reg:SI T) 3)\n>\n> is not valid.  This means that even simplify_gen_subreg would have\n> refused to generate it.\n>\n> In that sense, cse should not even be trying to match this replacement.\n> It's not recog's job to reject all invalid rtl.  recog is just supposed\n> to say whether the machine supports a given piece of valid rtl.\n>\n> In this particular case, the sh port does specifically match:\n>\n>   (zero_extend:SI (subreg:QI (reg:SI T) 3))\n>\n> even though, by forbidding T from having QImode, the port also\n> effectively forbids the subreg.  See the discussion in the PR trail\n> about that.  But I think the point still stands that cse should verify\n> the subregs that it creates.  It should also try to simplify them down\n> to hard registers where possible.\n>\n> I suppose a more complete fix would be to rewrite canon_reg to use a\n> helper that recursively replaces and simplifies, but that seems somewhat\n> dangerous at this stage.  The scope for non-subreg simplification should\n> also be pretty limited in practice.\n>\n> Tested on x86_64-linux-gnu, powerpc64le-linux-gnu and aarch64-linux-gnu.\n> OK to install?\n\nOk.\n\n>\n> Richard\n>\n>\n> gcc/\n>         PR rtl-optimization/124643\n>         * cse.cc (canon_reg): Handle and canonicalize subregs.\n>\n> gcc/testsuite/\n>         PR rtl-optimization/124643\n>         * gcc.c-torture/compile/pr124643.c: New test.\n> ---\n>  gcc/cse.cc                                     | 18 ++++++++++++++++++\n>  gcc/testsuite/gcc.c-torture/compile/pr124643.c |  8 ++++++++\n>  2 files changed, 26 insertions(+)\n>  create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr124643.c\n>\n> diff --git a/gcc/cse.cc b/gcc/cse.cc\n> index e5fa88f9de5..25b2bf500a9 100644\n> --- a/gcc/cse.cc\n> +++ b/gcc/cse.cc\n> @@ -2847,6 +2847,24 @@ canon_reg (rtx x, rtx_insn *insn)\n>      case ADDR_DIFF_VEC:\n>        return x;\n>\n> +    case SUBREG:\n> +      {\n> +       rtx inner = canon_reg (SUBREG_REG (x), insn);\n> +       if (inner != SUBREG_REG (x))\n> +         {\n> +           rtx newx = simplify_subreg (GET_MODE (x), inner,\n> +                                       GET_MODE (SUBREG_REG (x)),\n> +                                       SUBREG_BYTE (x));\n> +           if (newx)\n> +             return newx;\n> +\n> +           if (validate_subreg (GET_MODE (x), GET_MODE (inner),\n> +                                inner, SUBREG_BYTE (x)))\n> +             validate_change (insn, &SUBREG_REG (x), inner, 1);\n> +         }\n> +       return x;\n> +      }\n> +\n>      case REG:\n>        {\n>         int first;\n> diff --git a/gcc/testsuite/gcc.c-torture/compile/pr124643.c b/gcc/testsuite/gcc.c-torture/compile/pr124643.c\n> new file mode 100644\n> index 00000000000..f3f12bef11e\n> --- /dev/null\n> +++ b/gcc/testsuite/gcc.c-torture/compile/pr124643.c\n> @@ -0,0 +1,8 @@\n> +int a;\n> +char *b;\n> +void c(int a) {\n> +  int d = (a & 2) != 0 && a & 1;\n> +  for (;;)\n> +    if (a)\n> +      b[1 ^ d] = b[d];\n> +}\n> --\n> 2.53.0\n>","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=nZhc4PGy;\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=hGmZmRHs;\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=nZhc4PGy;\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=hGmZmRHs","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=pass smtp.remote-ip=205.220.180.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 4fzGzS1XR9z1yD4\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 20 Apr 2026 04:16:49 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 7B91F4AADCF5\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 19 Apr 2026 18:16:47 +0000 (GMT)","from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n [205.220.180.131])\n by sourceware.org (Postfix) with ESMTPS id 744BE4BA9000\n for <gcc-patches@gcc.gnu.org>; Sun, 19 Apr 2026 18:16:17 +0000 (GMT)","from pps.filterd (m0279870.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63J2tWEV4114639\n for <gcc-patches@gcc.gnu.org>; Sun, 19 Apr 2026 18:16:15 GMT","from mail-dl1-f69.google.com (mail-dl1-f69.google.com\n [74.125.82.69])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dm21ujydx-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <gcc-patches@gcc.gnu.org>; Sun, 19 Apr 2026 18:16:14 +0000 (GMT)","by mail-dl1-f69.google.com with SMTP id\n a92af1059eb24-127876be621so2109528c88.1\n for <gcc-patches@gcc.gnu.org>; Sun, 19 Apr 2026 11:16:14 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 7B91F4AADCF5","OpenDKIM Filter v2.11.0 sourceware.org 744BE4BA9000"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 744BE4BA9000","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 744BE4BA9000","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1776622577; cv=pass;\n b=e+n1Gr+bPGF0zvnbuC/CwOOQAz+yTj8wLOIND0uh74IfLZUUtud72eq5jSCfGqqrunCJed6oKQMwnNpQbbEblZheIVtlnUOjMQOIoqbYaHzmNFZmafif7V/tuZvcmOZT3ZgOBwvhH4rTISm6EdJ50NOnHCjdhUZNuXCBIS6s8IM=","i=1; a=rsa-sha256; t=1776622573; cv=none;\n d=google.com; s=arc-20240605;\n b=QWPe1hVNNkI1qsMoYoSG9Qgn7rAr7kAmJ0TUa2nZaT1iCVWeNr61qlPOq3evZS40Yv\n RFo/F1WlCLJid3viVQnsDwURGcTXnCTvYnMiJXmNF5rdY9D2m6kZaIjTfh7TbvPsu9za\n yl8IFEJyGG/2W35CgcoU6QaAfqXZ622Ff9QiukiJ9eblEHHGZMm9nWtb9kj6WKWRKsB4\n 1kJbBb9zKSLcCLpPbdCfUkbkMLUng4l6E9KxQ+cvEj3JL9fChM14gs1QXe2N7iZ/OcII\n iWIVGSSa96wN6FX7NG0FOIDCzqN4oiv8bChFknPyBXiahf6Pc1hT+cySCuj2Ri9fzD7h\n Ry2Q=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776622577; c=relaxed/simple;\n bh=P/ZMLkfc8Qz2a8bJUGWmhNWSOkPGTyuvqQPu2SoKf7E=;\n h=DKIM-Signature:DKIM-Signature:MIME-Version:From:Date:Message-ID:\n Subject:To;\n b=IKXLyfDSd3XymIpIqWMuv3TQ5u1XytmuVeqymixFZOSJTl9XKEUWb/+C6e4V4Emy0guLi2r5UyCYBKMT6IJwSt+7+FyCLAvlEMPB0iJq2F/8Ydujpy8DGEF/D3wNheUsfBUCOSc45AOcwHNeH6QseNs6yIWHveLiEq+rcXE78QM=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=RQB1ifdA1XY73w+xL3xtus3R24IgsR6ykIWA+oSzlQw=;\n fh=BytbYLX+6uIUOas5zh8Tvo4Et2WPSYkBs3DtHYX2z14=;\n b=j1zUQoUWGna5d8sjK/i+tyXdZ+hkpN0KuuKnzdGYNke5O5zwv0M0zgkhpJuBmzmAi+\n 5BWu7ipLc7Zopk15UKtQvNVfrjT5ZUJpdW6p11hvp6AmIt8a7bifSEGuxiNOfdr7PL2w\n OzmkXEZmpGZ44oixouKNSgVxVJdpSfYT+rS30MfSIf2NYvGQunVmXJNP+jvWBMAAYjh8\n FLQcccUYy3olPRYw5dipm3O0QiCA5AtLuhHGFY6rPOrXRLnXRf1V6ZU9kyIT0fFWxM/h\n YBYOGk9Te44uRdMim380o0ayTj7kRGFKe1awYhsVhMcz/dkFUIU2uQJOqP5T7pUr3P2J\n Sbow==; darn=gcc.gnu.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n RQB1ifdA1XY73w+xL3xtus3R24IgsR6ykIWA+oSzlQw=; b=nZhc4PGyxICC4BZF\n GofkybRvhzLfOZ4PpDQhrCJtLreXf0qYRZcOCUzAP13wKwsVHy5MRfdG5nzXCWkD\n IEaracjeqmCi7i99Z5vFNO1Na8oplu9I0bjsNDnHlKnsTAiVYl6qJxsU2KG7/npW\n 5qIr6iL9LBqwhQJ6SmFsuBbuE3NW+j+0sYBhfoOrqpVBv8DoDLYbNNNBwdmLDKB5\n 3g0/D3p37/jeWIt4ggJ11jFplSSmLbN8ltDNQsgmHJmx9RHaCNqQ0jidYM41mLbv\n psSjLJVp+0s6Yp10+jqbHsQwWhJ5FOe+0ofdY+Byusb78eRzOA5e0a35+uWnFF5F\n kizxXg==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1776622573; x=1777227373; darn=gcc.gnu.org;\n h=content-transfer-encoding:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=RQB1ifdA1XY73w+xL3xtus3R24IgsR6ykIWA+oSzlQw=;\n b=hGmZmRHswIAeFIaCYQCaBd680MkGt5kn/C0Zf4JAGkMbPNGFi1gcjPkBS6GQCTnU0L\n y9bYFNA/CoH8eTaJg+70JE9rECdv+Md0pfTLZZpj359tmUZNdd+L8P6aCUlwkmn6/Mlo\n E/A2K6j2n4jdlX14xNimMFiiryysTTe36tI8oTXpWDAlpVQSq/vjWpEm9JpIfxgym1QD\n vCXdu+6g7j/2U00QowKZbuj7CQaoEdWiXY6fuQmJP1Z3D72KnBQgygYpnRwB0DA9cxgF\n tNT2QDitBMcZNrkG/ZauXALldQGZABADUy1KnG6D/QzGshNFCPqOpxsN3pjULrTAGaxr\n z4sw=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776622573; x=1777227373;\n h=content-transfer-encoding:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=RQB1ifdA1XY73w+xL3xtus3R24IgsR6ykIWA+oSzlQw=;\n b=YuXoqK1lPXPG++Qfw76AL2bAt2TSPPDuQpF/75UnGx61zeaI60s06d3PIWPBzmVZ03\n 9XjuE/XseIEal2BRigNyqHyimr/zdBikqzx7cd1J2CyRNhDKHWa0jzBKTcPNOAyV6kiu\n kL/AcjlLzCvKuTOIuR52rnUOXkztkFavSrmg+q+D9+0CLU1aOvJ2arufh+dpvUPJhRAP\n XbHzPtOoRTARWHjKtMKUhjr80fVMPV6ephh9CQOSd/6uMkJtjcWmc48/tlJddQwSM5ij\n RZwdpHNkkFIPACaATG3QqGWBQT+uDKylwSx/MFr4YuD+EO40WdZksmpo5u4vNgTyPzyd\n XfVQ==","X-Gm-Message-State":"AOJu0Yw7IDqUhAXwQHboEhRw1nPyZHKUSJMf5ZzUe/WnIuE07Q2yuRyJ\n 6C618SrpT2nxoWBaB3DGJ6c1ktvT5bmuOhbIy+TU7AZ7G1IRywhCpdNz0L9eyBT+ECEFe4SKjjT\n vbSTORe/JYy7d9U0dT7YkHoiX046ZwWUSJzMZNthHdyN2b9j8blldHBeKZvHgA/eT9TNse5e9gq\n jfFsUqqQWNWUcLLnBSI0vdbSejEEOaeU1Ks8NHHKnEaW0=","X-Gm-Gg":"AeBDietTGtBGQUXSNbRZRz3SctiPMM0oyZqOVRIZ8L9Naf0d2v7Mj0H4eJqZ0FGDOr4\n LiNC7SNlkUY62Tm/GIwXZmf/IiKXB4GroQh78ibnMSvPgJcm+syS4wTc11tqD6+D44+tOw1+x9x\n RKoMSgeSrNFyTQRbZBusm0ewTe27T6ibdvh06ZEGdh9SGRgEYEQHpCsRKp3LfDggizTF6Gdjtjp\n fzj4Nm3/yZm","X-Received":["by 2002:a05:7022:6181:b0:12b:fd86:b443 with SMTP id\n a92af1059eb24-12c73afa6a5mr3945944c88.7.1776622573358;\n Sun, 19 Apr 2026 11:16:13 -0700 (PDT)","by 2002:a05:7022:6181:b0:12b:fd86:b443 with SMTP id\n a92af1059eb24-12c73afa6a5mr3945931c88.7.1776622572777; Sun, 19 Apr 2026\n 11:16:12 -0700 (PDT)"],"MIME-Version":"1.0","References":"<87bjfgqodm.fsf@googlemail.com>","In-Reply-To":"<87bjfgqodm.fsf@googlemail.com>","From":"Andrew Pinski <andrew.pinski@oss.qualcomm.com>","Date":"Sun, 19 Apr 2026 11:16:01 -0700","X-Gm-Features":"AQROBzAzoBmiz__TFQLRSOpooIlkgWjPUGxG5kZtbX8SMt6DuNEpzqedWkPlnWI","Message-ID":"\n <CALvbMcA3A_u2Upm7uA-Q_oMZyPY66AcKqG7vV9FOgy7WjFRqBQ@mail.gmail.com>","Subject":"Re: [PATCH] cse: Validate subreg replacements [PR124643]","To":"gcc-patches@gcc.gnu.org, rdsandiford@googlemail.com","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDE5MDE5NiBTYWx0ZWRfX3NuCgkHSkPYq\n +t/oRz4C5m+ihaUrt5AqwQW5/5rRwH73Fvx42F0NmP/paAGeGainqjVOYLz/YP4ddcBdFX/praD\n Bne+TgTWRm5T54PQ5F+tgm/puhF+v02luLhaz6Yic55pWDS68Ac5okejt6hfxOaarN0uqfeNDTg\n tKSApLqf0HsHF9FSZ3pq0m3rCID5NSO1/Jdpry+jF6EcJ3YydxtmZgQhRoQXOgEYgRWCb+MRiMZ\n FrDqlV/lBLlpT3OjzxtDYW+zNwRo4yL6JkLPxRosvzfZJmhoerh6AMXwHbrqYuf499foSJ8sHki\n 597iCklzxJ9NdWKmCLzhGBVM7d111oSzgLtQo2sKw4sUkV6CRp65B70cPNVNu0tczMr9pzdnFcY\n Na0hatcYNl7kTWYIKvT6hQ2anKx+XDXCSNeSYEWgrt6aEfdpbf2Sy/QcAXbPPN3KJL4TGjP/PiH\n H5klPMp0J/coHk47FIA==","X-Proofpoint-GUID":"8CCHvs7gdKczb6WHaLSP5VaToT9_YojX","X-Proofpoint-ORIG-GUID":"8CCHvs7gdKczb6WHaLSP5VaToT9_YojX","X-Authority-Analysis":"v=2.4 cv=WK1PmHsR c=1 sm=1 tr=0 ts=69e51bee cx=c_pps\n a=kVLUcbK0zfr7ocalXnG1qA==:117 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10\n a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22\n a=gowsoOTTUOVcmtlkKump:22 a=mK_AVkanAAAA:8 a=ydEF1PCjQ7yaaEIpjhsA:9\n a=QEXdDO2ut3YA:10 a=vr4QvYf-bLy2KjpDp97w:22 a=3gWm3jAn84ENXaBijsEo: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-19_05,2026-04-17_04,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n lowpriorityscore=0 adultscore=0 spamscore=0 malwarescore=0 bulkscore=0\n suspectscore=0 phishscore=0 clxscore=1015 priorityscore=1501 impostorscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604190196","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"}}]