Skip to content

Commit e26bcf1

Browse files
committed
[CodeGen] Use early return to simplify SplitEditor::defFromParent [NFC]
1 parent befa037 commit e26bcf1

File tree

1 file changed

+26
-28
lines changed

1 file changed

+26
-28
lines changed

llvm/lib/CodeGen/SplitKit.cpp

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,6 @@ bool SplitEditor::rematWillIncreaseRestriction(const MachineInstr *DefMI,
625625
VNInfo *SplitEditor::defFromParent(unsigned RegIdx, const VNInfo *ParentVNI,
626626
SlotIndex UseIdx, MachineBasicBlock &MBB,
627627
MachineBasicBlock::iterator I) {
628-
SlotIndex Def;
629628
LiveInterval *LI = &LIS.getInterval(Edit->get(RegIdx));
630629

631630
// We may be trying to avoid interference that ends at a deleted instruction,
@@ -638,44 +637,43 @@ VNInfo *SplitEditor::defFromParent(unsigned RegIdx, const VNInfo *ParentVNI,
638637
VNInfo *OrigVNI = OrigLI.getVNInfoAt(UseIdx);
639638

640639
Register Reg = LI->reg();
641-
bool DidRemat = false;
642640
if (OrigVNI) {
643641
LiveRangeEdit::Remat RM(ParentVNI);
644642
RM.OrigMI = LIS.getInstructionFromIndex(OrigVNI->def);
645643
if (Edit->canRematerializeAt(RM, OrigVNI, UseIdx, true)) {
646644
if (!rematWillIncreaseRestriction(RM.OrigMI, MBB, UseIdx)) {
647-
Def = Edit->rematerializeAt(MBB, I, Reg, RM, TRI, Late);
645+
SlotIndex Def = Edit->rematerializeAt(MBB, I, Reg, RM, TRI, Late);
648646
++NumRemats;
649-
DidRemat = true;
650-
} else {
651-
LLVM_DEBUG(
652-
dbgs() << "skipping rematerialize of " << printReg(Reg) << " at "
653-
<< UseIdx
654-
<< " since it will increase register class restrictions\n");
647+
// Define the value in Reg.
648+
return defValue(RegIdx, ParentVNI, Def, false);
655649
}
650+
LLVM_DEBUG(
651+
dbgs() << "skipping rematerialize of " << printReg(Reg) << " at "
652+
<< UseIdx
653+
<< " since it will increase register class restrictions\n");
656654
}
657655
}
658-
if (!DidRemat) {
659-
LaneBitmask LaneMask;
660-
if (OrigLI.hasSubRanges()) {
661-
LaneMask = LaneBitmask::getNone();
662-
for (LiveInterval::SubRange &S : OrigLI.subranges()) {
663-
if (S.liveAt(UseIdx))
664-
LaneMask |= S.LaneMask;
665-
}
666-
} else {
667-
LaneMask = LaneBitmask::getAll();
668-
}
669656

670-
if (LaneMask.none()) {
671-
const MCInstrDesc &Desc = TII.get(TargetOpcode::IMPLICIT_DEF);
672-
MachineInstr *ImplicitDef = BuildMI(MBB, I, DebugLoc(), Desc, Reg);
673-
SlotIndexes &Indexes = *LIS.getSlotIndexes();
674-
Def = Indexes.insertMachineInstrInMaps(*ImplicitDef, Late).getRegSlot();
675-
} else {
676-
++NumCopies;
677-
Def = buildCopy(Edit->getReg(), Reg, LaneMask, MBB, I, Late, RegIdx);
657+
LaneBitmask LaneMask;
658+
if (OrigLI.hasSubRanges()) {
659+
LaneMask = LaneBitmask::getNone();
660+
for (LiveInterval::SubRange &S : OrigLI.subranges()) {
661+
if (S.liveAt(UseIdx))
662+
LaneMask |= S.LaneMask;
678663
}
664+
} else {
665+
LaneMask = LaneBitmask::getAll();
666+
}
667+
668+
SlotIndex Def;
669+
if (LaneMask.none()) {
670+
const MCInstrDesc &Desc = TII.get(TargetOpcode::IMPLICIT_DEF);
671+
MachineInstr *ImplicitDef = BuildMI(MBB, I, DebugLoc(), Desc, Reg);
672+
SlotIndexes &Indexes = *LIS.getSlotIndexes();
673+
Def = Indexes.insertMachineInstrInMaps(*ImplicitDef, Late).getRegSlot();
674+
} else {
675+
++NumCopies;
676+
Def = buildCopy(Edit->getReg(), Reg, LaneMask, MBB, I, Late, RegIdx);
679677
}
680678

681679
// Define the value in Reg.

0 commit comments

Comments
 (0)