On Sat, Jun 22, 2024 at 9:01 PM Andi Kleen <[email protected]> wrote:
>
> gcc/ChangeLog:
OK. Btw, I wonder if you can squash all error/dump related patches to
tree-tailcall.cc
> * tree-tailcall.cc (maybe_error_musttail): Print reason to
> dump_file.
> (find_tail_calls): Print gimple stmt or other reasons that stop
> the search for tail calls into dump file.
> ---
> gcc/tree-tailcall.cc | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/tree-tailcall.cc b/gcc/tree-tailcall.cc
> index a77fa1511415..f69a9ad40bda 100644
> --- a/gcc/tree-tailcall.cc
> +++ b/gcc/tree-tailcall.cc
> @@ -442,6 +442,11 @@ maybe_error_musttail (gcall *call, const char *err)
> gimple_call_set_must_tail (call, false); /* Avoid another error. */
> gimple_call_set_tail (call, false);
> }
> + if (dump_file)
> + {
> + print_gimple_stmt (dump_file, call, 0, TDF_SLIM);
> + fprintf (dump_file, "Cannot convert: %s\n", err);
> + }
> }
>
> /* Count succ edges for BB and return in NUM_OTHER and NUM_EH. */
> @@ -492,7 +497,12 @@ find_tail_calls (basic_block bb, struct tailcall **ret,
> bool only_musttail,
> /* Allow EH edges so that we can give a better
> error message later. */
> if (num_other != 1)
> - return;
> + {
> + if (dump_file)
> + fprintf (dump_file, "Basic block %d has %d eh / %d other edges\n",
> + bb->index, num_eh, num_other);
> + return;
> + }
> }
>
> bool bad_stmt = false;
> @@ -537,6 +547,11 @@ find_tail_calls (basic_block bb, struct tailcall **ret,
> bool only_musttail,
> if (gimple_references_memory_p (stmt)
> || gimple_has_volatile_ops (stmt))
> {
> + if (dump_file)
> + {
> + fprintf (dump_file, "Cannot handle ");
> + print_gimple_stmt (dump_file, stmt, 0);
> + }
> bad_stmt = true;
> }
> }
> --
> 2.45.2
>