On Thu, Jul 30, 2026 at 2:20 PM Jakub Jelinek <[email protected]> wrote:
>
> Hi!
>
> The following testcase ICEs, because we decide to fold a comparison
> into just one of its operands, we call recalculate_side_effects on that
> and ICE on the assertion that it isn't called on anything unexpected
> (here PARM_DECL).
> Already some time ago we had to add an exception for SSA_NAME for the
> same reason.
> The tcc_declaration case is slightly different, TREE_SIDE_EFFECTS is
> sometimes present on those if they are TREE_THIS_VOLATILE, but it is
> something the FE should take care of when creating those decls, not
> a business of the gimplifier.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk/16.2?

Ok.

>
> 2026-07-30  Jakub Jelinek  <[email protected]>
>
>         PR middle-end/126497
>         * gimplify.cc (recalculate_side_effects): Return for
>         tcc_declaration.
>
>         * gcc.dg/bitint-141.c: New test.
>
> --- gcc/gimplify.cc.jj  2026-07-29 23:02:59.826913052 +0200
> +++ gcc/gimplify.cc     2026-07-30 16:36:45.710098749 +0200
> @@ -3361,6 +3361,13 @@ recalculate_side_effects (tree t)
>        /* No side-effects.  */
>        return;
>
> +    case tcc_declaration:
> +      /* These can have side-effects if TREE_THIS_VOLATILE,
> +        but those should be set elsewhere, not in
> +        recalculate_side_effects.  Can be triggered e.g. if
> +        a comparison is folded into one of its operands.  */
> +      return;
> +
>      default:
>        if (code == SSA_NAME)
>         /* No side-effects.  */
> --- gcc/testsuite/gcc.dg/bitint-141.c.jj        2026-07-30 16:40:32.362324944 
> +0200
> +++ gcc/testsuite/gcc.dg/bitint-141.c   2026-07-30 16:41:04.970925875 +0200
> @@ -0,0 +1,19 @@
> +/* PR middle-end/126497 */
> +/* { dg-do compile { target bitint } } */
> +/* { dg-options "-std=c23" } */
> +
> +typedef unsigned _BitInt (1) U;
> +
> +U
> +foo (U a)
> +{
> +  U t = a >= 1uwb;
> +  return t;
> +}
> +
> +U
> +bar (U a)
> +{
> +  U t = a == 1uwb;
> +  return t;
> +}
>
>         Jakub
>

Reply via email to