Support profile (BB counts and edge probabilities) in GIMPLE FE.
commitd276406ac1e7fc7f9c380325c994cf477b3d6fb8
authorMartin Liska <mliska@suse.cz>
Thu, 9 May 2019 13:03:28 +0000 (9 15:03 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 9 May 2019 13:03:28 +0000 (9 13:03 +0000)
treeaaacbcded0429a0522a06ff2c662c5f3910bcaf4
parent555dbc42b2dfed0c9e70e9e53fcd569f82aeae02
Support profile (BB counts and edge probabilities) in GIMPLE FE.

2019-05-09  Martin Liska  <mliska@suse.cz>

* tree-cfg.c (dump_function_to_file): Dump entry BB count.
* gimple-pretty-print.c (dump_gimple_bb_header):
Dump BB count.
(pp_cfg_jump): Dump edge probability.
* profile-count.c (profile_quality_as_string): Simplify
with a static array.
(parse_profile_quality): New function.
(profile_count::dump): Simplify with a static array.
(profile_count::from_gcov_type): Add new argument.
* profile-count.h (parse_profile_quality): Likewise.
* predict.h (set_hot_bb_threshold): New.
* params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
New param.
* predict.c (get_hot_bb_threshold): Set from the new param.
(set_hot_bb_threshold): New.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gimple-parser.c (struct gimple_parser): Add probability.
for gimple_parser_edge.
(gimple_parser::push_edge): Add new argument probability.
(c_parser_gimple_parse_bb_spec): Parse also probability
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.
(c_parser_gimple_or_rtl_pass_list): Parse hot_bb_threshold.
* c-parser.c (c_parser_declaration_or_fndef): Pass
hot_bb_threshold argument.
* c-tree.h (struct c_declspecs): Add hot_bb_threshold
field.
(c_parser_gimple_parse_bb_spec_edge_probability): New.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gcc.dg/gimplefe-37.c: New test.
* gcc.dg/gimplefe-33.c: Likewise.

From-SVN: r271034
15 files changed:
gcc/ChangeLog
gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/c/c-tree.h
gcc/c/gimple-parser.c
gcc/c/gimple-parser.h
gcc/gimple-pretty-print.c
gcc/params.def
gcc/predict.c
gcc/profile-count.c
gcc/profile-count.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/gimplefe-37.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/gimplefe-38.c [new file with mode: 0644]
gcc/tree-cfg.c