mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +00:00
Check that the register is live-in to the loop header before inserting copies in
the loop predecessors. The register can be live-out from a predecessor without being live-in to the loop header if there is a critical edge from the predecessor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122123 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bb1744ec15
commit
dfe3b6d2a9
@ -1077,11 +1077,13 @@ void SplitEditor::splitAroundLoop(const MachineLoop *Loop) {
|
||||
// Create new live interval for the loop.
|
||||
openIntv();
|
||||
|
||||
// Insert copies in the predecessors.
|
||||
for (SplitAnalysis::BlockPtrSet::iterator I = Blocks.Preds.begin(),
|
||||
E = Blocks.Preds.end(); I != E; ++I) {
|
||||
MachineBasicBlock &MBB = const_cast<MachineBasicBlock&>(**I);
|
||||
enterIntvAtEnd(MBB);
|
||||
// Insert copies in the predecessors if live-in to the header.
|
||||
if (lis_.isLiveInToMBB(edit_.getParent(), Loop->getHeader())) {
|
||||
for (SplitAnalysis::BlockPtrSet::iterator I = Blocks.Preds.begin(),
|
||||
E = Blocks.Preds.end(); I != E; ++I) {
|
||||
MachineBasicBlock &MBB = const_cast<MachineBasicBlock&>(**I);
|
||||
enterIntvAtEnd(MBB);
|
||||
}
|
||||
}
|
||||
|
||||
// Switch all loop blocks.
|
||||
|
Loading…
Reference in New Issue
Block a user