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.
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; -- 2.25.1