On Mon, Sep 3, 2018 at 2:09 PM Martin Liška <mli...@suse.cz> wrote: > > On 09/03/2018 10:19 AM, Richard Biener wrote: > > On Mon, Sep 3, 2018 at 9:56 AM Martin Liška <mli...@suse.cz> wrote: > >> > >> Hi. > >> > >> This is small improvement for {gimple,generic}-match.c files. > >> The code path that reports application of a pattern is now guarded > >> with __builtin_expect. And reporting function lives in gimple.c. > >> > >> For gimple-match.o, difference is: > >> > >> bloaty /tmp/after.o -- /tmp/before.o > >> VM SIZE FILE SIZE > >> ++++++++++++++ GROWING ++++++++++++++ > >> [ = ] 0 .rela.debug_loc +58.5Ki +0.5% > >> +0.7% +7.70Ki .text +7.70Ki +0.7% > >> [ = ] 0 .debug_info +3.53Ki +0.6% > >> [ = ] 0 .rela.debug_ranges +2.02Ki +0.0% > >> [ = ] 0 .debug_loc +1.86Ki +0.7% > >> +0.7% +448 .eh_frame +448 +0.7% > >> [ = ] 0 .rela.eh_frame +192 +0.7% > >> [ = ] 0 .rela.debug_line +48 +0.4% > >> [ = ] 0 .debug_str +26 +0.0% > >> +6.9% +9 .rodata.str1.1 +9 +6.9% > >> > >> -------------- SHRINKING -------------- > >> -97.5% -24.8Ki .rodata.str1.8 -24.8Ki -97.5% > >> [ = ] 0 .symtab -14.7Ki -26.1% > >> [ = ] 0 .strtab -3.57Ki -2.2% > >> [ = ] 0 .rela.debug_info -2.81Ki -0.0% > >> [ = ] 0 .debug_line -2.14Ki -0.6% > >> [ = ] 0 .rela.text -816 -0.1% > >> [ = ] 0 .rela.text.unlikely -288 -0.1% > >> -0.1% -131 .text.unlikely -131 -0.1% > >> [ = ] 0 [Unmapped] -23 -14.0% > >> [ = ] 0 .debug_abbrev -2 -0.1% > >> > >> -1.2% -16.8Ki TOTAL +25.1Ki +0.1% > >> > >> I'm testing the patch. > >> Thoughts? > > > > Looks good in principle but why have the function in gimple.c > > rather than in gimple-match-head.c where it could be static? > > Do we still end up inlining it even though it is guarded with > > __builtin_expect? > > Done that transformation: > > #include "gimple-match-head.c" > static void report_match_pattern (const char *match_file, unsigned int > match_file_line, const char *generated_file, unsigned int generate_file_line) > { > fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n",match_file, > match_file_line, generated_file, generate_file_line); > } > > Yes, I can confirm it's inlined now.
Hmm, but that was the point of the exercise? Not inlining it? Or was the point to have the __builtin_expect()? > Ready to install after proper testing? Just occured to me you need a copy of that in generic-match-head.c. But then, why not just add the __builtin_expect()... > Martin > > > > > Richard. > > > >> > >> Martin > >> > >> gcc/ChangeLog: > >> > >> 2018-08-31 Martin Liska <mli...@suse.cz> > >> > >> * genmatch.c (output_line_directive): Add new argument > >> fnargs. > >> (dt_simplify::gen_1): Generate call to report_match_pattern > >> function and wrap that into __builtin_expect. > >> * gimple.c (report_match_pattern): New function. > >> * gimple.h (report_match_pattern): Likewise. > >> --- > >> gcc/genmatch.c | 18 ++++++++++++------ > >> gcc/gimple.c | 14 ++++++++++++++ > >> gcc/gimple.h | 4 ++++ > >> 3 files changed, 30 insertions(+), 6 deletions(-) > >> > >> >