Hi, The field in which profile_count holds the count has 61 bits but the getter method only returns it as a 32 bit number. The getter is (and should be) only used for dumping but even dumps are better when they do not lie.
The patch has passed bootstrap and testing on x86_64-linux and Honza has approved it so I will commit it shortly. Martin gcc/ChangeLog: 2021-07-13 Martin Jambor <mjam...@suse.cz> * profile-count.h (profile_count::value): Change the return type to uint64_t. * gimple-pretty-print.c (dump_gimple_bb_header): Adjust print statement. * tree-cfg.c (dump_function_to_file): Likewise. --- gcc/gimple-pretty-print.c | 2 +- gcc/profile-count.h | 2 +- gcc/tree-cfg.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c index 39c5775e2cb..d6e63d6e57f 100644 --- a/gcc/gimple-pretty-print.c +++ b/gcc/gimple-pretty-print.c @@ -2831,7 +2831,7 @@ dump_gimple_bb_header (FILE *outf, basic_block bb, int indent, if (bb->loop_father->header == bb) fprintf (outf, ",loop_header(%d)", bb->loop_father->num); if (bb->count.initialized_p ()) - fprintf (outf, ",%s(%d)", + fprintf (outf, ",%s(%" PRIu64 ")", profile_quality_as_string (bb->count.quality ()), bb->count.value ()); fprintf (outf, "):\n"); diff --git a/gcc/profile-count.h b/gcc/profile-count.h index f2b1e3a6525..c7a45ac5ee3 100644 --- a/gcc/profile-count.h +++ b/gcc/profile-count.h @@ -804,7 +804,7 @@ public: } /* Get the value of the count. */ - uint32_t value () const { return m_val; } + uint64_t value () const { return m_val; } /* Get the quality of the count. */ enum profile_quality quality () const { return m_quality; } diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index c73e1cbdda6..2ed191f9a47 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -8081,7 +8081,7 @@ dump_function_to_file (tree fndecl, FILE *file, dump_flags_t flags) { basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (cfun); if (bb->count.initialized_p ()) - fprintf (file, ",%s(%d)", + fprintf (file, ",%s(%" PRIu64 ")", profile_quality_as_string (bb->count.quality ()), bb->count.value ()); fprintf (file, ")\n%s (", function_name (fun)); -- 2.32.0