This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix funcition level hot/cold partitionig


Hi,
this patch fixes another issue found by Martin Liska's patch to trap in unlikely
section (last one which I need to bootstrap).

Here we confused local and global counts, which was misupdate at a time I
introudced them.  Bootstrapped/regtested x86_64-linux.

Honza

	* ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
	with zero counts.
Index: ipa-profile.c
===================================================================
--- ipa-profile.c	(revision 257011)
+++ ipa-profile.c	(working copy)
@@ -331,16 +331,14 @@ ipa_propagate_frequency_1 (struct cgraph
 	 it is executed by the train run.  Transfer the function only if all
 	 callers are unlikely executed.  */
       if (profile_info
-	  && edge->callee->count.initialized_p ()
-	  /* Thunks are not profiled.  This is more or less implementation
-	     bug.  */
-	  && !d->function_symbol->thunk.thunk_p
+	  && !(edge->callee->count.ipa () == profile_count::zero ())
 	  && (edge->caller->frequency != NODE_FREQUENCY_UNLIKELY_EXECUTED
 	      || (edge->caller->global.inlined_to
 		  && edge->caller->global.inlined_to->frequency
 		     != NODE_FREQUENCY_UNLIKELY_EXECUTED)))
 	  d->maybe_unlikely_executed = false;
-      if (edge->count.initialized_p () && !edge->count.nonzero_p ())
+      if (edge->count.ipa ().initialized_p ()
+	  && !edge->count.ipa ().nonzero_p ())
 	continue;
       switch (edge->caller->frequency)
         {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]