From: marxin Date: Tue, 4 Sep 2018 13:59:38 +0000 (+0000) Subject: genmatch: put reporting on a cold path X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=599fba1616c187e87a9caf03b9a8d50e1b31986e;p=thirdparty%2Fgcc.git genmatch: put reporting on a cold path 2018-09-04 Martin Liska * genmatch.c (output_line_directive): Add new argument fnargs. (dt_simplify::gen_1): Encapsulate dump within __builtin_expect. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264084 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7cbfcad8d849..8cba0290c46a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-09-04 Martin Liska + + * genmatch.c (output_line_directive): Add new argument + fnargs. + (dt_simplify::gen_1): Encapsulate dump within __builtin_expect. + 2018-09-04 Jonathan Wakely * doc/invoke.texi (Option Summary): Add whitespace. diff --git a/gcc/genmatch.c b/gcc/genmatch.c index 50d72f8f1e79..5f1691ae206a 100644 --- a/gcc/genmatch.c +++ b/gcc/genmatch.c @@ -184,7 +184,7 @@ fprintf_indent (FILE *f, unsigned int indent, const char *format, ...) static void output_line_directive (FILE *f, source_location location, - bool dumpfile = false) + bool dumpfile = false, bool fnargs = false) { const line_map_ordinary *map; linemap_resolve_location (line_table, location, LRK_SPELLING_LOCATION, &map); @@ -202,7 +202,11 @@ output_line_directive (FILE *f, source_location location, file = loc.file; else ++file; - fprintf (f, "%s:%d", file, loc.line); + + if (fnargs) + fprintf (f, "\"%s\", %d", file, loc.line); + else + fprintf (f, "%s:%d", file, loc.line); } else /* Other gen programs really output line directives here, at least for @@ -3305,11 +3309,13 @@ dt_simplify::gen_1 (FILE *f, int indent, bool gimple, operand *result) } } - fprintf_indent (f, indent, "if (dump_file && (dump_flags & TDF_FOLDING)) " + fprintf_indent (f, indent, "if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) " "fprintf (dump_file, \"Applying pattern "); + fprintf (f, "%%s:%%d, %%s:%%d\\n\", "); output_line_directive (f, - result ? result->location : s->match->location, true); - fprintf (f, ", %%s:%%d\\n\", __FILE__, __LINE__);\n"); + result ? result->location : s->match->location, true, + true); + fprintf (f, ", __FILE__, __LINE__);\n"); if (!result) {