[PATCH] D131469: [Clang] change default storing path of `-ftime-trace`

Jamie Schmeiser via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 17 08:01:21 PDT 2022


jamieschmeiser added a comment.

Good progress.



================
Comment at: clang/lib/Driver/Driver.cpp:97
 #include "llvm/Support/raw_ostream.h"
+#include <cassert>
 #include <map>
----------------
This include isn't necessary.  There are asserts already in the file so this is transitively included.


================
Comment at: clang/lib/Driver/Driver.cpp:4668
+  // if `-ftime-trace` or `-ftime-trace=<path>` are specified
+  if (TimeTrace || TimeTraceFile) {
+    SmallString<128> TracePath("");
----------------
I think the quick return style is generally preferred.  In this case, test the negative and return.  It is easier to follow and limits indenting.


================
Comment at: clang/lib/Driver/Driver.cpp:4674
+    for (auto &J : C.getJobs()) {
+      if (J.getSource().getKind() == Action::LinkJobClass &&
+          !J.getOutputFilenames().empty()) {
----------------
Can you have a link job without an output filename?  If not, then just have an assert for !empty.  Again, the negative test and continue might be easier to understand.


================
Comment at: clang/lib/Driver/Driver.cpp:4679
+          TracePath = llvm::sys::path::parent_path(
+              SmallString<128>(J.getOutputFilenames()[0].c_str()));
+        } else {
----------------
you create the same small string twice.  better to create a temporary.


================
Comment at: clang/lib/Driver/Driver.cpp:4689
+      if (J.getSource().getKind() == Action::AssembleJobClass ||
+          J.getSource().getKind() == Action::BackendJobClass) {
+        SmallString<128> OutputPath(J.getOutputFilenames()[0].c_str());
----------------
Again, test negative with continue
Do you also want CompileJobClass?


================
Comment at: clang/lib/Driver/Driver.cpp:4700
+            llvm::sys::path::append(TracePath,
+                                    llvm::sys::path::filename(OutputPath));
+            llvm::sys::path::replace_extension(TracePath, "json");
----------------
You are changing TracePath, which will then be altered when you loop back.  I think you need to use a copy of TracePath.


================
Comment at: clang/lib/Driver/Driver.cpp:4714
+        }
+
+        assert(arg.size() > strlen("-ftime-trace") &&
----------------
Can you compute the full path to the directory before the loop and then just copy it and add the name in the loop for each file?


================
Comment at: clang/lib/Driver/Driver.cpp:4725
+        auto &JArgs = J.getArguments();
+        bool exist = false;
+        for (unsigned I = 0; I < JArgs.size(); ++I) {
----------------
Variables should start with an uppercase letter


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D131469



More information about the cfe-commits mailing list