On Thu, Feb 06, 2014 at 06:06:41PM +0100, Jan Hubicka wrote:
> > Hi,
> > this is improved patch I am testing.  The basic idea is to remove push
> > expanders for cases where we do not have push instruction anyway.
> > emit_move_insns then resorts to unconditonally call move expander
> > with push operand.  I expended ix86_expand_vector_move to handle
> > it gracefully and for that I borrowed emit_move_resolve_push
> > function from expr.c since it seemed pointless to preserve
> > duplicated logic in ix86_expand_push.
> > 
> > I can easily imagine that scheduling around function call sequences
> > matters, so I also updated push/pop expanders to preserve memory attributes.
> > 
> > Eventually I found the attributes to be blank because of logic in expr.c
> > that clears alias info when sibcall is enabled.  We can now do better
> > by only disabling it in functions that actually do sibcalls.
> > 
> > Bootstrap/regtest running on x86_64-linux, OK for the non-i386 parts
> > if it passes?
> 
> Ping...

The expr.[ch]/function.h/tree-tailcall.c bits are ok.
I see your changes clash with my PR60077 fix, does your patch make them
obsolete and you take care of using proper alignment info?
If so, at least the two tests from that PR's patch should be added,
but I can do that as a follow-up.

> >     * expr.c (emit_move_resolve_push): Export; be bit more selective
> >     on when to clear alias set.
> >     * expr.h (emit_move_resolve_push): Declare.
> >     * function.h (struct function): Add tail_call_marked.
> >     * tree-tailcall.c (optimize_tail_call): Set tail_call_marked.
> >     * config/i386/i386-protos.h (ix86_expand_push): Remove.
> >     * config/i386/i386.md (TImode move expander): De not call
> >     ix86_expand_push.
> >     (FP push expanders): Preserve memory attributes.
> >     * config/i386/sse.md (push<mode>1): Remove.
> >     * config/i386/i386.c (ix86_expand_vector_move): Handle push
> >     operation.
> >     (ix86_expand_push): Remove.
> >     * config/i386/mmx.md (push<mode>1): Remove.

        Jakub

Reply via email to