]> granicus.if.org Git - llvm/commitdiff
[NFC] Sink a function call into LiveDebugValues::process
authorJeremy Morse <jeremy.morse.llvm@gmail.com>
Thu, 13 Jun 2019 13:11:57 +0000 (13:11 +0000)
committerJeremy Morse <jeremy.morse.llvm@gmail.com>
Thu, 13 Jun 2019 13:11:57 +0000 (13:11 +0000)
This was requested in D62904, which I successfully missed. This is just
a refactor and shouldn't change any behaviour.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@363259 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/LiveDebugValues.cpp

index f8bc85c51fcf97e48e8f5c2e82ef7596dd6d4953..47a952ca7de8048f5629b0c2fd2e443350727f2d 100644 (file)
@@ -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)