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: Fix ivopts estimates for internal functions


On May 26, 2016 4:39:02 PM GMT+02:00, Richard Sandiford <richard.sandiford@arm.com> wrote:
>tree-ssa-loop-ivopts.c:loop_body_includes_call was treating internal
>calls such as IFN_SQRT as clobbering all caller-saved registers, which
>I don't think is appropriate for any current internal function.
>
>Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

OK.

Richard.

>Thanks,
>Richard
>
>
>gcc/
>	* tree-ssa-loop-ivopts.c (loop_body_includes_call): Don't assume
>	that internal functions will clobber all caller-saved registers.
>
>diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
>index 9ce6b64..23c9886 100644
>--- a/gcc/tree-ssa-loop-ivopts.c
>+++ b/gcc/tree-ssa-loop-ivopts.c
>@@ -7643,6 +7643,7 @@ loop_body_includes_call (basic_block *body,
>unsigned num_nodes)
>       {
> 	gimple *stmt = gsi_stmt (gsi);
> 	if (is_gimple_call (stmt)
>+	    && !gimple_call_internal_p (stmt)
> 	    && !is_inexpensive_builtin (gimple_call_fndecl (stmt)))
> 	  return true;
>       }



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