> On Jul 19, 2016, at 5:01 PM, Xinliang David Li <davi...@google.com> wrote:
> 
> The new behavior works really well. There is one follow up change I would 
> like to discuss.  
> 
> The EQ form of the option -fprofile-generate= takes a directory name as the 
> argument instead of the filename. Currently the compiler will create a 
> default 'default.profraw' name for it, but this means, online merging won't 
> be available unless environment variable is also used, which is not 
> convenient.  I propose we change the default behavior to enable profile 
> online merging (i.e., use default_%m.profraw as the default name) for the 
> following reasons:
> 
> 1) There is almost no downside enabling profiling merging by default -- new 
> capability is enabled with no lost functionality

To be clear, this is a behavior change, but IMO the new behavior would be
better.

Instead of creating programs that clobber over existing profiles by default
they would merge into a set of profiles.


> 2) WIth profile merging enabled for instrumented programs with instrumented 
> shared libs, each lib will dump its own profile data in the same dir, but 
> users of -fprofile-generate= option usually do not care about what/how many 
> raw profile names are in the directory (note that GCC's behavior is one 
> profile per object module), they just pack up the while directory. 
> llvm-profdata also support merging (for indexed profile) with input-list-file 
> option.  
> 3) GCC's has online merging support, so having online merging by default with 
> this option matches up better the claim that it is a GCC compatible option.
> 
> What do you think?

+ 1

thanks,
vedant

> 
> thanks,
> 
> David
> 
> 
> 
> On Sat, Jul 9, 2016 at 4:39 PM, Sean Silva <chisophu...@gmail.com> wrote:
> silvas added a comment.
> 
> In http://reviews.llvm.org/D21823#479418, @davidxl wrote:
> 
> > I should have brought it up earlier, but I forgot.    I think a better (and 
> > simpler) proposal is to make -fprofile-generate and -fprofile-use turn on 
> > IR based PGO.
> >
> > -fprofile-generate and -fprofile-use options were introduced by Diego 
> > (cc'ed) recently for GCC option compatibility. At that time, IR based PGO 
> > was not yet ready, so they were made aliases to FE instrumentation options 
> > -fprofile-instr-generate and -fprofile-instr-use.    Now I think it is time 
> > to make it right.   The documentation only says that these two options are 
> > gcc compatible options to control profile generation and use, but does not 
> > specify the underlying implementation. It is also likely that Google is the 
> > only user of this option. If a user using this option really want FE 
> > instrumentation, there is always -fprofile-instr-generate to use.  It also 
> > more likely that IR instrumentation is what user wants when using GCC 
> > compatible options (as they behave more similarly).
> 
> 
> This SGTM.
> 
> It may cause some user confusion since there is no obvious distinction 
> between "profile generate" and "profile instr generate" from a user 
> perspective. But we can avoid that with improved documentation.
> 
> My main concern is that the existing documentation already says that 
> -fprofile-generate behaves identically to -fprofile-instr-generate 
> http://clang.llvm.org/docs/UsersManual.html#cmdoption-fprofile-generate
> However, I think it is reasonable to change this behavior (and of course the 
> documentation), as users of this option are likely using it for compatibility 
> with GCC and so they likely don't care about the specifics of clang FEPGO.
> We probably want to at least leave a small note in the documentation 
> regarding this change of behavior.
> 
> 
> Repository:
>   rL LLVM
> 
> http://reviews.llvm.org/D21823
> 
> 
> 
> 

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to