• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/CodeGen/

Lines Matching refs:spill

77 static cl::opt<bool> DisableHoisting("disable-spill-hoist", cl::Hidden,
78 cl::desc("Disable inline spill hoisting"));
115 /// siblings. To hoist a spill to another BB, we need to find out a live
116 /// sibling there and use it as the source of the new spill.
172 // Variables that are valid during spill(), but used by multiple methods.
178 // All registers to spill to StackSlot, including the main register.
208 void spill(LiveRangeEdit &) override;
252 // When spilling a virtual register, we also spill any snippets it is connected
258 // spill slots which can be important in tight loops.
344 LLVM_DEBUG(dbgs() << "\talso spill snippet " << SnipLI << '\n');
353 /// It is beneficial to spill to earlier place in the same BB in case
356 /// Hoist the spill as far as possible in SpillMBB. This can ease
363 /// Hoisting the spill of s to immediately after the def removes the
367 /// spill x
398 // We are going to spill SrcVNI immediately after its def, so clear out
412 // Insert spill without kill flag immediately after def.
439 // Regs to spill are taken care of.
473 LLVM_DEBUG(dbgs() << "Redundant spill " << Idx << '\t' << MI);
531 // * However, since we may try to spill vregs in any order, we can end up
532 // trying to spill each operand to the instruction, and then rematting it
722 << " registers to spill after remat.\n");
814 // We always want to spill subregs for stackmap/patchpoint pseudos.
945 /// insertSpill - Insert a spill of NewVReg after MI.
950 assert(!MI->isTerminator() && "Inserting a spill after a terminator");
960 // Don't spill undef value.
971 dumpMachineInstrRangeWithSlotIndex(Spill, MIS.end(), LIS, "spill"));
977 /// spillAroundUses - insert spill code around each use of Reg.
990 // Modify DBG_VALUE now that the value is in a spill slot.
992 LLVM_DEBUG(dbgs() << "Modifying debug info due to spill:\t" << *MI);
1048 // Create a new virtual register for spill/fill.
1124 void InlineSpiller::spill(LiveRangeEdit &edit) {
1128 "Trying to spill a stack slot.");
1139 "Attempting to spill already spilled value.");
1140 assert(DeadDefs.empty() && "Previous spill didn't remove dead defs");
1155 /// When a spill is inserted, add the spill to MergeableSpills map.
1173 /// When a spill is removed, remove the spill from MergeableSpills map.
1174 /// Return true if the spill is removed successfully.
1186 /// Check BB to see if it is a possible target BB to place a hoisted spill,
1212 /// SpillsToRm, and save the spill to keep and its BB in SpillBBToSpill map.
1217 // For each spill saw, check SpillBBToSpill[] and see if its BB already has
1218 // another spill inside. If a BB contains more than one spill, only keep the
1219 // earlier spill with smaller SlotIndex.
1255 // non-redundant spill to the Root node.
1262 // For every node on the dominator tree with spill, walk up on the dominator
1264 // containing spill in the middle of the path, the previous spill saw will
1266 // the path starting from the first node with non-redundant spill to the Root
1274 // If Node dominates Block, and it already contains a spill, the spill in
1280 /// the Root node must already be traversed by another spill.
1337 // during hoisting. If the spill to be inserted is an original spill
1338 // (not a hoisted one), the value of the map entry is 0. If the spill
1339 // is a hoisted spill, the value of the map entry is the VReg to be used
1340 // as the source of the spill.
1342 // Map from BB to the first spill inside of it.
1361 // children have already been visited and the spill locations in the
1367 // If Block contains an original spill, simply continue.
1370 // SpillsInSubTreeMap[*RIt].second contains the cost of spill.
1402 // Check whether Block is a possible candidate to insert spill.
1408 // to hoist the spill.
1415 // When SpillBB is a BB contains original spill, insert the spill
1422 // SpillBB will not contain spill anymore, remove it from SpillsToKeep.
1425 // Current Block is the BB containing the new hoisted spill. Add it to
1426 // SpillsToKeep. LiveReg is the source of the new spill.
1440 // For spills in SpillsToKeep with LiveReg set (i.e., not original spill),
1452 /// MergeableSpills when spill is inserted. These equal spills are originated
1475 // Each entry in MergeableSpills contains a spill set with equal values.
1487 for (const auto spill : EqValSpills)
1488 dbgs() << spill->getParent()->getNumber() << " ";
1492 // SpillsToRm is the spill set to be removed from EqValSpills.
1494 // SpillsToIns is the spill set to be newly inserted after hoisting.