Dale Johannesen
							
						 
						
							 
							
							
							
							
								
							
							
								86d421df23 
								
							 
						 
						
							
							
								
								Remove SelectionDag early allocation of registers  
							
							 
							
							... 
							
							
							
							for earlyclobbers.  Teach Local RA about earlyclobber,
and add some tests for it.
llvm-svn: 56592 
							
						 
						
							2008-09-24 23:13:09 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								38453eebdc 
								
							 
						 
						
							
							
								
								Remove isImm(), isReg(), and friends, in favor of  
							
							 
							
							... 
							
							
							
							isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer names, and would be ok with
changing to the shorter names if others prefer it.
llvm-svn: 56189 
							
						 
						
							2008-09-13 17:58:21 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a79db30d28 
								
							 
						 
						
							
							
								
								Tidy up several unbeseeming casts from pointer to intptr_t.  
							
							 
							
							... 
							
							
							
							llvm-svn: 55779 
							
						 
						
							2008-09-04 17:05:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5fc8ab6d18 
								
							 
						 
						
							
							
								
								consolidate DenseMapInfo implementations, and add one for std::pair.  
							
							 
							
							... 
							
							
							
							Patch contributed by m-s.
llvm-svn: 55167 
							
						 
						
							2008-08-22 05:08:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								45fdeb6c3f 
								
							 
						 
						
							
							
								
								Change StackSlotForVirtReg (which maps vregs to frame indices) from std::map to IndexedMap.  
							
							 
							
							... 
							
							
							
							llvm-svn: 53414 
							
						 
						
							2008-07-10 18:23:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e9ba28dd68 
								
							 
						 
						
							
							
								
								- Change the horrible N^2 isRegReDefinedByTwoAddr. Now callers must supply the operand index of def machineoperand and at most one full scan of non-implicit operands is needed.  
							
							 
							
							... 
							
							
							
							- Change local register allocator to use the new isRegReDefinedByTwoAddr instead of reinventing the wheel.
llvm-svn: 53394 
							
						 
						
							2008-07-10 07:35:43 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								04a77c2492 
								
							 
						 
						
							
							
								
								Use DenseMap instead of std::map in local register allocation.  This improves the time on instcombine from .31s to .22s  
							
							 
							
							... 
							
							
							
							llvm-svn: 53390 
							
						 
						
							2008-07-10 01:56:35 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								20f41dac8d 
								
							 
						 
						
							
							
								
								Fix 403.gcc.  Finally got the check for two-address-ness correct.  
							
							 
							
							... 
							
							
							
							llvm-svn: 53389 
							
						 
						
							2008-07-10 01:53:01 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								be2e9a4447 
								
							 
						 
						
							
							
								
								Revert r53367, which was breaking things.  
							
							 
							
							... 
							
							
							
							llvm-svn: 53378 
							
						 
						
							2008-07-09 23:09:10 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								d3736ca1e0 
								
							 
						 
						
							
							
								
								Loosen our check here.  Local regalloc only cares that the reg is used and def'd by the same instruction, but about the details of  
							
							 
							
							... 
							
							
							
							the relationship.
llvm-svn: 53367 
							
						 
						
							2008-07-09 21:34:36 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								b42ed21894 
								
							 
						 
						
							
							
								
								Don't use an expensive check for two-address-ness when we have the information sitting around to determine it much more quickly,  
							
							 
							
							... 
							
							
							
							This speeds up the local register allocator from 0.37s to 0.31s on instcombine.
llvm-svn: 53359 
							
						 
						
							2008-07-09 21:15:10 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								a0bc522466 
								
							 
						 
						
							
							
								
								Factor local liveness computation out into its own function.  
							
							 
							
							... 
							
							
							
							llvm-svn: 53352 
							
						 
						
							2008-07-09 20:14:53 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								70aa89d215 
								
							 
						 
						
							
							
								
								Reuse the MO variable instead of recomputing it in RegAllocLocal.  
							
							 
							
							... 
							
							
							
							Keep RegAllocSimple in sync.
llvm-svn: 53351 
							
						 
						
							2008-07-09 20:12:26 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								8ab08642ee 
								
							 
						 
						
							
							
								
								RegAllocLocal has a TargetInstrInfo data member. Use it instead  
							
							 
							
							... 
							
							
							
							of having local variables duplicate it.
llvm-svn: 53346 
							
						 
						
							2008-07-09 19:55:19 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								8a95073098 
								
							 
						 
						
							
							
								
								Use find with std::map, when that's what's needed, instead of lower_bound  
							
							 
							
							... 
							
							
							
							with extra checks.
llvm-svn: 53344 
							
						 
						
							2008-07-09 19:51:00 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								27b8a21dfd 
								
							 
						 
						
							
							
								
								Fix the build.  Apparently MachineInstr& is no longer implicitly convertable to MachineBasicBlock::iterator.  
							
							 
							
							... 
							
							
							
							llvm-svn: 53260 
							
						 
						
							2008-07-08 23:36:37 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								45d4475fe5 
								
							 
						 
						
							
							
								
								Make the local register allocator compute (purely local) liveness information for itself  
							
							 
							
							... 
							
							
							
							rather than depending on LiveVariables.  This decreases compile time from:
0.5909s (LV + Regalloc) to 0.421s (just regalloc).
llvm-svn: 53256 
							
						 
						
							2008-07-08 22:24:50 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								427412e7c8 
								
							 
						 
						
							
							
								
								Teach local register allocator to deal with landing pad MBB's.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51647 
							
						 
						
							2008-05-28 17:22:32 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								d78c400b5b 
								
							 
						 
						
							
							
								
								Clean up the use of static and anonymous namespaces. This turned up  
							
							 
							
							... 
							
							
							
							several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017 
							
						 
						
							2008-05-13 00:00:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								be3d44c3cb 
								
							 
						 
						
							
							
								
								Remove #include<map> from LiveVariables.h. Not referenced.  
							
							 
							
							... 
							
							
							
							llvm-svn: 49099 
							
						 
						
							2008-04-02 17:23:50 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6325446666 
								
							 
						 
						
							
							
								
								Refactor code. Remove duplicated functions that basically do the same thing as  
							
							 
							
							... 
							
							
							
							findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927 
							
						 
						
							2008-03-05 00:59:57 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								811153a551 
								
							 
						 
						
							
							
								
								If we reload a virtual register that's already been assigned, we want to mark  
							
							 
							
							... 
							
							
							
							that instruction as its "last use". This fixes PR1925.
llvm-svn: 47758 
							
						 
						
							2008-02-29 18:52:01 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								d7a258d325 
								
							 
						 
						
							
							
								
								Rename PrintableName to Name.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47629 
							
						 
						
							2008-02-26 21:47:57 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								c24ea4fb41 
								
							 
						 
						
							
							
								
								Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool  
							
							 
							
							... 
							
							
							
							would have been a Godsend here!
llvm-svn: 47625 
							
						 
						
							2008-02-26 21:11:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								52c15b3e6d 
								
							 
						 
						
							
							
								
								Really really bad local register allocator bug. On X86, it was never using ESI, EDI, and EBP because of a bug in RALocal::isPhysRegAvailable(). For example, when  
							
							 
							
							... 
							
							
							
							it checks if ESI is available, it then looks at registers aliases to ESI. SIL is marked -2 (not allocatable) but isPhysRegAvailable() incorrectly assumes it is in use and returns false for ESI.
llvm-svn: 47499 
							
						 
						
							2008-02-22 20:30:53 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a1977d32f0 
								
							 
						 
						
							
							
								
								Add debugging printfs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47496 
							
						 
						
							2008-02-22 19:57:06 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								18991d78fa 
								
							 
						 
						
							
							
								
								Fix newly-introduced 4.3 warnings  
							
							 
							
							... 
							
							
							
							llvm-svn: 47375 
							
						 
						
							2008-02-20 12:07:57 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								ad4d57a2f5 
								
							 
						 
						
							
							
								
								Determine whether a spill kills the register it's spilling before insertion rather than trying to undo the kill marker afterwards.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46953 
							
						 
						
							2008-02-11 08:30:52 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3a4be0fdef 
								
							 
						 
						
							
							
								
								Rename MRegisterInfo to TargetRegisterInfo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46930 
							
						 
						
							2008-02-10 18:45:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6a80462568 
								
							 
						 
						
							
							
								
								Remove remnant of load folding in local register allocator. Patch by Holger Schurig.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46861 
							
						 
						
							2008-02-07 19:46:55 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1ec748c784 
								
							 
						 
						
							
							
								
								Fix a number of local register allocator issues: PR1609.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46821 
							
						 
						
							2008-02-06 19:16:53 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								8291ab4449 
								
							 
						 
						
							
							
								
								RegAllocaLocal still *requires* LiveVariables since it runs PHIElimination, followed by TwoAddress which requires LiveVariables. We cannot run LiveVariables on non-SSA code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46813 
							
						 
						
							2008-02-06 08:00:32 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								9a8c890c02 
								
							 
						 
						
							
							
								
								Reg alloc doesn't really need LiveVariables.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46420 
							
						 
						
							2008-01-27 22:00:00 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								54c20b559e 
								
							 
						 
						
							
							
								
								When a live virtual register is being clobbered by an implicit def, it is spilled  
							
							 
							
							... 
							
							
							
							and the spill is its kill. However, if the local allocator has determined the
register has not been modified (possible when its value was reloaded), it would
not issue a restore. In that case, mark the last use of the virtual register as
kill.
llvm-svn: 46111 
							
						 
						
							2008-01-17 02:08:17 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								dc5b4c57d7 
								
							 
						 
						
							
							
								
								Replace std::vector<bool> with BitVector.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46104 
							
						 
						
							2008-01-17 00:35:26 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								03ad885039 
								
							 
						 
						
							
							
								
								rename TargetInstrDescriptor -> TargetInstrDesc.  
							
							 
							
							... 
							
							
							
							Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695 
							
						 
						
							2008-01-07 07:27:27 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								0ec92e9d64 
								
							 
						 
						
							
							
								
								Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45673 
							
						 
						
							2008-01-07 01:35:56 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								eee14601b1 
								
							 
						 
						
							
							
								
								Move some more instruction creation methods from RegisterInfo into InstrInfo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45484 
							
						 
						
							2008-01-01 21:11:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								a10fff51d9 
								
							 
						 
						
							
							
								
								Rename SSARegMap -> MachineRegisterInfo in keeping with the idea  
							
							 
							
							... 
							
							
							
							that "machine" classes are used to represent the current state of
the code being compiled.  Given this expanded name, we can start 
moving other stuff into it.  For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467 
							
						 
						
							2007-12-31 04:13:23 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								bb26301864 
								
							 
						 
						
							
							
								
								Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether  
							
							 
							
							... 
							
							
							
							the stored register is killed.
llvm-svn: 44600 
							
						 
						
							2007-12-05 03:14:33 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f45a1d623c 
								
							 
						 
						
							
							
								
								Remove redundant foldMemoryOperand variants and other code clean up.  
							
							 
							
							... 
							
							
							
							llvm-svn: 44517 
							
						 
						
							2007-12-02 08:30:39 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								5163a8f53e 
								
							 
						 
						
							
							
								
								Add missing paratheses.  
							
							 
							
							... 
							
							
							
							llvm-svn: 43227 
							
						 
						
							2007-10-22 19:42:28 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								4bf87f1f44 
								
							 
						 
						
							
							
								
								Correctly handle implcit def / use operands.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37740 
							
						 
						
							2007-06-26 21:05:13 +00:00  
						
					 
				
					
						
							
							
								 
								Bill Wendling
							
						 
						
							 
							
							
							
							
								
							
							
								31fd60ba0c 
								
							 
						 
						
							
							
								
								Change names from RA to something unique to get rid of naming conflicts with  
							
							 
							
							... 
							
							
							
							certain linkers...
llvm-svn: 36944 
							
						 
						
							2007-05-08 19:02:46 +00:00  
						
					 
				
					
						
							
							
								 
								Devang Patel
							
						 
						
							 
							
							
							
							
								
							
							
								8c78a0bff0 
								
							 
						 
						
							
							
								
								Drop 'const'  
							
							 
							
							... 
							
							
							
							llvm-svn: 36662 
							
						 
						
							2007-05-03 01:11:54 +00:00  
						
					 
				
					
						
							
							
								 
								Devang Patel
							
						 
						
							 
							
							
							
							
								
							
							
								e95c6ad802 
								
							 
						 
						
							
							
								
								Use 'static const char' instead of 'static const int'.  
							
							 
							
							... 
							
							
							
							Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652 
							
						 
						
							2007-05-02 21:39:20 +00:00  
						
					 
				
					
						
							
							
								 
								Devang Patel
							
						 
						
							 
							
							
							
							
								
							
							
								09f162ca6a 
								
							 
						 
						
							
							
								
								Do not use typeinfo to identify pass in pass manager.  
							
							 
							
							... 
							
							
							
							llvm-svn: 36632 
							
						 
						
							2007-05-01 21:15:47 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								0ba174534c 
								
							 
						 
						
							
							
								
								Match MachineFunction::UsedPhysRegs changes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 36452 
							
						 
						
							2007-04-25 22:13:27 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								14edd1989b 
								
							 
						 
						
							
							
								
								Use BitVector instead of vector<bool> which can be extremely slow.  
							
							 
							
							... 
							
							
							
							llvm-svn: 34302 
							
						 
						
							2007-02-15 05:59:24 +00:00