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