On Fri, Dec 13, 2013 at 07:30:12AM +0100, Richard Biener wrote:
> Jakub Jelinek <[email protected]> wrote:
> >lhs of a call for calls or somewhere in output arguments of inline asm.
>
> Can you please simply use walk_stmt_load_store_ops to get at the stmt outputs?
No, unfortunately. The problem is that walk_stmt_load_store_{addr_,}ops first
calls and get_base_loadstore on the operand and thus effectively strips all the
handled components from it. But we need to look at any uses of SSA_NAMEs
in the whole operand, not only if it is based on *MEM_REF with SSA_NAME
operand. I.e., a change of the patch to use walk_stmt_load_store_ops
will keep the pr58956.c testcase fixed, because there is *i, but will
make pr59470.c (the new one in the patch) broken, because there the
SSA_NAME is used as ARRAY_REF index and base is some VAR_DECL.
It guess it wouldn't be hard to make similar testcase even for the call
case, though it is unclear if it would be miscompiled or not.
Jakub