On Wed, Jan 31, 2024 at 12:18 PM Jakub Jelinek <ja...@redhat.com> wrote:
>
> On Wed, Jan 31, 2024 at 10:07:28AM +0100, Jakub Jelinek wrote:
> > Indeed.  But what we could do is try to fold_stmt those .ASAN_MARK calls
> > away earlier (but sure, the asan.cc change would be still required because
> > that would be just an optimization).  But that can be handled incrementally,
> > so I think the patch is ok as is (and I can handle the incremental part
> > myself).
>
> Like this, so far just tested on the testcase.  Ok for trunk if it passes
> bootstrap/regtest on top of Jason's patch?

Note we fold all - well, all builtin - calls during gimple lowering.
Maybe we can put this special-casing there instead? (gimple-low.cc:797,
you possibly have to replace with a GIMPLE_NOP)

> 2024-01-31  Jakub Jelinek  <ja...@redhat.com>
>
>         PR c++/113531
>         * gimple-fold.cc (gimple_fold_call): Remove .ASAN_MARK calls
>         on variables which were promoted to TREE_STATIC.
>
> --- gcc/gimple-fold.cc.jj       2024-01-03 11:51:27.236790799 +0100
> +++ gcc/gimple-fold.cc  2024-01-31 12:09:14.853348505 +0100
> @@ -5722,6 +5722,21 @@ gimple_fold_call (gimple_stmt_iterator *
>               }
>           }
>           break;
> +        case IFN_ASAN_MARK:
> +          {
> +            tree base = gimple_call_arg (stmt, 1);
> +            gcc_checking_assert (TREE_CODE (base) == ADDR_EXPR);
> +            tree decl = TREE_OPERAND (base, 0);
> +            if (VAR_P (decl) && TREE_STATIC (decl))
> +             {
> +               /* Don't poison a variable with static storage; it might have
> +                  gotten marked before gimplify_init_constructor promoted it
> +                  to static.  */
> +               replace_call_with_value (gsi, NULL_TREE);
> +               return true;
> +             }
> +          }
> +         break;
>         case IFN_GOACC_DIM_SIZE:
>         case IFN_GOACC_DIM_POS:
>           result = fold_internal_goacc_dim (stmt);
>
>
>         Jakub
>

Reply via email to