[PATCH] D118613: [DebugInfo][InstrRef][NFC] Bypass a frequently-noop loop
Jeremy Morse via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 31 08:22:16 PST 2022
jmorse created this revision.
jmorse added reviewers: StephenTozer, Orlando, TWeaver.
Herald added a subscriber: hiraditya.
jmorse requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Bypass a loop if it would do nothing -- if there are no register masks to be examined, there's no point looking at each location to see if the location has been def'd. Awkwardly, this was responsible for almost an entire half a percent of performance improvement on the tracker [0].
[0] http://llvm-compile-time-tracker.com/compare.php?from=47a80eaac7a4fb1b115a5fb467ce03b51182fc56&to=19a73bdd29dcc0f522aba1e722f7a3a16cbea4dd&stat=instructions
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D118613
Files:
llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
Index: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
===================================================================
--- llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
+++ llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
@@ -1374,18 +1374,20 @@
// Look for any clobbers performed by a register mask. Only test locations
// that are actually being tracked.
- for (auto L : MTracker->locations()) {
- // Stack locations can't be clobbered by regmasks.
- if (MTracker->isSpill(L.Idx))
- continue;
+ if (!RegMaskPtrs.empty()) {
+ for (auto L : MTracker->locations()) {
+ // Stack locations can't be clobbered by regmasks.
+ if (MTracker->isSpill(L.Idx))
+ continue;
- Register Reg = MTracker->LocIdxToLocID[L.Idx];
- if (IgnoreSPAlias(Reg))
- continue;
+ Register Reg = MTracker->LocIdxToLocID[L.Idx];
+ if (IgnoreSPAlias(Reg))
+ continue;
- for (auto *MO : RegMaskPtrs)
- if (MO->clobbersPhysReg(Reg))
- TTracker->clobberMloc(L.Idx, MI.getIterator(), false);
+ for (auto *MO : RegMaskPtrs)
+ if (MO->clobbersPhysReg(Reg))
+ TTracker->clobberMloc(L.Idx, MI.getIterator(), false);
+ }
}
// Tell TTracker about any folded stack store.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D118613.404540.patch
Type: text/x-patch
Size: 1276 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220131/b02116aa/attachment.bin>
More information about the llvm-commits
mailing list