[{"id":3681789,"web_url":"http://patchwork.ozlabs.org/comment/3681789/","msgid":"<s9r66s83-o373-0spn-9p4r-2qoo5n50s1s1@fhfr.qr>","list_archive_url":null,"date":"2026-04-24T06:33:47","subject":"Re: [PATCH] bitintlower: Padding bit fixes, part 5 [PR123635]","submitter":{"id":4338,"url":"http://patchwork.ozlabs.org/api/people/4338/","name":"Richard Biener","email":"rguenther@suse.de"},"content":"On Fri, 24 Apr 2026, Jakub Jelinek wrote:\n\n> Hi!\n> \n> The following patch is hopefully the last missing part of the _BitInt\n> bitint_extended padding bit fixes, this time for\n> __builtin_{add,sub,mul}_overflow.  For __builtin_{add,sub}_overflow,\n> the extension in the padding bits of a partial limb (if any) is already\n> done in some cases during the handling of the limbs (and the last\n> hunk in gimple-lower-bitint.cc just adds it to one spot where it was\n> missing).  The extension in the padding bits of a full limb of padding\n> bits (if any) and for __builtin_mul_overflow partial limb too is done\n> in finish_arith_overflow.  If both var and obj are NULL, it is\n> __builtin_*_overflow_p or __builtin_*_overflow that ignores the result\n> of the operation and only cares about whether it overflowed or not; in\n> that case there is nothing to extend.\n> \n> Bootstrapped/regtested on x86_64-linux and i686-linux, built and regtested\n> on aarch64-linux and tested with\n> make -j8 -k check-gcc GCC_TEST_RUN_EXPENSIVE=1 RUNTESTFLAGS=\"GCC_TEST_RUN_EXPENSIVE=1 dg.exp='*bitint* pr112673.c builtin-stdc-bit-*.c pr112566-2.c pr112511.c pr116588.c pr116003.c pr113693.c pr113602.c flex-array-counted-by-7.c' dg-torture.exp='*bitint* pr116480-2.c pr114312.c pr114121.c' dfp.exp=*bitint* vect.exp='vect-early-break_99-pr113287.c' tree-ssa.exp=pr113735.c\"\n> on riscv64-linux, ok for trunk and 16.2?\n\nOK.\n\nThanks,\nRichard.\n\n> 2026-04-24  Jakub Jelinek  <jakub@redhat.com>\n> \n> \tPR middle-end/123635\n> \tPR tree-optimization/124988\n> \t* gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):\n> \tHandle bitint_extend.\n> \t(bitint_large_huge::lower_addsub_overflow): Fix up comment spelling.\n> \tFor bitint_extended extend the partial limb if any.\n> \n> \t* gcc.dg/torture/bitint-91.c: New test.\n> \t* gcc.dg/torture/bitint-92.c: New test.\n> \t* gcc.dg/torture/bitint-93.c: New test.\n> \t* gcc.dg/torture/bitint-94.c: New test.\n> \t* gcc.dg/torture/bitint-95.c: New test.\n> \n> --- gcc/gimple-lower-bitint.cc.jj\t2026-04-21 11:51:08.577310657 +0200\n> +++ gcc/gimple-lower-bitint.cc\t2026-04-23 14:19:04.286181193 +0200\n> @@ -4478,6 +4478,65 @@ bitint_large_huge::finish_arith_overflow\n>      {\n>        unsigned HOST_WIDE_INT obj_nelts = 0;\n>        tree atype = NULL_TREE;\n> +      if (bitint_extended && (var || obj))\n> +\t{\n> +\t  unsigned prec = TYPE_PRECISION (type);\n> +\t  unsigned prec_limbs = CEIL (prec, limb_prec);\n> +\t  bool ext_ms_limb\n> +\t    = (bitint_extended == bitint_ext_full\n> +\t       && abi_limb_prec > limb_prec\n> +\t       && (CEIL (prec, abi_limb_prec) * abi_limb_prec\n> +\t\t   > CEIL (prec, limb_prec) * limb_prec));\n> +\t  /* For .{ADD,SUB}_OVERFLOW the partial limb if any is\n> +\t     already extended in lower_addsub_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 rhs = make_ssa_name (TREE_TYPE (l));\n> +\t      g = gimple_build_assign (rhs, l);\n> +\t      insert_before (g);\n> +\t      if (code == MULT_EXPR && (prec % limb_prec) != 0)\n> +\t\t{\n> +\t\t  if (!useless_type_conversion_p (plm1type, TREE_TYPE (rhs)))\n> +\t\t    rhs = add_cast (plm1type, rhs);\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  g = gimple_build_assign (l, rhs);\n> +\t\t  insert_before (g);\n> +\t\t}\n> +\t      if (ext_ms_limb && !TYPE_UNSIGNED (type))\n> +\t\t{\n> +\t\t  rhs = add_cast (signed_type_for (m_limb_type), rhs);\n> +\t\t  tree lpm1 = build_int_cst (unsigned_type_node,\n> +\t\t\t\t\t     limb_prec - 1);\n> +\t\t  tree v = make_ssa_name (TREE_TYPE (rhs));\n> +\t\t  g = gimple_build_assign (v, RSHIFT_EXPR, rhs, lpm1);\n> +\t\t  insert_before (g);\n> +\t\t  unsigned int i\n> +\t\t    = CEIL (prec, abi_limb_prec) * abi_limb_prec / limb_prec;\n> +\t\t  v = add_cast (m_limb_type, v);\n> +\t\t  g = gimple_build_assign (limb_access (type, var ? var : obj,\n> +\t\t\t\t\t\t\tsize_int (i - 1),\n> +\t\t\t\t\t\t\ttrue), v);\n> +\t\t  insert_before (g);\n> +\t\t  ext_ms_limb = false;\n> +\t\t}\n> +\t    }\n> +\t  if (ext_ms_limb)\n> +\t    {\n> +\t      unsigned int i\n> +\t\t= CEIL (prec, abi_limb_prec) * abi_limb_prec / limb_prec;\n> +\t      g = gimple_build_assign (limb_access (type, var ? var : obj,\n> +\t\t\t\t\t\t    size_int (i - 1), true),\n> +\t\t\t\t       build_zero_cst (m_limb_type));\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> @@ -4673,7 +4732,7 @@ bitint_large_huge::lower_addsub_overflow\n>    int prec0 = range_to_prec (arg0, stmt);\n>    int prec1 = range_to_prec (arg1, stmt);\n>    /* If PREC0 >= 0 && PREC1 >= 0 and CODE is not MINUS_EXPR, PREC2 is\n> -     the be minimum unsigned precision of any possible operation's\n> +     the minimum unsigned precision of any possible operation's\n>       result, otherwise it is minimum signed precision.\n>       Some examples:\n>       If PREC0 or PREC1 is 8, it means that argument is [0, 0xff],\n> @@ -5149,6 +5208,12 @@ bitint_large_huge::lower_addsub_overflow\n>  \t\t    }\n>  \t\t}\n>  \t      tree l = limb_access (type, var ? var : obj, idxl, true);\n> +\t      if (bitint_extended && tree_fits_uhwi_p (idxl))\n> +\t\t{\n> +\t\t  tree atype = limb_access_type (type, idxl);\n> +\t\t  if (!useless_type_conversion_p (atype, TREE_TYPE (rhs)))\n> +\t\t    rhs = add_cast (atype, rhs);\n> +\t\t}\n>  \t      if (!useless_type_conversion_p (TREE_TYPE (l), TREE_TYPE (rhs)))\n>  \t\trhs = add_cast (TREE_TYPE (l), rhs);\n>  \t      g = gimple_build_assign (l, rhs);\n> --- gcc/testsuite/gcc.dg/torture/bitint-91.c.jj\t2026-04-23 12:23:26.844248848 +0200\n> +++ gcc/testsuite/gcc.dg/torture/bitint-91.c\t2026-04-23 14:17:44.470514400 +0200\n> @@ -0,0 +1,140 @@\n> +/* PR middle-end/123635 */\n> +/* { dg-do run { target bitint } } */\n> +/* { dg-options \"-std=c23 -pedantic-errors\" } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests }  { \"*\" } { \"-O0\" \"-O2\" } } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests } { \"-flto\" } { \"\" } } */\n> +\n> +#if __BITINT_MAXWIDTH__ >= 513\n> +_BitInt(513) a, b, c, d;\n> +unsigned _BitInt(513) e, f, g, h;\n> +#endif\n> +\n> +#include \"../bitintext.h\"\n> +\n> +#if __BITINT_MAXWIDTH__ >= 513\n> +[[gnu::noipa]] bool\n> +f1 (_BitInt(513) q, _BitInt(513) r, _BitInt(513) s, _BitInt(513) t,\n> +    _BitInt(513) u, _BitInt(513) v, _BitInt(513) w, _BitInt(513) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_add_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_sub_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_sub_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f2 (unsigned _BitInt(513) q, unsigned _BitInt(513) r, unsigned _BitInt(513) s,\n> +    unsigned _BitInt(513) t, unsigned _BitInt(513) u, unsigned _BitInt(513) v,\n> +    unsigned _BitInt(513) w, unsigned _BitInt(513) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_add_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_sub_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_sub_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +#if __BITINT_MAXWIDTH__ >= 1025\n> +[[gnu::noipa]] bool\n> +f3 (_BitInt(1025) q, _BitInt(1025) r, _BitInt(1025) s, _BitInt(1025) t,\n> +    _BitInt(1025) u, _BitInt(1025) v, _BitInt(1025) w, _BitInt(1025) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_add_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_sub_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_sub_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f4 (unsigned _BitInt(1025) q, unsigned _BitInt(1025) r,\n> +    unsigned _BitInt(1025) s, unsigned _BitInt(1025) t,\n> +    unsigned _BitInt(1025) u, unsigned _BitInt(1025) v,\n> +    unsigned _BitInt(1025) w, unsigned _BitInt(1025) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_add_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_sub_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_sub_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +int\n> +main ()\n> +{\n> +#if __BITINT_MAXWIDTH__ >= 513\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f1 (9655959669318785079954371230049554909200604556467603939808122955133717885340333846085453917625768204337699198414625928325836300792547598919086330010444969wb,\n> +      7603664655075175676551887792243938044412742856114886907427675169347553852589402599411290168288930382377283108890322269708884902998253293780483440129483327wb,\n> +      -10324098565034498465875215630604107238940128063553910460445433007166121079968132667074154355395844552937058899426253790777657675901838010055644316728526393wb,\n> +      -12236477238783553839340584917720106564483878483173525158555406923388638347150144919001024905877475401353674848301774791298367823029012449896858367218938488wb,\n> +      9966990594172406012310078765295767555782555285684385899869231608869471023379202086947215337899533069949801311225161562404400717858011700306179102121342515wb,\n> +      -12983782114594329520373595420695508584715919272703648469298375086460508080215963268729027546042229893937296428010493668720716318664505339275354851120734372wb,\n> +      -9655954001341551443087909192198932353132996418457245295521644079521230896558300756133292365213357603788911695147437530569709679437147630523365259553067954wb,\n> +      7072009366582949478473862650011262253783850301083169883440824883235985480601391689101153902500460700035282434290760483209786664550714449512762684388339187wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f2 (2964639554149490973596341394839758078409778829067653681666106821776834568408151111543733982288078570825867875863050348925537769671189456471968723686512034uwb,\n> +      5957364445683686818410817200949409124779631391545643887373796564697563753416937684648786338497928327653380765964317808469492623477785654419190708204181795uwb,\n> +      19191677104746999910669997770314557441327241058126327798712726258248174396859949489325836442238807787970653545840621658707862487865809500322706194229135252uwb,\n> +      24586718166970605619478065808613217078037607297232337682881885486187967367467012073369595089067814569116855119567799143349802467998026209123576080005659752uwb,\n> +      10462823982820178661190434713437061473290880952772417752401116804833406586088773886481041433195457558834409214235712063242433511929332344716172942804205442uwb,\n> +      16419753656873030796354060609416030388733546880849213639440646945524833982946459564500329809304700518677496254061943255280441489964246119308925190525772266uwb,\n> +      10405391186665161836576844847101505242465502880093273915903880455941412499859291312405803977208427105275040816651924471784587928355909534429001102837285163uwb,\n> +      17157919740278597151158601296325640095140225651359053582867340974133209625747219873488488134575281986967033985073454136035802749428039704256375550535464357uwb);\n> +#endif\n> +#if __BITINT_MAXWIDTH__ >= 1025\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f3 (9655959669318785079954371230049554909200604556467603939808122955133717885340333846085453917625768204337699198414625928325836300792547598919086330010444969wb,\n> +      7603664655075175676551887792243938044412742856114886907427675169347553852589402599411290168288930382377283108890322269708884902998253293780483440129483327wb,\n> +      -10324098565034498465875215630604107238940128063553910460445433007166121079968132667074154355395844552937058899426253790777657675901838010055644316728526393wb,\n> +      -12236477238783553839340584917720106564483878483173525158555406923388638347150144919001024905877475401353674848301774791298367823029012449896858367218938488wb,\n> +      9966990594172406012310078765295767555782555285684385899869231608869471023379202086947215337899533069949801311225161562404400717858011700306179102121342515wb,\n> +      -12983782114594329520373595420695508584715919272703648469298375086460508080215963268729027546042229893937296428010493668720716318664505339275354851120734372wb,\n> +      -9655954001341551443087909192198932353132996418457245295521644079521230896558300756133292365213357603788911695147437530569709679437147630523365259553067954wb,\n> +      7072009366582949478473862650011262253783850301083169883440824883235985480601391689101153902500460700035282434290760483209786664550714449512762684388339187wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f4 (2964639554149490973596341394839758078409778829067653681666106821776834568408151111543733982288078570825867875863050348925537769671189456471968723686512034uwb,\n> +      5957364445683686818410817200949409124779631391545643887373796564697563753416937684648786338497928327653380765964317808469492623477785654419190708204181795uwb,\n> +      19191677104746999910669997770314557441327241058126327798712726258248174396859949489325836442238807787970653545840621658707862487865809500322706194229135252uwb,\n> +      24586718166970605619478065808613217078037607297232337682881885486187967367467012073369595089067814569116855119567799143349802467998026209123576080005659752uwb,\n> +      10462823982820178661190434713437061473290880952772417752401116804833406586088773886481041433195457558834409214235712063242433511929332344716172942804205442uwb,\n> +      16419753656873030796354060609416030388733546880849213639440646945524833982946459564500329809304700518677496254061943255280441489964246119308925190525772266uwb,\n> +      10405391186665161836576844847101505242465502880093273915903880455941412499859291312405803977208427105275040816651924471784587928355909534429001102837285163uwb,\n> +      17157919740278597151158601296325640095140225651359053582867340974133209625747219873488488134575281986967033985073454136035802749428039704256375550535464357uwb);\n> +#endif\n> +}\n> --- gcc/testsuite/gcc.dg/torture/bitint-92.c.jj\t2026-04-23 12:24:19.245362017 +0200\n> +++ gcc/testsuite/gcc.dg/torture/bitint-92.c\t2026-04-23 14:17:50.397415229 +0200\n> @@ -0,0 +1,140 @@\n> +/* PR middle-end/123635 */\n> +/* { dg-do run { target bitint } } */\n> +/* { dg-options \"-std=c23 -pedantic-errors\" } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests }  { \"*\" } { \"-O0\" \"-O2\" } } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests } { \"-flto\" } { \"\" } } */\n> +\n> +#if __BITINT_MAXWIDTH__ >= 511\n> +_BitInt(511) a, b, c, d;\n> +unsigned _BitInt(511) e, f, g, h;\n> +#endif\n> +\n> +#include \"../bitintext.h\"\n> +\n> +#if __BITINT_MAXWIDTH__ >= 511\n> +[[gnu::noipa]] bool\n> +f1 (_BitInt(511) q, _BitInt(511) r, _BitInt(511) s, _BitInt(511) t,\n> +    _BitInt(511) u, _BitInt(511) v, _BitInt(511) w, _BitInt(511) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_add_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_sub_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_sub_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f2 (unsigned _BitInt(511) q, unsigned _BitInt(511) r, unsigned _BitInt(511) s,\n> +    unsigned _BitInt(511) t, unsigned _BitInt(511) u, unsigned _BitInt(511) v,\n> +    unsigned _BitInt(511) w, unsigned _BitInt(511) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_add_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_sub_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_sub_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +#if __BITINT_MAXWIDTH__ >= 1023\n> +[[gnu::noipa]] bool\n> +f3 (_BitInt(1023) q, _BitInt(1023) r, _BitInt(1023) s, _BitInt(1023) t,\n> +    _BitInt(1023) u, _BitInt(1023) v, _BitInt(1023) w, _BitInt(1023) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_add_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_sub_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_sub_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f4 (unsigned _BitInt(1023) q, unsigned _BitInt(1023) r,\n> +    unsigned _BitInt(1023) s, unsigned _BitInt(1023) t,\n> +    unsigned _BitInt(1023) u, unsigned _BitInt(1023) v,\n> +    unsigned _BitInt(1023) w, unsigned _BitInt(1023) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_add_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_add_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_sub_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_sub_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +int\n> +main ()\n> +{\n> +#if __BITINT_MAXWIDTH__ >= 511\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f1 (1390399912725058458200009048198820064492005235154664882378103191585647121798330571086629470693362953212791514491575158989602893218788902339652768462242628wb,\n> +      249177562235295607181226393168319684003354962277368763264203376508018272147140149371861361061154101827443514415658157865648522550758405852726010180808769wb,\n> +      -1780354034824880726793039893594299865138723691931754426795433194731471391545042339625233657837435887106690554340836104535849707683265009199435873463559020wb,\n> +      -740336545197937933670467416719493466419101689845476460441897613938923219348614699785899092241758652210632646359181180435230820349533052964898247331288194wb,\n> +      1264371856933908934004928210670432922219833109703326669407665736158573607996286450258750907679580905729735376144263375732104941574779989141805339934906103wb,\n> +      -1800762928143884868360591340947709805381121865559594609800602059770468706915015121333590484473244364203044167384984634798933392092472849088487188206919199wb,\n> +      -1874437506355165235214302048933351258782970556591446143241539194417790344619692436179305620246514867157285378788470027340983415072326706619779323878095044wb,\n> +      465089731165341206127432983731596524669687828142734277104372042775063012806153170457800193495447488542433104457447397078966750100194606523184187779891236wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f2 (1769288740652242299842741192560763693851113543365386227639113810655132281658311706354953254148690319453722073610881280531971362644037227748091681178317919uwb,\n> +      6609813168053391222543030306163941663953801084514170716266507032727748531561564744911045686719066313628734721154746698442483812155667254002473644708866548uwb,\n> +      2165581935187317546841478283262759103626305739168208417811840048675479552879740382682893926794456473657370285890451624909369445002539226077543796184885282uwb,\n> +      5583940649350967625413437252987234424283831963591403609577766560068787593281191860443568915932187805635333850527113490331304189378639908270408210201131036uwb,\n> +      4709767295913180049914868365292708657912010821088789452741841268048043047122882916441448275499420638756517585965684291097104349699944179639251796038947955uwb,\n> +      6280470013560252695084315130173483896550287179700449102345092527255864285425735025909066687910837200841028187788564127729392389462477148514426504126205653uwb,\n> +      5729764965697040092309843504303102973344572729567710548288594203184644343090550648393517676044608898029180050379384056057530481830153485215690201926045860uwb,\n> +      2025545578012992696919009225822788038691815646525577733706021933464568718262575612415581176797970841793616511309641023298056786955966008679910134224064441uwb);\n> +#endif\n> +#if __BITINT_MAXWIDTH__ >= 1023\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f3 (1390399912725058458200009048198820064492005235154664882378103191585647121798330571086629470693362953212791514491575158989602893218788902339652768462242628wb,\n> +      249177562235295607181226393168319684003354962277368763264203376508018272147140149371861361061154101827443514415658157865648522550758405852726010180808769wb,\n> +      -1780354034824880726793039893594299865138723691931754426795433194731471391545042339625233657837435887106690554340836104535849707683265009199435873463559020wb,\n> +      -740336545197937933670467416719493466419101689845476460441897613938923219348614699785899092241758652210632646359181180435230820349533052964898247331288194wb,\n> +      1264371856933908934004928210670432922219833109703326669407665736158573607996286450258750907679580905729735376144263375732104941574779989141805339934906103wb,\n> +      -1800762928143884868360591340947709805381121865559594609800602059770468706915015121333590484473244364203044167384984634798933392092472849088487188206919199wb,\n> +      -1874437506355165235214302048933351258782970556591446143241539194417790344619692436179305620246514867157285378788470027340983415072326706619779323878095044wb,\n> +      465089731165341206127432983731596524669687828142734277104372042775063012806153170457800193495447488542433104457447397078966750100194606523184187779891236wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f4 (1769288740652242299842741192560763693851113543365386227639113810655132281658311706354953254148690319453722073610881280531971362644037227748091681178317919uwb,\n> +      6609813168053391222543030306163941663953801084514170716266507032727748531561564744911045686719066313628734721154746698442483812155667254002473644708866548uwb,\n> +      2165581935187317546841478283262759103626305739168208417811840048675479552879740382682893926794456473657370285890451624909369445002539226077543796184885282uwb,\n> +      5583940649350967625413437252987234424283831963591403609577766560068787593281191860443568915932187805635333850527113490331304189378639908270408210201131036uwb,\n> +      4709767295913180049914868365292708657912010821088789452741841268048043047122882916441448275499420638756517585965684291097104349699944179639251796038947955uwb,\n> +      6280470013560252695084315130173483896550287179700449102345092527255864285425735025909066687910837200841028187788564127729392389462477148514426504126205653uwb,\n> +      5729764965697040092309843504303102973344572729567710548288594203184644343090550648393517676044608898029180050379384056057530481830153485215690201926045860uwb,\n> +      2025545578012992696919009225822788038691815646525577733706021933464568718262575612415581176797970841793616511309641023298056786955966008679910134224064441uwb);\n> +#endif\n> +}\n> --- gcc/testsuite/gcc.dg/torture/bitint-93.c.jj\t2026-04-23 12:28:40.670937670 +0200\n> +++ gcc/testsuite/gcc.dg/torture/bitint-93.c\t2026-04-23 14:17:55.779325177 +0200\n> @@ -0,0 +1,140 @@\n> +/* PR middle-end/123635 */\n> +/* { dg-do run { target bitint } } */\n> +/* { dg-options \"-std=c23 -pedantic-errors\" } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests }  { \"*\" } { \"-O0\" \"-O2\" } } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests } { \"-flto\" } { \"\" } } */\n> +\n> +#if __BITINT_MAXWIDTH__ >= 513\n> +_BitInt(513) a, b, c, d;\n> +unsigned _BitInt(513) e, f, g, h;\n> +#endif\n> +\n> +#include \"../bitintext.h\"\n> +\n> +#if __BITINT_MAXWIDTH__ >= 513\n> +[[gnu::noipa]] bool\n> +f1 (_BitInt(513) q, _BitInt(513) r, _BitInt(513) s, _BitInt(513) t,\n> +    _BitInt(513) u, _BitInt(513) v, _BitInt(513) w, _BitInt(513) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_mul_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_mul_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_mul_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f2 (unsigned _BitInt(513) q, unsigned _BitInt(513) r, unsigned _BitInt(513) s,\n> +    unsigned _BitInt(513) t, unsigned _BitInt(513) u, unsigned _BitInt(513) v,\n> +    unsigned _BitInt(513) w, unsigned _BitInt(513) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_mul_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_mul_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_mul_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +#if __BITINT_MAXWIDTH__ >= 1025\n> +[[gnu::noipa]] bool\n> +f3 (_BitInt(1025) q, _BitInt(1025) r, _BitInt(1025) s, _BitInt(1025) t,\n> +    _BitInt(1025) u, _BitInt(1025) v, _BitInt(1025) w, _BitInt(1025) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_mul_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_mul_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_mul_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f4 (unsigned _BitInt(1025) q, unsigned _BitInt(1025) r,\n> +    unsigned _BitInt(1025) s, unsigned _BitInt(1025) t,\n> +    unsigned _BitInt(1025) u, unsigned _BitInt(1025) v,\n> +    unsigned _BitInt(1025) w, unsigned _BitInt(1025) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_mul_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_mul_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_mul_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +int\n> +main ()\n> +{\n> +#if __BITINT_MAXWIDTH__ >= 513\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f1 (9655959669318785079954371230049554909200604556467603939808122955133717885340333846085453917625768204337699198414625928325836300792547598919086330010444969wb,\n> +      7603664655075175676551887792243938044412742856114886907427675169347553852589402599411290168288930382377283108890322269708884902998253293780483440129483327wb,\n> +      -10324098565034498465875215630604107238940128063553910460445433007166121079968132667074154355395844552937058899426253790777657675901838010055644316728526393wb,\n> +      -12236477238783553839340584917720106564483878483173525158555406923388638347150144919001024905877475401353674848301774791298367823029012449896858367218938488wb,\n> +      9966990594172406012310078765295767555782555285684385899869231608869471023379202086947215337899533069949801311225161562404400717858011700306179102121342515wb,\n> +      -12983782114594329520373595420695508584715919272703648469298375086460508080215963268729027546042229893937296428010493668720716318664505339275354851120734372wb,\n> +      -9655954001341551443087909192198932353132996418457245295521644079521230896558300756133292365213357603788911695147437530569709679437147630523365259553067954wb,\n> +      7072009366582949478473862650011262253783850301083169883440824883235985480601391689101153902500460700035282434290760483209786664550714449512762684388339187wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f2 (2964639554149490973596341394839758078409778829067653681666106821776834568408151111543733982288078570825867875863050348925537769671189456471968723686512034uwb,\n> +      5957364445683686818410817200949409124779631391545643887373796564697563753416937684648786338497928327653380765964317808469492623477785654419190708204181795uwb,\n> +      19191677104746999910669997770314557441327241058126327798712726258248174396859949489325836442238807787970653545840621658707862487865809500322706194229135252uwb,\n> +      24586718166970605619478065808613217078037607297232337682881885486187967367467012073369595089067814569116855119567799143349802467998026209123576080005659752uwb,\n> +      10462823982820178661190434713437061473290880952772417752401116804833406586088773886481041433195457558834409214235712063242433511929332344716172942804205442uwb,\n> +      16419753656873030796354060609416030388733546880849213639440646945524833982946459564500329809304700518677496254061943255280441489964246119308925190525772266uwb,\n> +      10405391186665161836576844847101505242465502880093273915903880455941412499859291312405803977208427105275040816651924471784587928355909534429001102837285163uwb,\n> +      17157919740278597151158601296325640095140225651359053582867340974133209625747219873488488134575281986967033985073454136035802749428039704256375550535464357uwb);\n> +#endif\n> +#if __BITINT_MAXWIDTH__ >= 1025\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f3 (9655959669318785079954371230049554909200604556467603939808122955133717885340333846085453917625768204337699198414625928325836300792547598919086330010444969wb,\n> +      7603664655075175676551887792243938044412742856114886907427675169347553852589402599411290168288930382377283108890322269708884902998253293780483440129483327wb,\n> +      -10324098565034498465875215630604107238940128063553910460445433007166121079968132667074154355395844552937058899426253790777657675901838010055644316728526393wb,\n> +      -12236477238783553839340584917720106564483878483173525158555406923388638347150144919001024905877475401353674848301774791298367823029012449896858367218938488wb,\n> +      9966990594172406012310078765295767555782555285684385899869231608869471023379202086947215337899533069949801311225161562404400717858011700306179102121342515wb,\n> +      -12983782114594329520373595420695508584715919272703648469298375086460508080215963268729027546042229893937296428010493668720716318664505339275354851120734372wb,\n> +      -9655954001341551443087909192198932353132996418457245295521644079521230896558300756133292365213357603788911695147437530569709679437147630523365259553067954wb,\n> +      7072009366582949478473862650011262253783850301083169883440824883235985480601391689101153902500460700035282434290760483209786664550714449512762684388339187wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f4 (2964639554149490973596341394839758078409778829067653681666106821776834568408151111543733982288078570825867875863050348925537769671189456471968723686512034uwb,\n> +      5957364445683686818410817200949409124779631391545643887373796564697563753416937684648786338497928327653380765964317808469492623477785654419190708204181795uwb,\n> +      19191677104746999910669997770314557441327241058126327798712726258248174396859949489325836442238807787970653545840621658707862487865809500322706194229135252uwb,\n> +      24586718166970605619478065808613217078037607297232337682881885486187967367467012073369595089067814569116855119567799143349802467998026209123576080005659752uwb,\n> +      10462823982820178661190434713437061473290880952772417752401116804833406586088773886481041433195457558834409214235712063242433511929332344716172942804205442uwb,\n> +      16419753656873030796354060609416030388733546880849213639440646945524833982946459564500329809304700518677496254061943255280441489964246119308925190525772266uwb,\n> +      10405391186665161836576844847101505242465502880093273915903880455941412499859291312405803977208427105275040816651924471784587928355909534429001102837285163uwb,\n> +      17157919740278597151158601296325640095140225651359053582867340974133209625747219873488488134575281986967033985073454136035802749428039704256375550535464357uwb);\n> +#endif\n> +}\n> --- gcc/testsuite/gcc.dg/torture/bitint-94.c.jj\t2026-04-23 12:29:00.161607812 +0200\n> +++ gcc/testsuite/gcc.dg/torture/bitint-94.c\t2026-04-23 14:18:01.446230357 +0200\n> @@ -0,0 +1,140 @@\n> +/* PR middle-end/123635 */\n> +/* { dg-do run { target bitint } } */\n> +/* { dg-options \"-std=c23 -pedantic-errors\" } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests }  { \"*\" } { \"-O0\" \"-O2\" } } */\n> +/* { dg-skip-if \"\" { ! run_expensive_tests } { \"-flto\" } { \"\" } } */\n> +\n> +#if __BITINT_MAXWIDTH__ >= 511\n> +_BitInt(511) a, b, c, d;\n> +unsigned _BitInt(511) e, f, g, h;\n> +#endif\n> +\n> +#include \"../bitintext.h\"\n> +\n> +#if __BITINT_MAXWIDTH__ >= 511\n> +[[gnu::noipa]] bool\n> +f1 (_BitInt(511) q, _BitInt(511) r, _BitInt(511) s, _BitInt(511) t,\n> +    _BitInt(511) u, _BitInt(511) v, _BitInt(511) w, _BitInt(511) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_mul_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_mul_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_mul_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f2 (unsigned _BitInt(511) q, unsigned _BitInt(511) r, unsigned _BitInt(511) s,\n> +    unsigned _BitInt(511) t, unsigned _BitInt(511) u, unsigned _BitInt(511) v,\n> +    unsigned _BitInt(511) w, unsigned _BitInt(511) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_mul_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_mul_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_mul_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +#if __BITINT_MAXWIDTH__ >= 1023\n> +[[gnu::noipa]] bool\n> +f3 (_BitInt(1023) q, _BitInt(1023) r, _BitInt(1023) s, _BitInt(1023) t,\n> +    _BitInt(1023) u, _BitInt(1023) v, _BitInt(1023) w, _BitInt(1023) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &a);\n> +  BEXTC (a);\n> +  res |= __builtin_mul_overflow (s, t, &b);\n> +  BEXTC (b);\n> +  res |= __builtin_mul_overflow (u, v, &c);\n> +  BEXTC (c);\n> +  res |= __builtin_mul_overflow (w, x, &d);\n> +  BEXTC (d);\n> +  return res;\n> +}\n> +\n> +[[gnu::noipa]] bool\n> +f4 (unsigned _BitInt(1023) q, unsigned _BitInt(1023) r,\n> +    unsigned _BitInt(1023) s, unsigned _BitInt(1023) t,\n> +    unsigned _BitInt(1023) u, unsigned _BitInt(1023) v,\n> +    unsigned _BitInt(1023) w, unsigned _BitInt(1023) x)\n> +{\n> +  bool res = false;\n> +  res |= __builtin_mul_overflow (q, r, &e);\n> +  BEXTC (e);\n> +  res |= __builtin_mul_overflow (s, t, &f);\n> +  BEXTC (f);\n> +  res |= __builtin_mul_overflow (u, v, &g);\n> +  BEXTC (g);\n> +  res |= __builtin_mul_overflow (w, x, &h);\n> +  BEXTC (h);\n> +  return res;\n> +}\n> +#endif\n> +\n> +int\n> +main ()\n> +{\n> +#if __BITINT_MAXWIDTH__ >= 511\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f1 (1390399912725058458200009048198820064492005235154664882378103191585647121798330571086629470693362953212791514491575158989602893218788902339652768462242628wb,\n> +      249177562235295607181226393168319684003354962277368763264203376508018272147140149371861361061154101827443514415658157865648522550758405852726010180808769wb,\n> +      -1780354034824880726793039893594299865138723691931754426795433194731471391545042339625233657837435887106690554340836104535849707683265009199435873463559020wb,\n> +      -740336545197937933670467416719493466419101689845476460441897613938923219348614699785899092241758652210632646359181180435230820349533052964898247331288194wb,\n> +      1264371856933908934004928210670432922219833109703326669407665736158573607996286450258750907679580905729735376144263375732104941574779989141805339934906103wb,\n> +      -1800762928143884868360591340947709805381121865559594609800602059770468706915015121333590484473244364203044167384984634798933392092472849088487188206919199wb,\n> +      -1874437506355165235214302048933351258782970556591446143241539194417790344619692436179305620246514867157285378788470027340983415072326706619779323878095044wb,\n> +      465089731165341206127432983731596524669687828142734277104372042775063012806153170457800193495447488542433104457447397078966750100194606523184187779891236wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f2 (1769288740652242299842741192560763693851113543365386227639113810655132281658311706354953254148690319453722073610881280531971362644037227748091681178317919uwb,\n> +      6609813168053391222543030306163941663953801084514170716266507032727748531561564744911045686719066313628734721154746698442483812155667254002473644708866548uwb,\n> +      2165581935187317546841478283262759103626305739168208417811840048675479552879740382682893926794456473657370285890451624909369445002539226077543796184885282uwb,\n> +      5583940649350967625413437252987234424283831963591403609577766560068787593281191860443568915932187805635333850527113490331304189378639908270408210201131036uwb,\n> +      4709767295913180049914868365292708657912010821088789452741841268048043047122882916441448275499420638756517585965684291097104349699944179639251796038947955uwb,\n> +      6280470013560252695084315130173483896550287179700449102345092527255864285425735025909066687910837200841028187788564127729392389462477148514426504126205653uwb,\n> +      5729764965697040092309843504303102973344572729567710548288594203184644343090550648393517676044608898029180050379384056057530481830153485215690201926045860uwb,\n> +      2025545578012992696919009225822788038691815646525577733706021933464568718262575612415581176797970841793616511309641023298056786955966008679910134224064441uwb);\n> +#endif\n> +#if __BITINT_MAXWIDTH__ >= 1023\n> +  __builtin_memset (&a, 0x55, sizeof (a));\n> +  __builtin_memset (&b, 0xaa, sizeof (b));\n> +  __builtin_memset (&c, 0x55, sizeof (c));\n> +  __builtin_memset (&d, 0xaa, sizeof (d));\n> +  f3 (1390399912725058458200009048198820064492005235154664882378103191585647121798330571086629470693362953212791514491575158989602893218788902339652768462242628wb,\n> +      249177562235295607181226393168319684003354962277368763264203376508018272147140149371861361061154101827443514415658157865648522550758405852726010180808769wb,\n> +      -1780354034824880726793039893594299865138723691931754426795433194731471391545042339625233657837435887106690554340836104535849707683265009199435873463559020wb,\n> +      -740336545197937933670467416719493466419101689845476460441897613938923219348614699785899092241758652210632646359181180435230820349533052964898247331288194wb,\n> +      1264371856933908934004928210670432922219833109703326669407665736158573607996286450258750907679580905729735376144263375732104941574779989141805339934906103wb,\n> +      -1800762928143884868360591340947709805381121865559594609800602059770468706915015121333590484473244364203044167384984634798933392092472849088487188206919199wb,\n> +      -1874437506355165235214302048933351258782970556591446143241539194417790344619692436179305620246514867157285378788470027340983415072326706619779323878095044wb,\n> +      465089731165341206127432983731596524669687828142734277104372042775063012806153170457800193495447488542433104457447397078966750100194606523184187779891236wb);\n> +  __builtin_memset (&e, 0x55, sizeof (e));\n> +  __builtin_memset (&f, 0xaa, sizeof (f));\n> +  __builtin_memset (&g, 0x55, sizeof (g));\n> +  __builtin_memset (&h, 0xaa, sizeof (h));\n> +  f4 (1769288740652242299842741192560763693851113543365386227639113810655132281658311706354953254148690319453722073610881280531971362644037227748091681178317919uwb,\n> +      6609813168053391222543030306163941663953801084514170716266507032727748531561564744911045686719066313628734721154746698442483812155667254002473644708866548uwb,\n> +      2165581935187317546841478283262759103626305739168208417811840048675479552879740382682893926794456473657370285890451624909369445002539226077543796184885282uwb,\n> +      5583940649350967625413437252987234424283831963591403609577766560068787593281191860443568915932187805635333850527113490331304189378639908270408210201131036uwb,\n> +      4709767295913180049914868365292708657912010821088789452741841268048043047122882916441448275499420638756517585965684291097104349699944179639251796038947955uwb,\n> +      6280470013560252695084315130173483896550287179700449102345092527255864285425735025909066687910837200841028187788564127729392389462477148514426504126205653uwb,\n> +      5729764965697040092309843504303102973344572729567710548288594203184644343090550648393517676044608898029180050379384056057530481830153485215690201926045860uwb,\n> +      2025545578012992696919009225822788038691815646525577733706021933464568718262575612415581176797970841793616511309641023298056786955966008679910134224064441uwb);\n> +#endif\n> +}\n> --- gcc/testsuite/gcc.dg/torture/bitint-95.c.jj\t2026-04-23 17:07:39.107709287 +0200\n> +++ gcc/testsuite/gcc.dg/torture/bitint-95.c\t2026-04-23 17:07:31.914830202 +0200\n> @@ -0,0 +1,22 @@\n> +/* PR tree-optimization/124988 */\n> +/* { dg-do run } */\n> +\n> +int a;\n> +unsigned _BitInt(132) b;\n> +\n> +unsigned _BitInt(128)\n> +foo (unsigned _BitInt(192) d)\n> +{\n> +  bool o = __builtin_mul_overflow (d, 1, &b);\n> +  if (!o)\n> +    __atomic_sub_fetch (&a, 1, 0);\n> +  return b >> 8;\n> +}\n> +\n> +int\n> +main ()\n> +{\n> +  unsigned _BitInt(128) x = foo (0x1100ffeeddccbbaa998877665544332211wb);\n> +  if (x != 0x100ffeeddccbbaa9988776655443322wb)\n> +    __builtin_abort ();\n> +}\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=r3w/m3rZ;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=h7JsVKKj;\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=XPUImizh;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=44jjr1xa;\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 (1024-bit key,\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=r3w/m3rZ;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=h7JsVKKj;\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=XPUImizh;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=44jjr1xa","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 [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 4g238c6dw8z1yDD\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 16:34:24 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id BEFB34BB24C1\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 06:34:22 +0000 (GMT)","from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])\n by sourceware.org (Postfix) with ESMTPS id 980E24BA2E18\n for <gcc-patches@gcc.gnu.org>; Fri, 24 Apr 2026 06:33:49 +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 4A88A6A845;\n Fri, 24 Apr 2026 06:33:47 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org BEFB34BB24C1","OpenDKIM Filter v2.11.0 sourceware.org 980E24BA2E18"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 980E24BA2E18","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 980E24BA2E18","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777012429; cv=none;\n b=sXCTCz2Cel1meU/BRNze49TA8mRVfMdO7fXo8YwPuWHRbG3/1A9Q47LapQPwsow4ObmDobduWw5JdbL7JAjeHHBD9l1ahcpB+vrBoqqELAx+VFQ1SV0jSRZRzBX4hoQMF0jXH/lYPJraF2OxBTxgSn1yU9D/uqaCVC3eYY8EbEI=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777012429; c=relaxed/simple;\n bh=4s1JAbwQhym2nOrb9KnvyTUY0RQW56vMKiMZGquWyAo=;\n h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date:\n From:To:Subject:Message-ID:MIME-Version;\n b=MHaQjo+HdTurN8tnU0gjqsFE2t90wDTrZmtg2SVxNn+My0IT+Q5xYe4YNUCFndpXTasCV3MjprIu66ejWS7tPUmbcpgdtNFAOX51fPuAiByOXum7/gUKJ1c4jEgiqU2FaoaAzl08XspvUiclqqnwZBFmI+nmYsygua8Xeyvw56Y=","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=1777012428;\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=VZ70HXGhTed/xXtlTjRNVQ3m1pCm+0MukzU0Rt+v0tE=;\n b=r3w/m3rZsj6GS1wpoP0HY5E08zg42x9BtruCuyp17d3QzflGKna8H3LVqj2SThxwr36jSj\n xxUAQ/kYjOIYzXWLyMjLKoJuKKw8fWCTBbwIRqR2TqI3DQGG3IfwikEP7MwMNTIYsv8Qi2\n 09YGD4N9gqzC6F7jZfxqKir8hvEjOmQ=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777012428;\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=VZ70HXGhTed/xXtlTjRNVQ3m1pCm+0MukzU0Rt+v0tE=;\n b=h7JsVKKj+ln/4g1f2eHzqTq+JCrLQGVWjvbiPR07hHdE8HQ9UnmReZPdtxQxS4aqEWSxqX\n D9d0HYqZFWhVh8DA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1777012427;\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=VZ70HXGhTed/xXtlTjRNVQ3m1pCm+0MukzU0Rt+v0tE=;\n b=XPUImizhTWUR9HGzuKMSz1ehWa7CcOd+G9c0FOXrAYHt11UqeZma0+ufJmxPU73TusAjIt\n 5T275Z0qlXxQPYTEQofCrr3MUYteqedUkziwlq3RHMJkO3SqfysI+ZdeiOCCo+xddKECYD\n 6alKqL/rpBLYuBje78iJ9EDPQDJnFCo=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777012427;\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=VZ70HXGhTed/xXtlTjRNVQ3m1pCm+0MukzU0Rt+v0tE=;\n b=44jjr1xab2gaE/PR5Atfqf46zXycI0SSsvI3vylHnlzsPfzfhKEcIY9Cl78XQFeaKB4I7h\n /1gdzmDLNusIi3BA=="],"Date":"Fri, 24 Apr 2026 08:33:47 +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 5 [PR123635]","In-Reply-To":"<aesH9vN50MTHzuvT@tucnak>","Message-ID":"<s9r66s83-o373-0spn-9p4r-2qoo5n50s1s1@fhfr.qr>","References":"<aesH9vN50MTHzuvT@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)[fhfr.qr:mid, gimple-lower-bitint.cc:url,\n suse.de:email, murzim.nue2.suse.org:helo]","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"}}]