kadircet accepted this revision.
kadircet added a comment.
This revision is now accepted and ready to land.

thanks, lgtm!



================
Comment at: clang-tools-extra/clangd/Compiler.cpp:42
                                          const clang::Diagnostic &Info) {
+  DiagnosticConsumer::HandleDiagnostic(DiagLevel, Info);
   IgnoreDiagnostics::log(DiagLevel, Info);
----------------
not sure i follow this change. is this for making sure fatal/error diagnostic 
counts can be checked (so that actions can signal failure) or something else?


================
Comment at: clang/lib/Frontend/CreateInvocationFromCommandLine.cpp:92
-  const driver::Command &Cmd = cast<driver::Command>(*Jobs.begin());
-  if (StringRef(Cmd.getCreator().getName()) != "clang") {
     Diags->Report(diag::err_fe_expected_clang_command);
----------------
sammccall wrote:
> kadircet wrote:
> > hmm, this looks like a subtle behaviour change. I definitely like the 
> > behaviour you proposed better, but maybe do it in a separate patch for 
> > making the revert easier if need be?
> Which behavior change are do you mean?
> 
> When RecoverFromErrors is false and OffloadCompilation is false, behavior is 
> same as before: if there isn't exactly one job we diagnose that and exit, if 
> it's not suitable we diagnose that and exit.
> 
> When RecoverFromErrors is true we search for the first suitable job, instead 
> of complaining that the number is wrong or the one at the front isn't 
> suitable, this is the intended change (and basically only affects clangd).
> 
> When OffloadCompilation is true, there is a behavior change: previously we'd 
> use the first job and fail if it's not clang, now we'll use the first clang 
> job. The old behavior seems brittle and the change only affects (previously) 
> error cases, and I'd have to add more complexity to preserve it - is this 
> worthwhile?
> When OffloadCompilation is true, there is a behavior change: previously we'd 
> use the first job and fail if it's not clang, now we'll use the first clang 
> job.

I was talking about this particular change.

> The old behavior seems brittle and the change only affects (previously) error 
> cases

As mentioned I also like the new behaviour more, I just don't know about what 
the offloading logic does (i suppose it is about cuda compilation) and I was 
anxious about it breaking when one of the Jobs satisfy the constraint but it is 
not the first one.

> and I'd have to add more complexity to preserve it - is this worthwhile?

One option could be to just keep this part the same (i.e. only use the first 
Job as long as `PickFirstOfMany` is set, even if `OffloadCompilation` is 
false). Then send a follow-up change, that'll search for a suitable job. That 
way we can only revert the last one if it breaks and know the constraints. (And 
decide to do the search iff `ShouldRecoverOnErorrs && !Offload`). But it is not 
that important, feel free to just land as-is.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D107632/new/

https://reviews.llvm.org/D107632

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

Reply via email to