> 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.
Yes, this patch was made to fix gcc.target/i386/pr35767-5.c by obtaining correct alignment (and also alias) info on the store. Sorry for making you to duplicate the effort - seems I should have pinged it earlier. Honza