Home | History | Annotate | Download | only in CodeGen

Lines Matching full:live

1 //===---------- SplitKit.cpp - Toolkit for splitting live ranges ----------===//
11 // live range splitting.
36 STATISTIC(NumRepairs, "Number of invalid live ranges repaired");
68 // current live interval.
91 // If CurLI is live into a landing pad successor, move the last split point
102 // really be live-in to the landing pad. This can happen if the landing pad
108 // Value is properly live-in to the landing pad.
148 // Compute per-live block info.
150 // FIXME: calcLiveBlockInfo found inconsistencies in the live range.
154 DEBUG(dbgs() << "*** Fixing inconsistent live interval! ***\n");
161 assert(fixed && "Couldn't fix broken live interval");
171 /// where CurLI is live.
185 // Loop over basic blocks where CurLI is live.
193 // If the block contains no uses, the range must be live through. At one
212 // LVI is the first live segment overlapping MBB.
215 // When not live in, the first use should be a def.
222 // Look for gaps in the live range.
233 // There is a gap in the live range. Create duplicate entries for the
234 // live-in snippet and the live-out snippet.
237 // Push the Live-in part.
242 // Set up BI for the live-out part.
261 // Live segment ends exactly at Stop. Move to the next segment.
284 // Loop over basic blocks where li is live.
423 // by a trivial live range.
461 /// Create a new virtual register and live interval.
486 DEBUG(dbgs() << ": not live\n");
503 DEBUG(dbgs() << ": not live\n");
522 DEBUG(dbgs() << ": not live\n");
549 // The interval must be live beyond the instruction at Idx.
553 DEBUG(dbgs() << ": not live\n");
560 // In spill mode, make live ranges as short as possible by inserting the copy
563 // the source live range. The spiller also won't try to hoist this copy.
580 // The interval must be live into the instruction at Idx.
584 DEBUG(dbgs() << ": not live\n");
602 DEBUG(dbgs() << ": not live\n");
657 // want to avoid calculating the live range of the source register if
749 assert(ParentVNI && "Parent not live at complement def");
834 /// transferValues - Transfer all possible values to the new live ranges.
886 // so the live range is accurate. Add live-in blocks in [Start;End) to the
892 // The first block may be live-in, or it may have its own def.
897 // MBB has its own def. Is it also live-out?
901 // Skip to the next block for live-in.
906 // Handle the live-in blocks covered by [Start;End).
907 assert(Start <= BlockStart && "Expected live-in block");
912 // This block has the def of a parent PHI, so it isn't live-in.
917 LRC.setLiveOutValue(MBB, VNI); // Live-out as well.
919 // This block needs a live-in value. The last block covered may not
920 // be live-out.
924 // Live-through, and we don't know the value.
945 // Extend live ranges to be live-out for successor PHI values.
959 // The predecessor may not have a live-out value. That is OK, like an
1006 // We may wan't to extend a live range for a partial redef, or for a use
1048 // At this point, the live intervals in Edit contain VNInfos corresponding to
1061 // The new live ranges may be truncated.
1142 // Splitting a live-through range always makes progress.
1169 // Global Live Range Splitting Support
1172 // These methods support a method of global live range splitting that uses a
1187 << ", live-through " << IntvIn << " -> " << IntvOut);
1201 // |-----------| Live through.
1215 // |-----------| Live through.
1228 // |-----------| Live through.
1245 // |-----------| Live through.
1266 // |-----------| Live through.
1294 assert(BI.LiveIn && "Must be live-in");
1314 // |---o---o---| Live-out on stack.
1318 // |---o---o--o| Live-out on stack, late last use.
1320 // \_____ Stack interval is live-out.
1349 // |---o---o---| Live-out on stack.
1362 // |---o---o--o| Live-out on stack, late last use.
1364 // \_____ Stack interval is live-out.
1388 assert(BI.LiveOut && "Must be live-out");
1407 // |---o---o---| Live-through, stack-in.
1423 // |---o---o---| Live-through, stack-in.