diff options
author | Jeremy Morse <jeremy.morse.llvm@gmail.com> | 2019-06-13 13:11:57 +0000 |
---|---|---|
committer | Jeremy Morse <jeremy.morse.llvm@gmail.com> | 2019-06-13 13:11:57 +0000 |
commit | d2cd9c23b4ec648a46fcc12f4b0972212df5051a (patch) | |
tree | 512cee747ecc5d4717bc425c90323f80e37afd21 /llvm/lib/CodeGen/LiveDebugValues.cpp | |
parent | 286e1d2c2d625839092ee8bef0bdb94b258f363c (diff) | |
download | llvm-d2cd9c23b4ec648a46fcc12f4b0972212df5051a.zip llvm-d2cd9c23b4ec648a46fcc12f4b0972212df5051a.tar.gz llvm-d2cd9c23b4ec648a46fcc12f4b0972212df5051a.tar.bz2 |
[NFC] Sink a function call into LiveDebugValues::process
This was requested in D62904, which I successfully missed. This is just
a refactor and shouldn't change any behaviour.
llvm-svn: 363259
Diffstat (limited to 'llvm/lib/CodeGen/LiveDebugValues.cpp')
-rw-r--r-- | llvm/lib/CodeGen/LiveDebugValues.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/LiveDebugValues.cpp b/llvm/lib/CodeGen/LiveDebugValues.cpp index f8bc85c..47a952c 100644 --- a/llvm/lib/CodeGen/LiveDebugValues.cpp +++ b/llvm/lib/CodeGen/LiveDebugValues.cpp @@ -356,7 +356,8 @@ private: bool process(MachineInstr &MI, OpenRangesSet &OpenRanges, VarLocInMBB &OutLocs, VarLocMap &VarLocIDs, - TransferMap &Transfers, bool transferChanges); + TransferMap &Transfers, bool transferChanges, + OverlapMap &OverlapFragments, VarToFragments &SeenFragments); void accumulateFragmentMap(MachineInstr &MI, VarToFragments &SeenFragments, OverlapMap &OLapMap); @@ -940,13 +941,19 @@ void LiveDebugValues::accumulateFragmentMap(MachineInstr &MI, /// This routine creates OpenRanges and OutLocs. bool LiveDebugValues::process(MachineInstr &MI, OpenRangesSet &OpenRanges, VarLocInMBB &OutLocs, VarLocMap &VarLocIDs, - TransferMap &Transfers, bool transferChanges) { + TransferMap &Transfers, bool transferChanges, + OverlapMap &OverlapFragments, + VarToFragments &SeenFragments) { bool Changed = false; transferDebugValue(MI, OpenRanges, VarLocIDs); transferRegisterDef(MI, OpenRanges, VarLocIDs); if (transferChanges) { transferRegisterCopy(MI, OpenRanges, VarLocIDs, Transfers); transferSpillOrRestoreInst(MI, OpenRanges, VarLocIDs, Transfers); + } else { + // Build up a map of overlapping fragments on the first run through. + if (MI.isDebugValue()) + accumulateFragmentMap(MI, SeenFragments, OverlapFragments); } Changed = transferTerminatorInst(MI, OpenRanges, OutLocs, VarLocIDs); return Changed; @@ -1101,9 +1108,7 @@ bool LiveDebugValues::ExtendRanges(MachineFunction &MF) { for (auto &MBB : MF) { for (auto &MI : MBB) { process(MI, OpenRanges, OutLocs, VarLocIDs, Transfers, - dontTransferChanges); - if (MI.isDebugValue()) - accumulateFragmentMap(MI, SeenFragments, OverlapFragments); + dontTransferChanges, OverlapFragments, SeenFragments); } } @@ -1151,8 +1156,9 @@ bool LiveDebugValues::ExtendRanges(MachineFunction &MF) { // examine spill instructions to see whether they spill registers that // correspond to user variables. for (auto &MI : *MBB) - OLChanged |= process(MI, OpenRanges, OutLocs, VarLocIDs, Transfers, - transferChanges); + OLChanged |= + process(MI, OpenRanges, OutLocs, VarLocIDs, Transfers, + transferChanges, OverlapFragments, SeenFragments); // Add any DBG_VALUE instructions necessitated by spills. for (auto &TR : Transfers) |