On 1/21/21 7:40 PM, Martin Liška wrote:
Most of the changes are in known contexts:

I've made some progress here, but still I'm unable to get a reproducible build.
Now I see difference in:

   161/   649: cp/decl.o: different
   180/   649: cp/parser.o: different
   262/   649: generic-match.o: different
   283/   649: gimple-match.o: different
   343/   649: insn-emit.o: different
   360/   649: ipa-icf.o: different

looking at *profile dump files, I only have changes in tp_first_run which end
with a different output.

Do you have any idea what can influence the minimum merging of tp_first_run 
profiles?

Martin

diff --git a/Makefile.in b/Makefile.in
index 03785200dc7..c8ebc90f622 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -565,7 +565,7 @@ STAGEprofile_TFLAGS = $(STAGE2_TFLAGS)
 STAGEtrain_CFLAGS = $(filter-out -fchecking=1,$(STAGE3_CFLAGS))
 STAGEtrain_TFLAGS = $(filter-out -fchecking=1,$(STAGE3_TFLAGS))
 
-STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use -fprofile-reproducible=parallel-runs
+STAGEfeedback_CFLAGS = $(STAGE4_CFLAGS) -fprofile-use -fprofile-reproducible=parallel-runs -fdump-ipa-profile
 STAGEfeedback_TFLAGS = $(STAGE4_TFLAGS)
 
 STAGEautoprofile_CFLAGS = $(STAGE2_CFLAGS) -g
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 1a114a2e2d0..6aeeb7118e1 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -3927,6 +3927,7 @@ struct typename_hasher : ggc_ptr_hash<tree_node>
 
   static bool
   equal (tree t1, const typename_info *t2)
+  __attribute__ ((no_profile_instrument_function))
   {
     return (TYPE_IDENTIFIER (t1) == t2->name
 	    && TYPE_CONTEXT (t1) == t2->scope
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 4b2bca3fd11..3cd2130c3de 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -1492,6 +1492,7 @@ static struct obstack declarator_obstack;
 /* Alloc BYTES from the declarator memory pool.  */
 
 static inline void *
+__attribute__ ((no_profile_instrument_function))
 alloc_declarator (size_t bytes)
 {
   return obstack_alloc (&declarator_obstack, bytes);
@@ -23056,6 +23057,7 @@ cp_parser_late_return_type_opt (cp_parser* parser, cp_declarator *declarator,
    unqualified-id.  */
 
 static tree
+__attribute__ ((no_profile_instrument_function))
 cp_parser_declarator_id (cp_parser* parser, bool optional_p)
 {
   tree id;
diff --git a/gcc/hash-table.h b/gcc/hash-table.h
index a6e0ac8eea9..3a4d01d5ef8 100644
--- a/gcc/hash-table.h
+++ b/gcc/hash-table.h
@@ -347,6 +347,7 @@ hash_table_mod1 (hashval_t hash, unsigned int index)
 /* Compute the secondary table index for HASH given current prime index.  */
 
 inline hashval_t
+__attribute__ ((no_profile_instrument_function))
 hash_table_mod2 (hashval_t hash, unsigned int index)
 {
   const struct prime_ent *p = &prime_tab[index];
@@ -422,7 +423,7 @@ public:
   /* This function searches for a hash table entry equal to the given
      COMPARABLE element starting with the given HASH value.  It cannot
      be used to insert or delete an element. */
-  value_type &find_with_hash (const compare_type &, hashval_t);
+  value_type &find_with_hash (const compare_type &, hashval_t) __attribute__ ((no_profile_instrument_function));
 
   /* Like find_slot_with_hash, but compute the hash value from the element.  */
   value_type &find (const value_type &value)
@@ -443,7 +444,7 @@ public:
      write the value you want into the returned slot.  When inserting an
      entry, NULL may be returned if memory allocation fails. */
   value_type *find_slot_with_hash (const compare_type &comparable,
-				   hashval_t hash, enum insert_option insert);
+				   hashval_t hash, enum insert_option insert)  __attribute__ ((no_profile_instrument_function));
 
   /* This function deletes an element with the given COMPARABLE value
      from hash table starting with the given HASH.  If there is no
@@ -527,7 +528,7 @@ private:
   void empty_slow ();
 
   value_type *alloc_entries (size_t n CXX_MEM_STAT_INFO) const;
-  value_type *find_empty_slot_for_expand (hashval_t);
+  value_type *find_empty_slot_for_expand (hashval_t) __attribute__ ((no_profile_instrument_function));
   void verify (const compare_type &comparable, hashval_t hash);
   bool too_empty_p (unsigned int);
   void expand ();

Reply via email to