On Wed, Jan 27, 2016 at 11:31 AM, David Li <davi...@google.com> wrote:
> davidxl added inline comments.
>
> ================
> Comment at: lib/Driver/Tools.cpp:5520
> @@ +5519,3 @@
> +    A->claim();
> +    if ((StringRef(A->getValue(0)) == "-fprofile-ir-instr") &&
> +        (Args.hasArg(options::OPT_fprofile_instr_generate) ||
> ----------------
> silvas wrote:
>> This is definitely not the right thing to do. Don't hijack -Xclang (which is 
>> a completely generic thing).
> Why do we need special handling here ? will the existing behavior (simple 
> forwarding) work?

The original patch does the simple forwarding. In that case, we handle
the cc1 options (choosing b/w IR or clang instrumentation) in
CompilerInvocation.cpp. Sean and Chad think this logic should be
driver.

>
> Note that intention of the cc1 option is to hide it from the user but make it 
> used by the developers -- so we can make assumption that this option is used 
> only when -fprofile-instr-generate[=...] is specified. You can add 
> diagnostics later during cc1 option processing if it is not the case.
>
> Also think about making it easier to flip the default behavior in the future, 
> it might be better to make the cc1 option look like this:
>
> -fprofile-instrumentor=[clang|LLVM]
>
> if the option is missing, the current default will be 'clang'. In the future 
> just switch it to 'llvm'.
>
> ================
> Comment at: lib/Frontend/CompilerInvocation.cpp:483
> @@ +482,3 @@
> +    Opts.ProfileIRInstr = true;
> +  else
> +    // Opts.ClangProfInstrGen will be used for Clang instrumentation only.
> ----------------
> silvas wrote:
>> This still isn't factored right. I think at this point the meaning of the 
>> driver-level options is not really useful at CC1 level (too convoluted) for 
>> it to be useful to pass them through.
>>
>> The right thing to do here is probably more like:
>> - refactor so that we have 4 individual CC1 options for InstrProfileOutput, 
>> InstrProfileInput, ProfileIRInstr, ClangProfInstrGen (although probably 
>> rename ClangProfInstrGen and ProfileIRInstr to be consistent with each 
>> other, e.g. "ProfileIRInstr" and "ProfileClangInstr").
>> - add logic in Driver to convert from the driver-level options to the CC1 
>> options.
> It is already pretty close to your proposal -- the only missing thing is cc1 
> option for ClangProfInstrGen. However given that IR and Clang InstrGen are 
> mutually exclusive, is an additional CC1 option needed?
>
>
> http://reviews.llvm.org/D15829
>
>
>
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to