diff mbox

[2/6] Don't run instrumented value profiler changes with afdo

Message ID 20160627015024.23444-3-andi@firstfloor.org
State New
Headers show

Commit Message

Andi Kleen June 27, 2016, 1:50 a.m. UTC
From: Andi Kleen <ak@linux.intel.com>

The pass to transform gimple based on value profiling runs with autofdo
on, but currently every transformation fails. For indirect calls autofdo
does it on its own, and it doesn't suppport other value profiling. So don't
run this pass when autofdo is active. This also avoids bogus
dump file entries.

gcc/:

* 2016-06-26  Andi Kleen  <ak@linux.intel.com>

	* value-prof.c (gimple_value_profile_transformations): Don't run
	when auto_profile is on.
---
 gcc/value-prof.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Jeff Law July 13, 2016, 9:30 p.m. UTC | #1
On 06/26/2016 07:50 PM, Andi Kleen wrote:
> From: Andi Kleen <ak@linux.intel.com>
>
> The pass to transform gimple based on value profiling runs with autofdo
> on, but currently every transformation fails. For indirect calls autofdo
> does it on its own, and it doesn't suppport other value profiling. So don't
> run this pass when autofdo is active. This also avoids bogus
> dump file entries.
>
> gcc/:
>
> * 2016-06-26  Andi Kleen  <ak@linux.intel.com>
>
> 	* value-prof.c (gimple_value_profile_transformations): Don't run
> 	when auto_profile is on.
I don't think that comment is really correct.   There's all kinds of 
things going on with div/mod operations, turning string builtins into 
straightline code, etc that I see in value-prof that aren't done by 
autofdo AFAICT.

I can live with the change if the comment is corrected.

jeff
diff mbox

Patch

diff --git a/gcc/value-prof.c b/gcc/value-prof.c
index f9574b6..52068eb 100644
--- a/gcc/value-prof.c
+++ b/gcc/value-prof.c
@@ -645,6 +645,11 @@  gimple_value_profile_transformations (void)
   basic_block bb;
   gimple_stmt_iterator gsi;
   bool changed = false;
+
+  /* Autofdo does all transformations it supports elsewhere.  */
+  if (flag_auto_profile)
+    return false;
+
   FOR_EACH_BB_FN (bb, cfun)
     {
       for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))