aganea added inline comments.

================
Comment at: clang/lib/Driver/Driver.cpp:3782
+          = Cmd.getProcessStatistics();
+      if (ProcStat) {
+        if (PrintProcessStat) {
----------------
sepavloff wrote:
> aganea wrote:
> > In the case where `!ProcStat`, I am wondering if we shouldn't emit zero 
> > values, in the report file at least. Otherwise if an invocation fails, it 
> > won't be there in the report and we might wonder why. Emitting 0 might 
> > indicate that something went wrong.
> The feature allows getting statistics using conventional tools like `make`. 
> In this case the absence of numbers for a particular file is not an issue, 
> maybe the file has already been built. If something goes wrong, clang must 
> handle it in `Compilation::ExecuteCommand` and react properly. The fact of 
> failed invocation would be handled by build tool. For the purpose of 
> monitoring performance numbers it is more convenient to record successful 
> compilations only.
> 
> 
> 
Ok, thanks for clarifying! Could you please do an early exit here? ie.
```
if (!ProcStat)
  return;
```


================
Comment at: clang/lib/Driver/Driver.cpp:3814
+          llvm::raw_fd_ostream OS(StatReportFile, EC, 
llvm::sys::fs::OF_Append);
+          if (!EC) {
+            if (auto L = OS.tryToLock())
----------------
sepavloff wrote:
> aganea wrote:
> > If the goal is to report accurate information, maybe it's worth looping 
> > here a bit in case of an error, to give the chance to other clang.exe 
> > instances to release the file lock? What do you think? (same for 
> > `tryToLock`)
> Actually this method makes blocking request and waits infinitely.
> 
> There is long discussion of how this lock helper must be implemented: 
> https://reviews.llvm.org/D79066. Finally the variant with timeout was 
> removed, only blocking one remained. The method has prefix `try` because it 
> requires handling result value.
> 
> If you think the name or interface might be better, you can participate in 
> the discussion in D79066, that patch isn't committed yet.
Thanks!

In the same way as above, I think the code will read better if it did early 
exits. Also, I don't think you need `handleAllErrors`, you could replace it 
with `toString` and report the error code the user:
```
if (EC)
  return;
auto L=OS.tryToLock();
if (!L) {
  llvm::errs() ... << toString(L.takeError());
  return;
}
OS << Buffer;
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D78903



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

Reply via email to