[{"id":3683856,"web_url":"http://patchwork.ozlabs.org/comment/3683856/","msgid":"<4166p42q-26sn-pqsp-8q8n-3n0s9104943p@fhfr.qr>","list_archive_url":null,"date":"2026-04-29T07:29:38","subject":"Re: [PATCH] bitintlower: Padding bit fixes, part 6 [PR123635]","submitter":{"id":4338,"url":"http://patchwork.ozlabs.org/api/people/4338/","name":"Richard Biener","email":"rguenther@suse.de"},"content":"On Wed, 29 Apr 2026, Jakub Jelinek wrote:\n\n> Hi!\n> \n> I've missed torture/bitint-{93,94}.c FAILs on s390x-linux (i.e. big endian).\n> For __builtin_mul_overflow, the code to extend the partial most significant\n> limb is done before memmoving it down, so that limb actually isn't on big\n> endian at offset 0 but is nelts - obj_nelts.  The following patch computes\n> obj_nelts first, uses it on big-endian and so that the offset checking\n> asserts don't trigger, on big-endian also uses NULL_TREE first argument to\n> limb_access.\n> \n> Bootstrapped/regtested on x86_64-linux, i686-linux, powerpc64le-linux,\n> aarch64-linux and s390x-linux, ok for trunk and 16.2?\n\nOK\n\n> 2026-04-29  Jakub Jelinek  <jakub@redhat.com>\n> \n> \tPR middle-end/123635\n> \t* gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):\n> \tMove obj_nelts/atype computation before bitint_extended handling.  For\n> \tbitint_big_endian in the bitint_extended handling use size_zero_node\n> \tonly for limb_access_type calls, otherwise use\n> \tsize_int (nelts - obj_nelts) and pass NULL_TREE as first argument to\n> \tlimb_access calls.\n> \n> --- gcc/gimple-lower-bitint.cc.jj\t2026-04-24 14:36:20.686912090 +0200\n> +++ gcc/gimple-lower-bitint.cc\t2026-04-28 16:58:30.724938682 +0200\n> @@ -4478,6 +4478,13 @@ bitint_large_huge::finish_arith_overflow\n>      {\n>        unsigned HOST_WIDE_INT obj_nelts = 0;\n>        tree atype = NULL_TREE;\n> +      if (obj)\n> +\t{\n> +\t  obj_nelts = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (obj))) / limb_prec;\n> +\t  if (orig_obj == NULL_TREE)\n> +\t    obj_nelts >>= 1;\n> +\t  atype = build_array_type_nelts (m_limb_type, obj_nelts);\n> +\t}\n>        if (bitint_extended && (var || obj))\n>  \t{\n>  \t  unsigned prec = TYPE_PRECISION (type);\n> @@ -4492,9 +4499,13 @@ bitint_large_huge::finish_arith_overflow\n>  \t  if ((code == MULT_EXPR && (prec % limb_prec) != 0)\n>  \t      || (ext_ms_limb && !TYPE_UNSIGNED (type)))\n>  \t    {\n> -\t      tree plm1idx = size_int (bitint_big_endian ? 0 : prec_limbs - 1);\n> -\t      tree plm1type = limb_access_type (type, plm1idx);\n> -\t      tree l = limb_access (type, var ? var : obj, plm1idx, true);\n> +\t      tree plm1idx = size_int (bitint_big_endian\n> +\t\t\t\t       ? nelts - obj_nelts : prec_limbs - 1);\n> +\t      tree plm1type\n> +\t\t= limb_access_type (type, bitint_big_endian\n> +\t\t\t\t\t  ? size_zero_node : plm1idx);\n> +\t      tree l = limb_access (bitint_big_endian ? NULL_TREE : type,\n> +\t\t\t\t    var ? var : obj, plm1idx, true);\n>  \t      tree rhs = make_ssa_name (TREE_TYPE (l));\n>  \t      g = gimple_build_assign (rhs, l);\n>  \t      insert_before (g);\n> @@ -4505,7 +4516,8 @@ bitint_large_huge::finish_arith_overflow\n>  \t\t  if (!useless_type_conversion_p (TREE_TYPE (l),\n>  \t\t\t\t\t\t  TREE_TYPE (rhs)))\n>  \t\t    rhs = add_cast (TREE_TYPE (l), rhs);\n> -\t\t  l = limb_access (type, var ? var : obj, plm1idx, true);\n> +\t\t  l = limb_access (bitint_big_endian ? NULL_TREE : type,\n> +\t\t\t\t   var ? var : obj, plm1idx, true);\n>  \t\t  g = gimple_build_assign (l, rhs);\n>  \t\t  insert_before (g);\n>  \t\t}\n> @@ -4537,13 +4549,6 @@ bitint_large_huge::finish_arith_overflow\n>  \t      insert_before (g);\n>  \t    }\n>  \t}\n> -      if (obj)\n> -\t{\n> -\t  obj_nelts = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (obj))) / limb_prec;\n> -\t  if (orig_obj == NULL_TREE)\n> -\t    obj_nelts >>= 1;\n> -\t  atype = build_array_type_nelts (m_limb_type, obj_nelts);\n> -\t}\n>        if (var && obj)\n>  \t{\n>  \t  tree v1, v2;\n> \n> \tJakub\n> \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 (1024-bit key;\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=wt6p6Irp;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=zZu1ZUrt;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=wt6p6Irp;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=zZu1ZUrt;\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 (1024-bit key,\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=wt6p6Irp;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=zZu1ZUrt;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=wt6p6Irp;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=zZu1ZUrt","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=suse.de","sourceware.org; spf=pass smtp.mailfrom=suse.de","server2.sourceware.org;\n arc=none smtp.remote-ip=195.135.223.130","smtp-out1.suse.de;\n\tnone"],"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 4g588j28lnz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 17:30:13 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 4E5664BB3BFC\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 07:30:11 +0000 (GMT)","from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])\n by sourceware.org (Postfix) with ESMTPS id 5F4784BB1C07\n for <gcc-patches@gcc.gnu.org>; Wed, 29 Apr 2026 07:29:39 +0000 (GMT)","from murzim.nue2.suse.org (unknown [10.168.4.243])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-out1.suse.de (Postfix) with ESMTPS id 55CC26A7FC;\n Wed, 29 Apr 2026 07:29:38 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 4E5664BB3BFC","OpenDKIM Filter v2.11.0 sourceware.org 5F4784BB1C07"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 5F4784BB1C07","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 5F4784BB1C07","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777447779; cv=none;\n b=a9KBefd9ayog3TmgnemT4dl3XpOKkZK+67psPC89dp+St31YLbb+GwxGIhr9qQyApIufNFzP18HRvoWh74mJ0s4nmSWx/3Zb9V9N1g6e9MCpSvnPLOUW2klQZLjk9LPYORnUgVZV1P4RZi9hqV2UYoarAhENZXZLhUT+me1dr9o=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777447779; c=relaxed/simple;\n bh=Hj+oUQgkGhAftQCUVpC/bsY4d7p4nRvY97PrcXhahj4=;\n h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date:\n From:To:Subject:Message-ID:MIME-Version;\n b=o87nag3ZUi9dCr/PL0Dor3QLMmRGsXQSu6YRKaKYl7yUzQ2wgno7+AS0MzxwsW1cGzzxVYigtq0wT+6eJRHhn8iH90cMKVf/deDtIh/UH94gCRlhe5kn4SRF7MyvyeAjiZDBTq92Pd0FEuxbu7u/MmyDU4ArXyBq+s+nMl185J8=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1777447778;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HMRGbbn/IwPQLt7lQI1EwKtGdtkQiRI0e9uZTPaC9IY=;\n b=wt6p6IrpViwhr9UXgaXkuAtwHJ2WATwYZA0uhP/MkAQY5TqI4eMUaHu+sQQ9l7lw+Ttqcj\n cCfe/Lh8toA4OCVocdCmGpe+0aPusr6acNB/cOB4iyZvId2rc8cCFWKgHPXHgIRzcxs2Gn\n t0PBrLqqGAs1eDCWubbx3tTFsy6e9jE=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777447778;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HMRGbbn/IwPQLt7lQI1EwKtGdtkQiRI0e9uZTPaC9IY=;\n b=zZu1ZUrtXGyLL8Rz+ymMMvWtNiL7B1fwJPVg0eOKuFWj3Y4MNGjBUaNe5Yk4ub+HuALF6P\n t1Bxyc4wuv9iLFDA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1777447778;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HMRGbbn/IwPQLt7lQI1EwKtGdtkQiRI0e9uZTPaC9IY=;\n b=wt6p6IrpViwhr9UXgaXkuAtwHJ2WATwYZA0uhP/MkAQY5TqI4eMUaHu+sQQ9l7lw+Ttqcj\n cCfe/Lh8toA4OCVocdCmGpe+0aPusr6acNB/cOB4iyZvId2rc8cCFWKgHPXHgIRzcxs2Gn\n t0PBrLqqGAs1eDCWubbx3tTFsy6e9jE=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777447778;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=HMRGbbn/IwPQLt7lQI1EwKtGdtkQiRI0e9uZTPaC9IY=;\n b=zZu1ZUrtXGyLL8Rz+ymMMvWtNiL7B1fwJPVg0eOKuFWj3Y4MNGjBUaNe5Yk4ub+HuALF6P\n t1Bxyc4wuv9iLFDA=="],"Date":"Wed, 29 Apr 2026 09:29:38 +0200 (CEST)","From":"Richard Biener <rguenther@suse.de>","To":"Jakub Jelinek <jakub@redhat.com>","cc":"gcc-patches@gcc.gnu.org","Subject":"Re: [PATCH] bitintlower: Padding bit fixes, part 6 [PR123635]","In-Reply-To":"<afGiA9mbF4L3VzTH@tucnak>","Message-ID":"<4166p42q-26sn-pqsp-8q8n-3n0s9104943p@fhfr.qr>","References":"<afGiA9mbF4L3VzTH@tucnak>","MIME-Version":"1.0","Content-Type":"text/plain; charset=US-ASCII","X-Spamd-Result":"default: False [-4.30 / 50.00]; BAYES_HAM(-3.00)[100.00%];\n NEURAL_HAM_LONG(-1.00)[-1.000];\n NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain];\n MISSING_XM_UA(0.00)[]; FROM_HAS_DN(0.00)[];\n MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[];\n FUZZY_RATELIMITED(0.00)[rspamd.com]; RCPT_COUNT_TWO(0.00)[2];\n TO_DN_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[];\n RCVD_COUNT_ZERO(0.00)[0]; TO_MATCH_ENVRCPT_ALL(0.00)[];\n DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email,fhfr.qr:mid]","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"}}]