This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: [5 Regression] r219037 caused FAIL: gcc.dg/pr44194-1.c


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]