mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-13 09:33:50 +00:00
cpValue2Value now needs a vector of MachineInstr to store return values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2644 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7e684a956a
commit
629b70f274
@ -207,26 +207,30 @@ InsertCode4AllPhisInMeth(Function *F, TargetMachine &target)
|
||||
|
||||
// for each incoming value of the phi, insert phi elimination
|
||||
//
|
||||
for (unsigned i = 0; i < PN->getNumIncomingValues(); ++i) {
|
||||
// insert the copy instruction to the predecessor BB
|
||||
MachineInstr *CpMI =
|
||||
target.getRegInfo().cpValue2Value(PN->getIncomingValue(i),
|
||||
PhiCpRes);
|
||||
|
||||
vector<MachineInstr*> CpVec = FixConstantOperandsForInstr(PN, CpMI,
|
||||
target);
|
||||
CpVec.push_back(CpMI);
|
||||
|
||||
InsertPhiElimInstructions(PN->getIncomingBlock(i), CpVec);
|
||||
}
|
||||
for (unsigned i = 0; i < PN->getNumIncomingValues(); ++i)
|
||||
{ // insert the copy instruction to the predecessor BB
|
||||
vector<MachineInstr*> mvec, CpVec;
|
||||
target.getRegInfo().cpValue2Value(PN->getIncomingValue(i), PhiCpRes,
|
||||
mvec);
|
||||
for (vector<MachineInstr*>::iterator MI=mvec.begin();
|
||||
MI != mvec.end(); ++MI)
|
||||
{
|
||||
vector<MachineInstr*> CpVec2 =
|
||||
FixConstantOperandsForInstr(PN, *MI, target);
|
||||
CpVec2.push_back(*MI);
|
||||
CpVec.insert(CpVec.end(), CpVec2.begin(), CpVec2.end());
|
||||
}
|
||||
|
||||
InsertPhiElimInstructions(PN->getIncomingBlock(i), CpVec);
|
||||
}
|
||||
|
||||
vector<MachineInstr*> mvec;
|
||||
target.getRegInfo().cpValue2Value(PhiCpRes, PN, mvec);
|
||||
|
||||
MachineInstr *CpMI2 =
|
||||
target.getRegInfo().cpValue2Value(PhiCpRes, PN);
|
||||
|
||||
// get an iterator to machine instructions in the BB
|
||||
MachineCodeForBasicBlock& bbMvec = BB->getMachineInstrVec();
|
||||
|
||||
bbMvec.insert( bbMvec.begin(), CpMI2);
|
||||
bbMvec.insert( bbMvec.begin(), mvec.begin(), mvec.end());
|
||||
}
|
||||
else break; // since PHI nodes can only be at the top
|
||||
|
||||
|
@ -207,26 +207,30 @@ InsertCode4AllPhisInMeth(Function *F, TargetMachine &target)
|
||||
|
||||
// for each incoming value of the phi, insert phi elimination
|
||||
//
|
||||
for (unsigned i = 0; i < PN->getNumIncomingValues(); ++i) {
|
||||
// insert the copy instruction to the predecessor BB
|
||||
MachineInstr *CpMI =
|
||||
target.getRegInfo().cpValue2Value(PN->getIncomingValue(i),
|
||||
PhiCpRes);
|
||||
|
||||
vector<MachineInstr*> CpVec = FixConstantOperandsForInstr(PN, CpMI,
|
||||
target);
|
||||
CpVec.push_back(CpMI);
|
||||
|
||||
InsertPhiElimInstructions(PN->getIncomingBlock(i), CpVec);
|
||||
}
|
||||
for (unsigned i = 0; i < PN->getNumIncomingValues(); ++i)
|
||||
{ // insert the copy instruction to the predecessor BB
|
||||
vector<MachineInstr*> mvec, CpVec;
|
||||
target.getRegInfo().cpValue2Value(PN->getIncomingValue(i), PhiCpRes,
|
||||
mvec);
|
||||
for (vector<MachineInstr*>::iterator MI=mvec.begin();
|
||||
MI != mvec.end(); ++MI)
|
||||
{
|
||||
vector<MachineInstr*> CpVec2 =
|
||||
FixConstantOperandsForInstr(PN, *MI, target);
|
||||
CpVec2.push_back(*MI);
|
||||
CpVec.insert(CpVec.end(), CpVec2.begin(), CpVec2.end());
|
||||
}
|
||||
|
||||
InsertPhiElimInstructions(PN->getIncomingBlock(i), CpVec);
|
||||
}
|
||||
|
||||
vector<MachineInstr*> mvec;
|
||||
target.getRegInfo().cpValue2Value(PhiCpRes, PN, mvec);
|
||||
|
||||
MachineInstr *CpMI2 =
|
||||
target.getRegInfo().cpValue2Value(PhiCpRes, PN);
|
||||
|
||||
// get an iterator to machine instructions in the BB
|
||||
MachineCodeForBasicBlock& bbMvec = BB->getMachineInstrVec();
|
||||
|
||||
bbMvec.insert( bbMvec.begin(), CpMI2);
|
||||
bbMvec.insert( bbMvec.begin(), mvec.begin(), mvec.end());
|
||||
}
|
||||
else break; // since PHI nodes can only be at the top
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user