mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 05:29:24 +00:00
For phi elimination, now we are generating only one instruction
using cpValue2Value instead of passing vector to createCopyInstructionByType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1272 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
061b8edb27
commit
7130938f94
@ -154,7 +154,7 @@ SelectInstructionsForMethod(Method* method, TargetMachine &target)
|
||||
// of phi elimination.
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void InsertPhiElimInst(BasicBlock *BB, vector<MachineInstr*>& CopyInstVec) { // bak
|
||||
void InsertPhiElimInst(BasicBlock *BB, MachineInstr *CpMI) {
|
||||
|
||||
TerminatorInst *TermInst = BB->getTerminator();
|
||||
MachineCodeForVMInstr &MC4Term = TermInst->getMachineInstrVec();
|
||||
@ -171,13 +171,12 @@ void InsertPhiElimInst(BasicBlock *BB, vector<MachineInstr*>& CopyInstVec) { //
|
||||
for( ; (MCIt != bbMvec.end()) && (*MCIt != FirstMIOfTerm) ; ++MCIt ) ;
|
||||
|
||||
assert( MCIt != bbMvec.end() && "Start inst of terminator not found");
|
||||
assert( (CopyInstVec.size()==1) && "Must be only one copy instr");
|
||||
|
||||
// insert the copy instruction just before the first machine instruction
|
||||
// generated for the terminator
|
||||
bbMvec.insert( MCIt , CopyInstVec[0] );
|
||||
bbMvec.insert( MCIt , CpMI );
|
||||
|
||||
cerr << "\nPhiElimination copy inst: " << *CopyInstVec[0];
|
||||
//cerr << "\nPhiElimination copy inst: " << *CopyInstVec[0];
|
||||
|
||||
}
|
||||
|
||||
@ -212,19 +211,10 @@ void InsertCode4AllPhisInMeth(Method *method, TargetMachine &target) {
|
||||
|
||||
vector<MachineInstr*> CopyInstVec;
|
||||
|
||||
// target.getInstrInfo().CreateCopyInstructionsByType(
|
||||
// target, PN->getIncomingValue(i), PN, CopyInstVec );
|
||||
|
||||
MachineInstr *MI =
|
||||
MachineInstr *CpMI =
|
||||
target.getRegInfo().cpValue2Value(PN->getIncomingValue(i), PN);
|
||||
|
||||
CopyInstVec.push_back( MI );
|
||||
|
||||
InsertPhiElimInst( PN->getIncomingBlock(i), CopyInstVec);
|
||||
|
||||
// Map the generated copy instruction in pred BB to this phi
|
||||
// (PN->getMachineInstrVec()).push_back( CopyInstVec[0] );
|
||||
|
||||
InsertPhiElimInst( PN->getIncomingBlock(i), CpMI);
|
||||
}
|
||||
}
|
||||
else break; // since PHI nodes can only be at the top
|
||||
|
@ -154,7 +154,7 @@ SelectInstructionsForMethod(Method* method, TargetMachine &target)
|
||||
// of phi elimination.
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
void InsertPhiElimInst(BasicBlock *BB, vector<MachineInstr*>& CopyInstVec) { // bak
|
||||
void InsertPhiElimInst(BasicBlock *BB, MachineInstr *CpMI) {
|
||||
|
||||
TerminatorInst *TermInst = BB->getTerminator();
|
||||
MachineCodeForVMInstr &MC4Term = TermInst->getMachineInstrVec();
|
||||
@ -171,13 +171,12 @@ void InsertPhiElimInst(BasicBlock *BB, vector<MachineInstr*>& CopyInstVec) { //
|
||||
for( ; (MCIt != bbMvec.end()) && (*MCIt != FirstMIOfTerm) ; ++MCIt ) ;
|
||||
|
||||
assert( MCIt != bbMvec.end() && "Start inst of terminator not found");
|
||||
assert( (CopyInstVec.size()==1) && "Must be only one copy instr");
|
||||
|
||||
// insert the copy instruction just before the first machine instruction
|
||||
// generated for the terminator
|
||||
bbMvec.insert( MCIt , CopyInstVec[0] );
|
||||
bbMvec.insert( MCIt , CpMI );
|
||||
|
||||
cerr << "\nPhiElimination copy inst: " << *CopyInstVec[0];
|
||||
//cerr << "\nPhiElimination copy inst: " << *CopyInstVec[0];
|
||||
|
||||
}
|
||||
|
||||
@ -212,19 +211,10 @@ void InsertCode4AllPhisInMeth(Method *method, TargetMachine &target) {
|
||||
|
||||
vector<MachineInstr*> CopyInstVec;
|
||||
|
||||
// target.getInstrInfo().CreateCopyInstructionsByType(
|
||||
// target, PN->getIncomingValue(i), PN, CopyInstVec );
|
||||
|
||||
MachineInstr *MI =
|
||||
MachineInstr *CpMI =
|
||||
target.getRegInfo().cpValue2Value(PN->getIncomingValue(i), PN);
|
||||
|
||||
CopyInstVec.push_back( MI );
|
||||
|
||||
InsertPhiElimInst( PN->getIncomingBlock(i), CopyInstVec);
|
||||
|
||||
// Map the generated copy instruction in pred BB to this phi
|
||||
// (PN->getMachineInstrVec()).push_back( CopyInstVec[0] );
|
||||
|
||||
InsertPhiElimInst( PN->getIncomingBlock(i), CpMI);
|
||||
}
|
||||
}
|
||||
else break; // since PHI nodes can only be at the top
|
||||
|
Loading…
Reference in New Issue
Block a user