On Fri, May 26, 2023 at 4:59 AM Andrew Pinski via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > This is based on the review of > https://gcc.gnu.org/pipermail/gcc-patches/2023-May/619342.html . > Instead of emitting debug message even if we don't apply a pattern, this > fixes the issue > by only emitting it if it the pattern finally succeeded. > > OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.
OK Thanks, Richard. > gcc/ChangeLog: > > * genmatch.cc (emit_debug_printf): New function. > (dt_simplify::gen_1): Emit printf into the code > before the `return true` or returning the folded result > instead of emitting it always. > --- > gcc/genmatch.cc | 33 ++++++++++++++++++++++----------- > 1 file changed, 22 insertions(+), 11 deletions(-) > > diff --git a/gcc/genmatch.cc b/gcc/genmatch.cc > index 177c13d87cb..bd6ce3a28f8 100644 > --- a/gcc/genmatch.cc > +++ b/gcc/genmatch.cc > @@ -3359,6 +3359,21 @@ dt_operand::gen (FILE *f, int indent, bool gimple, int > depth) > } > } > > +/* Emit a fprintf to the debug file to the file F, with the INDENT from > + either the RESULT location or the S's match location if RESULT is null. */ > +static void > +emit_debug_printf (FILE *f, int indent, class simplify *s, operand *result) > +{ > + fprintf_indent (f, indent, "if (UNLIKELY (debug_dump)) " > + "fprintf (dump_file, \"%s ", > + s->kind == simplify::SIMPLIFY > + ? "Applying pattern" : "Matching expression"); > + fprintf (f, "%%s:%%d, %%s:%%d\\n\", "); > + output_line_directive (f, > + result ? result->location : s->match->location, true, > + true); > + fprintf (f, ", __FILE__, __LINE__);\n"); > +} > > /* Generate code for the '(if ...)', '(with ..)' and actual transform > step of a '(simplify ...)' or '(match ...)'. This handles everything > @@ -3488,21 +3503,12 @@ dt_simplify::gen_1 (FILE *f, int indent, bool gimple, > operand *result) > needs_label = true; > } > > - fprintf_indent (f, indent, "if (UNLIKELY (debug_dump)) " > - "fprintf (dump_file, \"%s ", > - s->kind == simplify::SIMPLIFY > - ? "Applying pattern" : "Matching expression"); > - fprintf (f, "%%s:%%d, %%s:%%d\\n\", "); > - output_line_directive (f, > - result ? result->location : s->match->location, true, > - true); > - fprintf (f, ", __FILE__, __LINE__);\n"); > - > fprintf_indent (f, indent, "{\n"); > indent += 2; > if (!result) > { > /* If there is no result then this is a predicate implementation. */ > + emit_debug_printf (f, indent, s, result); > fprintf_indent (f, indent, "return true;\n"); > } > else if (gimple) > @@ -3593,6 +3599,7 @@ dt_simplify::gen_1 (FILE *f, int indent, bool gimple, > operand *result) > } > else > gcc_unreachable (); > + emit_debug_printf (f, indent, s, result); > fprintf_indent (f, indent, "return true;\n"); > } > else /* GENERIC */ > @@ -3646,7 +3653,10 @@ dt_simplify::gen_1 (FILE *f, int indent, bool gimple, > operand *result) > &cinfo, indexes); > } > if (is_predicate) > - fprintf_indent (f, indent, "return true;\n"); > + { > + emit_debug_printf (f, indent, s, result); > + fprintf_indent (f, indent, "return true;\n"); > + } > else > { > fprintf_indent (f, indent, "tree _r;\n"); > @@ -3712,6 +3722,7 @@ dt_simplify::gen_1 (FILE *f, int indent, bool gimple, > operand *result) > i); > } > } > + emit_debug_printf (f, indent, s, result); > fprintf_indent (f, indent, "return _r;\n"); > } > } > -- > 2.31.1 >