[PATCH] D112133: [DebugInfo][Instr] Track subregisters across stack spills/restores

Jeremy Morse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 22 03:55:25 PDT 2021


jmorse added inline comments.


================
Comment at: llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h:458
+    assert(ID >= NumRegs);
+    ID -= NumRegs;
+    ID /= NumSlotIdxes;
----------------
Orlando wrote:
> I am a little confused with the large number of different indices flying around in here, so this might be a silly question. Should there be another number subtracted here, equivalent to the `Idx` added to the ID in the function above (`getSpillIDWithIdx`)? Or is this auto-magically handled due to integer division rounding or something?
The latter; I'm relying on the fact that integer division truncates any remainder, the "index" / "idx" / whatever will be eliminated from "ID" in the process. To illustrate, here's an example LocIDToLocIdx table, assuming there are 7 "Idxes"

    0 => AL
    1 => AH
    [... some ~288 X86 registers]
    288 => Slot 0 Idx 0
    289 => Slot 0 Idx 1
    290 => Slot 0 Idx 2
    291 => Slot 0 Idx 3
    292 => Slot 0 Idx 4
    293 => Slot 0 Idx 5
    294 => Slot 0 Idx 6
    295 => Slot 1 Idx 0
    296 => Slot 1 Idx 1
    297 => Slot 1 Idx 2
    298 => Slot 1 Idx 3
    299 => Slot 1 Idx 4
    300 => Slot 1 Idx 5
    301 => Slot 1 Idx 6

This function subtracts to find the range where the "slots" are recorded, then divides by 7 to remove the "Idx" part, leaving only the slot number.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112133



More information about the llvm-commits mailing list