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] Add sequence check to leaf_function_p


On Fri, 12 May 2017, Wilco Dijkstra wrote:

> This is a followup from: https://gcc.gnu.org/ml/gcc-patches/2016-11/msg02916.html
> 
> Add an assert to leaf_function_p to ensure it is not called from a
> prolog or epilog sequence (which would incorrectly return true in a
> non-leaf function).

As I understand, we need to ensure that get_insns call retrieves the topmost
sequence corresponding to the function body, not any current subsequence that
could have been started via start_sequence.  Therefore the 'prolog or epilog'
part is a bit misleading, we could be in a subsequence for other reasons, and
we need to reject those as well.  So, ...

> diff --git a/gcc/final.c b/gcc/final.c
> index 820162b2d28d734901375017cf0c7a3095e8903e..c9aa610d2696738342f61b9c944a7a2f18e7497c 100644
> --- a/gcc/final.c
> +++ b/gcc/final.c
> @@ -4309,6 +4309,9 @@ leaf_function_p (void)
>  {
>    rtx_insn *insn;
>  
> +  /* Check we are not in a prologue or epilogue sequence.  */
> +  gcc_assert (!in_sequence_p ());
> +

... can the comment please be reworded to match the code, if it's necessary to
have a comment here at all?  E.g. "Ensure we walk the entire function body after
the following get_insns call".

Thanks.
Alexander


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