On Fri, 7 Mar 2025, Tejas Belagod wrote:

> Support TARGET_MEM_REFs when walking subtress searching for ADDR_EXPR.  This
> scenario presents itself when walking MEM_REF subtrees looking for addr-taken
> entities during the execute_update_addresses_taken () pass where address-taken
> bitmaps are updated.

This is wrong - an ADDR_EXPR in TMR_BASE does not make the object
address-taken.  The issue you are running into must be elsewhere.

Richard.

> gcc/ChangeLog:
> 
>       * gimple-walk.cc (walk_stmt_load_store_addr_ops): Support
>       TARGET_MEM_REF tree op in the address-tree walker.
> ---
>  gcc/gimple-walk.cc | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/gcc/gimple-walk.cc b/gcc/gimple-walk.cc
> index eceda41778d..7fb38d7d2c2 100644
> --- a/gcc/gimple-walk.cc
> +++ b/gcc/gimple-walk.cc
> @@ -803,6 +803,10 @@ walk_stmt_load_store_addr_ops (gimple *stmt, void *data,
>                  && TREE_CODE (OBJ_TYPE_REF_OBJECT (rhs)) == ADDR_EXPR)
>           ret |= visit_addr (stmt, TREE_OPERAND (OBJ_TYPE_REF_OBJECT (rhs),
>                                                  0), arg, data);
> +       else if (TREE_CODE (rhs) == TARGET_MEM_REF
> +                && TREE_CODE (TMR_BASE (rhs)) == ADDR_EXPR)
> +         ret |= visit_addr (stmt, TREE_OPERAND (TMR_BASE (rhs),
> +                                                0), arg, data);
>         else if (TREE_CODE (rhs) == CONSTRUCTOR)
>           {
>             unsigned int ix;
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to