PATCH: [5 Regression] r219037 caused FAIL: gcc.dg/pr44194-1.c
John David Anglin
dave@hiauly1.hia.nrc.ca
Sat Jan 3 17:35:00 GMT 2015
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.anglin@bell.net
More information about the Gcc-patches
mailing list