> Where is mark_addressable called? It's wrong (and generally impossible) to > do that late.
In expr.c:emit_block_move_hints. It's one of the calls added to support the enhanced DSE last year, there are others in calls.c for example. > If you only have memcpy then escaped will be empty. fixing escaped is > not the right solution (it may work for some reason in this case though). > The rtl code has to approximate ref_maybe_used_by_call_p in a conservative > way which it doesn't seem to do correctly (I don't remember a RTL alias.c > interface that would match this, or ref_maybe_used_by_stmt_p - maybe > we should add one?) I'm OK with the new bitmap + decls_to_pointers idea. Keep in mind that the info needs to be updated after update_alias_info_with_stack_vars, because for MEM[(c_char * {ref-all})&i] = MEM[(c_char * {ref-all})&A.17]; you don't know until expand whether this will a memcpy or a move by pieces and the info is needed for the enhanced DSE to work properly. -- Eric Botcazou