aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfghooks.h
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-11-13 16:06:54 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-11-13 15:06:54 +0000
commit160576e1ac9bbee90af9e09e1507f64d58473358 (patch)
tree6541a5a15b3bc6f875bc04aac0025283eb9d84a6 /gcc/cfghooks.h
parente4db210dd8683bf7b2a8ea828d6ea0b18967630a (diff)
downloadgcc-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.h17
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;