diff options
author | Martin Liska <mliska@suse.cz> | 2021-12-01 13:30:25 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2021-12-01 13:30:25 +0100 |
commit | 4cba2fa027afd5f815bd9bf3965afe1972c7387c (patch) | |
tree | efa05b4ca35e93c65eb1a2585d5ad3dd2dd3db32 /gcc/tree-cfg.c | |
parent | 789b80d1fbd0b1d516b389bf11b5c70aa4d1088b (diff) | |
parent | d376b73aa12d183e3040456c7641fb74500d0727 (diff) | |
download | gcc-4cba2fa027afd5f815bd9bf3965afe1972c7387c.zip gcc-4cba2fa027afd5f815bd9bf3965afe1972c7387c.tar.gz gcc-4cba2fa027afd5f815bd9bf3965afe1972c7387c.tar.bz2 |
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 8ed8c69..ebbd894 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -64,6 +64,7 @@ along with GCC; see the file COPYING3. If not see #include "opts.h" #include "asan.h" #include "profile.h" +#include "sreal.h" /* This file contains functions for building the Control Flow Graph (CFG) for a function tree. */ @@ -9084,18 +9085,32 @@ gimple_account_profile_record (basic_block bb, struct profile_record *record) { gimple_stmt_iterator i; - for (i = gsi_start_bb (bb); !gsi_end_p (i); gsi_next (&i)) + for (i = gsi_start_nondebug_after_labels_bb (bb); !gsi_end_p (i); + gsi_next_nondebug (&i)) { record->size += estimate_num_insns (gsi_stmt (i), &eni_size_weights); - if (bb->count.initialized_p ()) + if (profile_info) + { + if (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count.ipa ().initialized_p () + && ENTRY_BLOCK_PTR_FOR_FN (cfun)->count.ipa ().nonzero_p () + && bb->count.ipa ().initialized_p ()) + record->time + += estimate_num_insns (gsi_stmt (i), + &eni_time_weights) + * bb->count.ipa ().to_gcov_type (); + } + else if (bb->count.initialized_p () + && ENTRY_BLOCK_PTR_FOR_FN (cfun)->count.initialized_p ()) record->time - += estimate_num_insns (gsi_stmt (i), - &eni_time_weights) * bb->count.to_gcov_type (); - else if (profile_status_for_fn (cfun) == PROFILE_GUESSED) - record->time - += estimate_num_insns (gsi_stmt (i), - &eni_time_weights) * bb->count.to_frequency (cfun); + += estimate_num_insns + (gsi_stmt (i), + &eni_time_weights) + * bb->count.to_sreal_scale + (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count).to_double (); + else + record->time + += estimate_num_insns (gsi_stmt (i), &eni_time_weights); } } |