mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	Remove unused function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105100 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -174,75 +174,6 @@ unsigned MachineRegisterInfo::getLiveInVirtReg(unsigned PReg) const { | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
| /// EmitLiveInCopy - Emit a copy for a live in physical register. If the | ||||
| /// physical register has only a single copy use, then coalesced the copy | ||||
| /// if possible. | ||||
| static void EmitLiveInCopy(MachineBasicBlock *MBB, | ||||
|                            MachineBasicBlock::iterator &InsertPos, | ||||
|                            unsigned VirtReg, unsigned PhysReg, | ||||
|                            const TargetRegisterClass *RC, | ||||
|                            DenseMap<MachineInstr*, unsigned> &CopyRegMap, | ||||
|                            const MachineRegisterInfo &MRI, | ||||
|                            const TargetRegisterInfo &TRI, | ||||
|                            const TargetInstrInfo &TII) { | ||||
|   unsigned NumUses = 0; | ||||
|   MachineInstr *UseMI = NULL; | ||||
|   for (MachineRegisterInfo::use_iterator UI = MRI.use_begin(VirtReg), | ||||
|          UE = MRI.use_end(); UI != UE; ++UI) { | ||||
|     UseMI = &*UI; | ||||
|     if (++NumUses > 1) | ||||
|       break; | ||||
|   } | ||||
|  | ||||
|   // If the number of uses is not one, or the use is not a move instruction, | ||||
|   // don't coalesce. Also, only coalesce away a virtual register to virtual | ||||
|   // register copy. | ||||
|   bool Coalesced = false; | ||||
|   unsigned SrcReg, DstReg, SrcSubReg, DstSubReg; | ||||
|   if (NumUses == 1 && | ||||
|       TII.isMoveInstr(*UseMI, SrcReg, DstReg, SrcSubReg, DstSubReg) && | ||||
|       TargetRegisterInfo::isVirtualRegister(DstReg)) { | ||||
|     VirtReg = DstReg; | ||||
|     Coalesced = true; | ||||
|   } | ||||
|  | ||||
|   // Now find an ideal location to insert the copy. | ||||
|   MachineBasicBlock::iterator Pos = InsertPos; | ||||
|   while (Pos != MBB->begin()) { | ||||
|     MachineInstr *PrevMI = prior(Pos); | ||||
|     DenseMap<MachineInstr*, unsigned>::iterator RI = CopyRegMap.find(PrevMI); | ||||
|     // copyRegToReg might emit multiple instructions to do a copy. | ||||
|     unsigned CopyDstReg = (RI == CopyRegMap.end()) ? 0 : RI->second; | ||||
|     if (CopyDstReg && !TRI.regsOverlap(CopyDstReg, PhysReg)) | ||||
|       // This is what the BB looks like right now: | ||||
|       // r1024 = mov r0 | ||||
|       // ... | ||||
|       // r1    = mov r1024 | ||||
|       // | ||||
|       // We want to insert "r1025 = mov r1". Inserting this copy below the | ||||
|       // move to r1024 makes it impossible for that move to be coalesced. | ||||
|       // | ||||
|       // r1025 = mov r1 | ||||
|       // r1024 = mov r0 | ||||
|       // ... | ||||
|       // r1    = mov 1024 | ||||
|       // r2    = mov 1025 | ||||
|       break; // Woot! Found a good location. | ||||
|     --Pos; | ||||
|   } | ||||
|  | ||||
|   bool Emitted = TII.copyRegToReg(*MBB, Pos, VirtReg, PhysReg, RC, RC, | ||||
|                                   DebugLoc()); | ||||
|   assert(Emitted && "Unable to issue a live-in copy instruction!\n"); | ||||
|   (void) Emitted; | ||||
|  | ||||
|   CopyRegMap.insert(std::make_pair(prior(Pos), VirtReg)); | ||||
|   if (Coalesced) { | ||||
|     if (&*InsertPos == UseMI) ++InsertPos; | ||||
|     MBB->erase(UseMI); | ||||
|   } | ||||
| } | ||||
|  | ||||
| /// EmitLiveInCopies - Emit copies to initialize livein virtual registers | ||||
| /// into the given entry block. | ||||
| void | ||||
|   | ||||
		Reference in New Issue
	
	Block a user