From: Ruchira Sasanka Date: Mon, 12 Nov 2001 19:42:27 +0000 (+0000) Subject: For phi elimination, now we are generating only one instruction X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7130938f94726af4c69bcce4d959c91ef024bdb8;p=oota-llvm.git 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 --- diff --git a/lib/CodeGen/InstrSelection/InstrSelection.cpp b/lib/CodeGen/InstrSelection/InstrSelection.cpp index b749873c4c5..909f2410ef8 100644 --- a/lib/CodeGen/InstrSelection/InstrSelection.cpp +++ b/lib/CodeGen/InstrSelection/InstrSelection.cpp @@ -154,7 +154,7 @@ SelectInstructionsForMethod(Method* method, TargetMachine &target) // of phi elimination. //------------------------------------------------------------------------- -void InsertPhiElimInst(BasicBlock *BB, vector& 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& 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 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 diff --git a/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp b/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp index b749873c4c5..909f2410ef8 100644 --- a/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp +++ b/lib/Target/SparcV9/InstrSelection/InstrSelection.cpp @@ -154,7 +154,7 @@ SelectInstructionsForMethod(Method* method, TargetMachine &target) // of phi elimination. //------------------------------------------------------------------------- -void InsertPhiElimInst(BasicBlock *BB, vector& 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& 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 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