Save = &MBB;
else
Save = MDT->findNearestCommonDominator(Save, &MBB);
-
- if (!Save) {
- LLVM_DEBUG(dbgs() << "Found a block that is not reachable from Entry\n");
- return;
- }
+ assert(Save);
if (!Restore)
Restore = &MBB;
// C. Save and Restore are in the same loop.
bool SaveDominatesRestore = false;
bool RestorePostDominatesSave = false;
- while (Save && Restore &&
+ while (Restore &&
(!(SaveDominatesRestore = MDT->dominates(Save, Restore)) ||
!(RestorePostDominatesSave = MPDT->dominates(Restore, Save)) ||
// Post-dominance is not enough in loops to ensure that all uses/defs
Restore = MPDT->findNearestCommonDominator(Restore, Save);
// Fix (C).
- if (Save && Restore &&
- (MLI->getLoopFor(Save) || MLI->getLoopFor(Restore))) {
+ if (Restore && (MLI->getLoopFor(Save) || MLI->getLoopFor(Restore))) {
if (MLI->getLoopDepth(Save) > MLI->getLoopDepth(Restore)) {
// Push Save outside of this loop if immediate dominator is different
// from save block. If immediate dominator is not different, bail out.