[PATCH][stage1] Support profile (BB counts and edge probabilities) in GIMPLE FE.
Martin Liška
mliska@suse.cz
Mon Apr 8 13:35:00 GMT 2019
On 4/8/19 11:11 AM, Richard Biener wrote:
> On Fri, Apr 5, 2019 at 2:32 PM Martin Liška <mliska@suse.cz> wrote:
>>
>> Hi.
>>
>> The patch adds support for profile for GIMPLE FE. That can be useful
>> in the future.
>>
>> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>>
>> Ready to be installed after stage1 opens?
>
> Hmm, I guess to be useful we need the profile quality indicators as well
> (and think about a proper syntax here since it seems related).
I wanted to make it easy, buy yes. We should implement that.
>
> Btw, do BB counts and edge probabilities not have a relation?
Yes, they should match. But you have optimizations that make some discrepancies.
So that I would implement support for both of them.
> If so why
> do we need both? In predict.c we also look at ENTRY_BLOCK->count
> so we need a place to set that as well. We should probably set
> edge probabilities of fallthru edges properly during our "CFG build".
>
> + goto __BB3(44739243);
>
> since we eventually want to add other flags this syntactically
> should maybe be goto __BB3(guessed(44739243)); and similar
> for the __BB count case (just s/count/quality/).
The syntax works for me.
>
> The entry block count could be sticked to __GIMPLE (ssa,guessed(N))
> for example. There's also the exit block, not sure if we ever look at
> its count, so __GIMPLE (ssa,guessed(N[,M])) might be a possibility
> if we always have the same quality here (probably not...).
I'll check it.
>
> Otherwise thanks for trying ;)
>
> Richard.
>
>> Thanks,
>> Martin
>>
>> gcc/ChangeLog:
>>
>> 2019-04-05 Martin Liska <mliska@suse.cz>
>>
>> * gimple-pretty-print.c (dump_gimple_bb_header):
>> Dump BB count.
>> (pp_cfg_jump): Dump edge probability.
>> * profile-count.h (get_raw_value): New function.
>> (from_raw_value): Likewise.
>>
>> gcc/c/ChangeLog:
>>
>> 2019-04-05 Martin Liska <mliska@suse.cz>
>>
>> * gimple-parser.c (struct gimple_parser): Add frequency
>> for gimple_parser_edge.
>> (gimple_parser::push_edge): Add new argument frequency.
>> (c_parser_gimple_parse_bb_spec): Parse also frequency
>> if present.
>> (c_parser_parse_gimple_body): Set edge probability.
>> (c_parser_gimple_compound_statement): Consume token
>> before calling c_parser_gimple_goto_stmt.
>> Parse BB counts.
>> (c_parser_gimple_statement): Pass new argument.
>> (c_parser_gimple_goto_stmt): Likewise.
>> (c_parser_gimple_if_stmt): Likewise.
>>
>> gcc/testsuite/ChangeLog:
>>
>> 2019-04-05 Martin Liska <mliska@suse.cz>
>>
>> * gcc.dg/gimplefe-37.c: New test.
>> ---
>> gcc/c/gimple-parser.c | 116 +++++++++++++++++++++++------
>> gcc/gimple-pretty-print.c | 8 ++
>> gcc/profile-count.h | 15 ++++
>> gcc/testsuite/gcc.dg/gimplefe-37.c | 27 +++++++
>> 4 files changed, 144 insertions(+), 22 deletions(-)
>> create mode 100644 gcc/testsuite/gcc.dg/gimplefe-37.c
>>
>>
More information about the Gcc-patches
mailing list