diff options
author | Martin Liska <mliska@suse.cz> | 2018-11-13 16:06:54 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-11-13 15:06:54 +0000 |
commit | 160576e1ac9bbee90af9e09e1507f64d58473358 (patch) | |
tree | 6541a5a15b3bc6f875bc04aac0025283eb9d84a6 /gcc/cfghooks.h | |
parent | e4db210dd8683bf7b2a8ea828d6ea0b18967630a (diff) | |
download | gcc-160576e1ac9bbee90af9e09e1507f64d58473358.zip gcc-160576e1ac9bbee90af9e09e1507f64d58473358.tar.gz gcc-160576e1ac9bbee90af9e09e1507f64d58473358.tar.bz2 |
Improve -fprofile-report.
2018-11-13 Martin Liska <mliska@suse.cz>
PR tree-optimization/87885
* cfghooks.c (account_profile_record): Rename
to ...
(profile_record_check_consistency): ... this.
Calculate missing num_mismatched_freq_in.
(profile_record_account_profile): New function
that calculates time and size of a function.
* cfghooks.h (struct profile_record): Remove
all tuples.
(struct cfg_hooks): Remove after_pass flag.
(account_profile_record): Rename to ...
(profile_record_check_consistency): ... this.
(profile_record_account_profile): New.
* cfgrtl.c (rtl_account_profile_record): Remove
after_pass flag.
* passes.c (check_profile_consistency): Do only
checking.
(account_profile): Calculate size and time of
function only.
(pass_manager::dump_profile_report): Reformat
output.
(execute_one_ipa_transform_pass): Call
consistency check before clean upand call account_profile
after a clean up is done.
(execute_one_pass): Call check_profile_consistency and
account_profile instead of using after_pass flag..
* tree-cfg.c (gimple_account_profile_record): Likewise.
From-SVN: r266074
Diffstat (limited to 'gcc/cfghooks.h')
-rw-r--r-- | gcc/cfghooks.h | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/cfghooks.h b/gcc/cfghooks.h index b5981da4..d1d2e70 100644 --- a/gcc/cfghooks.h +++ b/gcc/cfghooks.h @@ -38,18 +38,18 @@ struct profile_record { /* The number of basic blocks where sum(freq) of the block's predecessors doesn't match reasonably well with the incoming frequency. */ - int num_mismatched_freq_in[2]; + int num_mismatched_freq_in; /* Likewise for a basic block's successors. */ - int num_mismatched_freq_out[2]; + int num_mismatched_freq_out; /* The number of basic blocks where sum(count) of the block's predecessors doesn't match reasonably well with the incoming frequency. */ - int num_mismatched_count_in[2]; + int num_mismatched_count_in; /* Likewise for a basic block's successors. */ - int num_mismatched_count_out[2]; + int num_mismatched_count_out; /* A weighted cost of the run-time of the function body. */ - gcov_type time[2]; + gcov_type_unsigned time; /* A weighted cost of the size of the function body. */ - int size[2]; + int size; /* True iff this pass actually was run. */ bool run; }; @@ -182,7 +182,7 @@ struct cfg_hooks basic_block (*split_block_before_cond_jump) (basic_block); /* Do book-keeping of a basic block for the profile consistency checker. */ - void (*account_profile_record) (basic_block, int, struct profile_record *); + void (*account_profile_record) (basic_block, struct profile_record *); }; extern void verify_flow_info (void); @@ -254,7 +254,8 @@ extern void copy_bbs (basic_block *, unsigned, basic_block *, edge *, unsigned, edge *, struct loop *, basic_block, bool); -void account_profile_record (struct profile_record *, int); +void profile_record_check_consistency (profile_record *); +void profile_record_account_profile (profile_record *); /* Hooks containers. */ extern struct cfg_hooks gimple_cfg_hooks; |