3266ff9a6f 
								
							 
						 
						
							
							
								
								PR1909: Tail merging pass ran wild. It makes no sense to merge blocks in order to save a single instruction since a branch will be inserted for each BB.  
							
							... 
							
							
							
							llvm-svn: 47301 
							
						 
						
							2008-02-19 02:09:37 +00:00  
				
					
						
							
							
								 
						
							
								3a4be0fdef 
								
							 
						 
						
							
							
								
								Rename MRegisterInfo to TargetRegisterInfo.  
							
							... 
							
							
							
							llvm-svn: 46930 
							
						 
						
							2008-02-10 18:45:23 +00:00  
				
					
						
							
							
								 
						
							
								70de4cb1cd 
								
							 
						 
						
							
							
								
								Use empty() instead of comparing size() with zero.  
							
							... 
							
							
							
							llvm-svn: 46514 
							
						 
						
							2008-01-29 13:02:09 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								a98c679de0 
								
							 
						 
						
							
							
								
								Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects  
							
							... 
							
							
							
							that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into 
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around.  Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674 
							
						 
						
							2008-01-07 01:56:04 +00:00  
				
					
						
							
							
								 
						
							
								a4ce4f6987 
								
							 
						 
						
							
							
								
								rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.  
							
							... 
							
							
							
							llvm-svn: 45667 
							
						 
						
							2008-01-06 23:38:27 +00:00  
				
					
						
							
							
								 
						
							
								10324d0175 
								
							 
						 
						
							
							
								
								rename isStore -> mayStore to more accurately reflect what it captures.  
							
							... 
							
							
							
							llvm-svn: 45656 
							
						 
						
							2008-01-06 08:36:04 +00:00  
				
					
						
							
							
								 
						
							
								a5bb370aa4 
								
							 
						 
						
							
							
								
								Add new shorter predicates for testing machine operands for various types:  
							
							... 
							
							
							
							e.g. MO.isMBB() instead of MO.isMachineBasicBlock().  I don't plan on 
switching everything over, so new clients should just start using the 
shorter names.
Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(), 
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.
llvm-svn: 45464 
							
						 
						
							2007-12-30 23:10:15 +00:00  
				
					
						
							
							
								 
						
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
				
					
						
							
							
								 
						
							
								d202e03fe5 
								
							 
						 
						
							
							
								
								Improve branch folding by recgonizing that explict successor relationships impact the value of fall-through choices.  
							
							... 
							
							
							
							llvm-svn: 44785 
							
						 
						
							2007-12-10 07:24:06 +00:00  
				
					
						
							
							
								 
						
							
								f73340efb9 
								
							 
						 
						
							
							
								
								Changed XXX to FIXME, and added comment to the README file  
							
							... 
							
							
							
							llvm-svn: 43359 
							
						 
						
							2007-10-25 19:49:32 +00:00  
				
					
						
							
							
								 
						
							
								5f7ed00d44 
								
							 
						 
						
							
							
								
								Added comment explaining why we are doing this check.  
							
							... 
							
							
							
							llvm-svn: 43353 
							
						 
						
							2007-10-25 18:23:45 +00:00  
				
					
						
							
							
								 
						
							
								ac5c93040f 
								
							 
						 
						
							
							
								
								Don't branch fold inline asm statements.  
							
							... 
							
							
							
							llvm-svn: 43191 
							
						 
						
							2007-10-19 21:09:55 +00:00  
				
					
						
							
							
								 
						
							
								5f6a9da530 
								
							 
						 
						
							
							
								
								More explicit keywords.  
							
							... 
							
							
							
							llvm-svn: 40757 
							
						 
						
							2007-08-02 21:21:54 +00:00  
				
					
						
							
							
								 
						
							
								d5ea194b6c 
								
							 
						 
						
							
							
								
								If assertions are not enabled, we should return False here.  
							
							... 
							
							
							
							llvm-svn: 38535 
							
						 
						
							2007-07-11 08:47:55 +00:00  
				
					
						
							
							
								 
						
							
								d9034f717a 
								
							 
						 
						
							
							
								
								Make this work with GLIBCXX_DEBUG.  
							
							... 
							
							
							
							llvm-svn: 38516 
							
						 
						
							2007-07-10 22:00:30 +00:00  
				
					
						
							
							
								 
						
							
								451d1a6ecd 
								
							 
						 
						
							
							
								
								Fix misue of iterator pointing to erased object.  Uncovered by  
							
							... 
							
							
							
							_GLIBCXX_DEBUG.
llvm-svn: 37793 
							
						 
						
							2007-06-29 02:45:24 +00:00  
				
					
						
							
							
								 
						
							
								2afd702c20 
								
							 
						 
						
							
							
								
								Move CorrectExtraCFGEdges() from BranchFolding.cpp to a MachineBasicBlock method.  
							
							... 
							
							
							
							llvm-svn: 37633 
							
						 
						
							2007-06-18 22:43:58 +00:00  
				
					
						
							
							
								 
						
							
								86798e5e11 
								
							 
						 
						
							
							
								
								Make throttle a hidden parameter, per review.  
							
							... 
							
							
							
							llvm-svn: 37511 
							
						 
						
							2007-06-08 01:08:52 +00:00  
				
					
						
							
							
								 
						
							
								52fcf022f7 
								
							 
						 
						
							
							
								
								Throttle tail merging; handling blocks with large numbers of predecessors  
							
							... 
							
							
							
							is too slow.
llvm-svn: 37509 
							
						 
						
							2007-06-08 00:34:27 +00:00  
				
					
						
							
							
								 
						
							
								0558dda319 
								
							 
						 
						
							
							
								
								Tail merging wasn't working for predecessors of landing pads.  PR 1496.  
							
							... 
							
							
							
							llvm-svn: 37427 
							
						 
						
							2007-06-04 23:52:54 +00:00  
				
					
						
							
							
								 
						
							
								df75785594 
								
							 
						 
						
							
							
								
								Move ReplaceUsesOfBlockWith() out of BranchFolding into a MachineBasicBlock general facility.  
							
							... 
							
							
							
							llvm-svn: 37408 
							
						 
						
							2007-06-04 06:44:01 +00:00  
				
					
						
							
							
								 
						
							
								6e7cdce773 
								
							 
						 
						
							
							
								
								Fix CorrectExtraCFGEdges to allow for multiple LandingPad targets.  
							
							... 
							
							
							
							llvm-svn: 37394 
							
						 
						
							2007-06-02 00:08:15 +00:00  
				
					
						
							
							
								 
						
							
								3c0a13762d 
								
							 
						 
						
							
							
								
								Implement smarter algorithm for choosing which blocks to tail-merge.  
							
							... 
							
							
							
							See test/CodeGen/X86/test-pic-jtbl.ll for a case where it works well;
shaves another 10K off our favorite benchmark.  I was hesitant about
this because of compile speed, but seems to do OK on a bootstrap.
llvm-svn: 37392 
							
						 
						
							2007-06-01 23:02:45 +00:00  
				
					
						
							
							
								 
						
							
								1a401e68a8 
								
							 
						 
						
							
							
								
								Arrange for only 1 of multiple branches to landing pad to be kept.  
							
							... 
							
							
							
							Do not remove empty landing pads (EH table needs to be updated)
llvm-svn: 37375 
							
						 
						
							2007-05-31 21:54:00 +00:00  
				
					
						
							
							
								 
						
							
								d14ad078c6 
								
							 
						 
						
							
							
								
								Changed per review comment.  
							
							... 
							
							
							
							llvm-svn: 37355 
							
						 
						
							2007-05-30 00:32:01 +00:00  
				
					
						
							
							
								 
						
							
								a69ebdbebc 
								
							 
						 
						
							
							
								
								Make stable_sort in tail merging actually be stable (it never was, but didn't  
							
							... 
							
							
							
							matter until my last change).  Reenable tail merging by default.
llvm-svn: 37354 
							
						 
						
							2007-05-29 23:47:50 +00:00  
				
					
						
							
							
								 
						
							
								1409b6a59b 
								
							 
						 
						
							
							
								
								Blocks that cond-br and uncond-br/fallthrough to same block should have  
							
							... 
							
							
							
							only one successor.
llvm-svn: 37324 
							
						 
						
							2007-05-24 18:31:55 +00:00  
				
					
						
							
							
								 
						
							
								1af8c870c7 
								
							 
						 
						
							
							
								
								Fix for PR1444: do not create two successors to the same block.  
							
							... 
							
							
							
							Temporarily, this breaks CodeGen/Generic/2006-02-12-InsertLibraryCall.ll
by exposing an unrelated latent problem; working on that.
llvm-svn: 37323 
							
						 
						
							2007-05-24 17:39:32 +00:00  
				
					
						
							
							
								 
						
							
								f4a77d2481 
								
							 
						 
						
							
							
								
								Two tail merging improvements:  
							
							... 
							
							
							
							When considering blocks with more than 2 predecessors, merge the block with
the largest number of matching insns, rather than the first block found.
Considering that 1 matching insn is enough to show a win for candidates that
already end with a branch.
llvm-svn: 37315 
							
						 
						
							2007-05-23 21:07:20 +00:00  
				
					
						
							
							
								 
						
							
								82810c8a13 
								
							 
						 
						
							
							
								
								Make tail merging the default, except on powerPC.  There was no prior art  
							
							... 
							
							
							
							for a target-dependent default with a command-line override; this way
should be generally usable.
llvm-svn: 37285 
							
						 
						
							2007-05-22 17:14:46 +00:00  
				
					
						
							
							
								 
						
							
								f8956178af 
								
							 
						 
						
							
							
								
								Remove some unneeded branches.  (spotted by Evan, thanks)  
							
							... 
							
							
							
							llvm-svn: 37198 
							
						 
						
							2007-05-18 01:28:58 +00:00  
				
					
						
							
							
								 
						
							
								420a85d0cf 
								
							 
						 
						
							
							
								
								Remove extra CFG edges before doing these passes; it makes them happier.  
							
							... 
							
							
							
							llvm-svn: 37089 
							
						 
						
							2007-05-15 21:19:17 +00:00  
				
					
						
							
							
								 
						
							
								cc8f571bc8 
								
							 
						 
						
							
							
								
								Do not generate branches to entry block.  This fixes several test suite  
							
							... 
							
							
							
							failures on PPC (can happen only when prologue code is null)
llvm-svn: 36979 
							
						 
						
							2007-05-10 23:59:23 +00:00  
				
					
						
							
							
								 
						
							
								6e16d09252 
								
							 
						 
						
							
							
								
								Make tail merging handle many more cases (all it can, I think).  
							
							... 
							
							
							
							llvm-svn: 36966 
							
						 
						
							2007-05-10 01:01:49 +00:00  
				
					
						
							
							
								 
						
							
								9a25b3afcd 
								
							 
						 
						
							
							
								
								Handle some non-exit blocks in tail merging.  
							
							... 
							
							
							
							llvm-svn: 36907 
							
						 
						
							2007-05-07 20:57:21 +00:00  
				
					
						
							
							
								 
						
							
								8c78a0bff0 
								
							 
						 
						
							
							
								
								Drop 'const'  
							
							... 
							
							
							
							llvm-svn: 36662 
							
						 
						
							2007-05-03 01:11:54 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								09f162ca6a 
								
							 
						 
						
							
							
								
								Do not use typeinfo to identify pass in pass manager.  
							
							... 
							
							
							
							llvm-svn: 36632 
							
						 
						
							2007-05-01 21:15:47 +00:00  
				
					
						
							
							
								 
						
							
								4dbbace4ff 
								
							 
						 
						
							
							
								
								Fix PR1228 and CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll  
							
							... 
							
							
							
							llvm-svn: 36602 
							
						 
						
							2007-04-30 23:35:00 +00:00  
				
					
						
							
							
								 
						
							
								d05a1a2ade 
								
							 
						 
						
							
							
								
								maintain LiveIn when splitting blocks (register scavenging needs it)  
							
							... 
							
							
							
							llvm-svn: 35226 
							
						 
						
							2007-03-20 21:35:06 +00:00  
				
					
						
							
							
								 
						
							
								9df1a1d8d8 
								
							 
						 
						
							
							
								
								Remove isAccessable.  
							
							... 
							
							
							
							llvm-svn: 34497 
							
						 
						
							2007-02-22 16:39:03 +00:00  
				
					
						
							
							
								 
						
							
								2dc5245c4a 
								
							 
						 
						
							
							
								
								Make branch folding behave in the presence of landing pads.  
							
							... 
							
							
							
							llvm-svn: 34476 
							
						 
						
							2007-02-21 22:42:20 +00:00  
				
					
						
							
							
								 
						
							
								12920dda9e 
								
							 
						 
						
							
							
								
								Fixes PR 1200  
							
							... 
							
							
							
							llvm-svn: 34359 
							
						 
						
							2007-02-17 00:44:34 +00:00  
				
					
						
							
							
								 
						
							
								c56315c2b5 
								
							 
						 
						
							
							
								
								Change the MachineDebugInfo to MachineModuleInfo to better reflect usage  
							
							... 
							
							
							
							for debugging and exception handling.
llvm-svn: 33550 
							
						 
						
							2007-01-26 21:22:28 +00:00  
				
					
						
							
							
								 
						
							
								f9e5445ed4 
								
							 
						 
						
							
							
								
								Make LABEL a builtin opcode.  
							
							... 
							
							
							
							llvm-svn: 33537 
							
						 
						
							2007-01-26 14:34:52 +00:00  
				
					
						
							
							
								 
						
							
								aee775a6b7 
								
							 
						 
						
							
							
								
								Eliminate static ctors from Statistics  
							
							... 
							
							
							
							llvm-svn: 32698 
							
						 
						
							2006-12-19 22:41:21 +00:00  
				
					
						
							
							
								 
						
							
								700b873130 
								
							 
						 
						
							
							
								
								Detemplatize the Statistic class.  The only type it is instantiated with  
							
							... 
							
							
							
							is 'unsigned'.
llvm-svn: 32279 
							
						 
						
							2006-12-06 17:46:33 +00:00  
				
					
						
							
							
								 
						
							
								ea017f66f7 
								
							 
						 
						
							
							
								
								Don't transform in another bad case: if the block is empty, it should be  
							
							... 
							
							
							
							simplified before we do this xform so that our cost model is accurate.
llvm-svn: 31864 
							
						 
						
							2006-11-18 22:25:39 +00:00  
				
					
						
							
							
								 
						
							
								56ec81ff73 
								
							 
						 
						
							
							
								
								Fix another case we *don't* want to do this xform.  
							
							... 
							
							
							
							llvm-svn: 31861 
							
						 
						
							2006-11-18 21:56:39 +00:00