[PATCH] D111627: [DebugInfo][InstrRef] Recover some performance by calculating IDF for register units instead of all their alises

Orlando Cazalet-Hyams via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 12 04:25:04 PDT 2021


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

LGTM! Plus a couple of inline nits.

> Testing: because this is performance related, no tests, but this builds clang-3.4 with identical object files after being applied (save for the object file with the date/time in it).

Out of interest do you have any numbers for the positive performance impact of this patch?



================
Comment at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp:1772-1773
+    bool AnyIllegal = false;
+    for (MCRegUnitIterator RUI(R.asMCReg(), TRI); RUI.isValid(); ++RUI) {
+      for (MCRegUnitRootIterator URoots(*RUI, TRI); URoots.isValid(); ++URoots){
+        if (!MTracker->isRegisterTracked(*URoots)) {
----------------
jmorse wrote:
> NB: this seems to be the canonical way of enumerating register unit... registers? in the rest of LLVM. What MCRegUnitIterator  produces doesn't seem to necessarily correspond to a single register, therefore there's an additional process of enumerating the roots too.
> 
> Either way, it works for x86, and this pattern is used elsewhere in llvm. So It Must Be Right (TM).
Thanks for the explanation. Nit: Please can you rename `URoots` to `URoot`?


================
Comment at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp:1786
+    if (AnyIllegal) {
+      SlotsToPHI.insert(L); // WAS: put reg in regunitstophiup directly
+      continue;
----------------
nits: If you're also stuffing (arg) registers in too, maybe `SlotsToPHI` should be renamed. Something like `LocsToPHI` or `LocsWithoutRegUnits`?
Also is this a dev comment that leaked into the patch?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111627



More information about the llvm-commits mailing list