On Sat, Jan 3, 2015 at 9:35 AM, John David Anglin <d...@hiauly1.hia.nrc.ca> wrote: > On Wed, 31 Dec 2014, H.J. Lu wrote: > >> - /* Arguments for a sibling call that are pushed to memory are passed >> - using the incoming argument pointer of the current function. These >> - may or may not be frame related depending on the target. Since >> - argument pointer related stores are not currently tracked, we treat >> - a sibling call as though it does a wild read. */ >> - if (SIBLING_CALL_P (insn)) >> + if (targetm.sibcall_wild_read_p (insn)) >> { >> add_wild_read (bb_info); >> return; > > Instead of falling through to code designed to handle normal calls, it > would be better to treat them separately. Potentially, there are other > optimizations that may be applicable. If a sibcall doesn't read from > the frame, add_non_frame_wild_read() can be called. This would restore > the x86 optimization. >
That will a new optimization. I am trying to restore the old behavior on x86 with minimum impact in stage 3. -- H.J.