> Hi. > > There's one more similar patch. > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed? OK, thanks! Honza > Thanks, > Martin
> From 466a951d51064a4b339b1332c1723e77e3170150 Mon Sep 17 00:00:00 2001 > From: Martin Liska <mli...@suse.cz> > Date: Thu, 6 Jun 2019 14:37:45 +0200 > Subject: [PATCH] IPA ICF: enhance dump about items in a non-singular class. > > gcc/ChangeLog: > > 2019-06-06 Martin Liska <mli...@suse.cz> > > * ipa-icf.c (sem_item_optimizer::parse_nonsingleton_classes): > Update coding style. > (sem_item_optimizer::dump_cong_classes): > Print how many items are in a non-singular class. Improve > coding style. > > gcc/testsuite/ChangeLog: > > 2019-06-07 Martin Liska <mli...@suse.cz> > > * gcc.dg/ipa/pr68035.c: Update scanned pattern. > --- > gcc/ipa-icf.c | 34 +++++++++++++++--------------- > gcc/testsuite/gcc.dg/ipa/pr68035.c | 2 +- > 2 files changed, 18 insertions(+), 18 deletions(-) > > diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c > index 6307407935f..7c486eda758 100644 > --- a/gcc/ipa-icf.c > +++ b/gcc/ipa-icf.c > @@ -2744,20 +2744,20 @@ sem_item_optimizer::build_graph (void) > void > sem_item_optimizer::parse_nonsingleton_classes (void) > { > - unsigned int init_called_count = 0; > + unsigned int counter = 0; > > for (unsigned i = 0; i < m_items.length (); i++) > if (m_items[i]->cls->members.length () > 1) > { > m_items[i]->init (); > - init_called_count++; > + ++counter; > } > > if (dump_file) > - fprintf (dump_file, "Init called for %u items (%.2f%%).\n", > - init_called_count, > - m_items.length () ? 100.0f * init_called_count / m_items.length () > - : 0.0f); > + { > + float f = m_items.length () ? 100.0f * counter / m_items.length () : > 0.0f; > + fprintf (dump_file, "Init called for %u items (%.2f%%).\n", counter, > f); > + } > } > > /* Equality function for semantic items is used to subdivide existing > @@ -3274,13 +3274,9 @@ sem_item_optimizer::dump_cong_classes (void) > if (!dump_file) > return; > > - fprintf (dump_file, > - "Congruence classes: %u (unique hash values: %lu), with total: " > - "%u items\n", m_classes_count, > - (unsigned long) m_classes.elements (), m_items.length ()); > - > /* Histogram calculation. */ > unsigned int max_index = 0; > + unsigned int single_element_classes = 0; > unsigned int* histogram = XCNEWVEC (unsigned int, m_items.length () + 1); > > for (hash_table<congruence_class_hash>::iterator it = m_classes.begin (); > @@ -3292,21 +3288,25 @@ sem_item_optimizer::dump_cong_classes (void) > > if (c > max_index) > max_index = c; > + > + if (c == 1) > + ++single_element_classes; > } > > + fprintf (dump_file, > + "Congruence classes: %lu with total: %u items (in a non-singular " > + "class: %u)\n", (unsigned long) m_classes.elements (), > + m_items.length (), m_items.length () - single_element_classes); > fprintf (dump_file, > "Class size histogram [num of members]: number of classe number " > "of classess\n"); > - > for (unsigned int i = 0; i <= max_index; i++) > if (histogram[i]) > - fprintf (dump_file, "[%u]: %u classes\n", i, histogram[i]); > - > - fprintf (dump_file, "\n\n"); > + fprintf (dump_file, "%6u: %6u\n", i, histogram[i]); > > if (dump_flags & TDF_DETAILS) > - for (hash_table<congruence_class_hash>::iterator it = m_classes.begin (); > - it != m_classes.end (); ++it) > + for (hash_table<congruence_class_hash>::iterator it = m_classes.begin (); > + it != m_classes.end (); ++it) > { > fprintf (dump_file, " group: with %u classes:\n", > (*it)->classes.length ()); > diff --git a/gcc/testsuite/gcc.dg/ipa/pr68035.c > b/gcc/testsuite/gcc.dg/ipa/pr68035.c > index a8cb77971f6..f6adad9f24d 100644 > --- a/gcc/testsuite/gcc.dg/ipa/pr68035.c > +++ b/gcc/testsuite/gcc.dg/ipa/pr68035.c > @@ -105,4 +105,4 @@ list_49, > }; > > > -/* { dg-final { scan-ipa-dump "unique hash values: 51" "icf" } } */ > +/* { dg-final { scan-ipa-dump "Congruence classes: 51" "icf" } } */ > -- > 2.21.0 >