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. Dave -- J. David Anglin dave.ang...@bell.net