------- Comment #11 from xinliangli at gmail dot com  2008-03-13 06:20 -------
(In reply to comment #10)
> Subject: Re:   New: Error with -fprofile-use
> 
> xinliangli at gmail dot com wrote:
> > In the following example, profile data generated by -O0 binary run can not 
> > be
> > used for profile-use at -O2. This is either a bug or design flaw if not
> > supported.
> 
> Gcc constructs a minimal spanning tree for the CFG, and then only adds 
> instrumentation code to arcs that are not on the minimal spanning tree. 
>     We can compute arc counts for the rest of the CFG from this set.  We 
> can compute basic block execution counts from the arc counts.  This 
> reduces the run-time cost of the instrumentation code, since only a 
> small fraction of the basic blocks require profiling code.  However, it 
> also requires that we have exactly the same CFG with -fprofile-generate 
> as we have with -fprofile-use, and hence you must use the same 
> optimization options with both compiles.
> 
> Jim
> 

Gcc's design minimizes runtime overhead for edge profiling -- this is a very
good design. Same CFG is the requirement for other compilers as well, but some
compilers do tolerate some differences even with source some source changes --
this give user the flexibility to use slightly stale profile data while still
getting some performance benefit.  Please note that people already hate FDO due
to its complicated steps -- adding more constraints won't help to make them
happy.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35544

Reply via email to