Rafael Espindola 
							
						 
					 
					
						
						
							
						
						689d7d5dff 
					 
					
						
						
							
							On last fix to the early tail duplication.  
						
						... 
						
						
						
						With this I am able to bootstrap clang with early tail duplication enabled
for any small bb and setting tail-dup-size to a relatively large value(8) to
stress this code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132816  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-06-09 23:22:56 +00:00 
						 
				 
			
				
					
						
							
							
								Rafael Espindola 
							
						 
					 
					
						
						
							
						
						0f28c3f0c3 
					 
					
						
						
							
							Also consider phi nodes when deciding if a register is live out.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132814  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-06-09 22:53:47 +00:00 
						 
				 
			
				
					
						
							
							
								Rafael Espindola 
							
						 
					 
					
						
						
							
						
						a899b22310 
					 
					
						
						
							
							AnalyzeBranch modifies the bb, but we don't want to modify a bb with  
						
						... 
						
						
						
						eh edges. Swap the order of the checks to avoid it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132806  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-06-09 21:43:25 +00:00 
						 
				 
			
				
					
						
							
							
								Rafael Espindola 
							
						 
					 
					
						
						
							
						
						c2e9a50dfb 
					 
					
						
						
							
							A PHI in this basic block is a use in another basic block.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132805  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-06-09 20:55:41 +00:00 
						 
				 
			
				
					
						
							
							
								Rafael Espindola 
							
						 
					 
					
						
						
							
						
						54c256233f 
					 
					
						
						
							
							Refactor some checks into shouldTailDuplicate. Update comments.  
						
						... 
						
						
						
						No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132798  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-06-09 19:54:42 +00:00 
						 
				 
			
				
					
						
							
							
								Rafael Espindola 
							
						 
					 
					
						
						
							
						
						d69f85eb41 
					 
					
						
						
							
							Fix count.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132749  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-06-08 14:23:19 +00:00 
						 
				 
			
				
					
						
							
							
								Rafael Espindola 
							
						 
					 
					
						
						
							
						
						0cdca089b2 
					 
					
						
						
							
							Count how many phis we are creating.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132748  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-06-08 14:13:31 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						c8b90e22a8 
					 
					
						
						
							
							Update comments.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124843  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-04 01:10:12 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						8352062e52 
					 
					
						
						
							
							Respect the -tail-dup-size command line option even when optimizing for size.  
						
						... 
						
						
						
						This is similar to the -unroll-threshold option. There should be no change in
behavior when -tail-dup-size is not explicit on the llc command line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124564  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-01-30 20:38:12 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						c3f507f98a 
					 
					
						
						
							
							Re-apply r124518 with fix. Watch out for invalidated iterator.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124526  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-01-29 04:46:23 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						b0a42fdb36 
					 
					
						
						
							
							Revert r124518. It broke Linux self-host.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124522  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-01-29 02:43:04 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						5e6940788f 
					 
					
						
						
							
							Re-commit r124462 with fixes. Tail recursion elim will now dup ret into unconditional predecessor to enable TCE on demand.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124518  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-01-29 01:29:26 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						1b5c0cb71d 
					 
					
						
						
							
							Revert r124462. There are a few big regressions that I need to fix first.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124478  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-01-28 07:12:38 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						40f64cb0de 
					 
					
						
						
							
							- Stop simplifycfg from duplicating "ret" instructions into unconditional  
						
						... 
						
						
						
						branches. PR8575, rdar://5134905, rdar://8911460.
- Allow codegen tail duplication to dup small return blocks after register
  allocation is done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124462  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-01-28 02:19:21 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						c9df025e33 
					 
					
						
						
							
							Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic.  
						
						... 
						
						
						
						These functions not longer assert when passed 0, but simply return false instead.
No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123155  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-01-10 02:58:51 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						90c579de5a 
					 
					
						
						
							
							Reapply r110396, with fixes to appease the Linux buildbot gods.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-06 18:33:48 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						1f74590e9d 
					 
					
						
						
							
							Revert r110396 to fix buildbots.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-06 00:23:35 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9ccaf53ada 
					 
					
						
						
							
							Don't use PassInfo* as a type identifier for passes.  Instead, use the address of the static  
						
						... 
						
						
						
						ID member as the sole unique type identifier.  Clean up APIs related to this change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-05 23:42:04 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						04c528a0c8 
					 
					
						
						
							
							Remove many calls to TII::isMoveInstr. Targets should be producing COPY anyway.  
						
						... 
						
						
						
						TII::isMoveInstr is going tobe completely removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108507  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-16 04:45:42 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						1e1098c6f3 
					 
					
						
						
							
							Replace copyRegToReg with COPY everywhere in lib/CodeGen except for FastISel.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108062  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-10 22:42:59 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						34dcc6fadc 
					 
					
						
						
							
							Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that it  
						
						... 
						
						
						
						doesn't have to guess.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103194  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-05-06 20:33:48 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						cbe1e31732 
					 
					
						
						
							
							Ignore debug value instructions while analyzing BB for tail duplication.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98675  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-16 21:02:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						18589de9b1 
					 
					
						
						
							
							eliminate InvalidateLabel and LabelIDList from MMI and replace  
						
						... 
						
						
						
						them with a counter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98462  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-14 02:24:55 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						09eeac9f5f 
					 
					
						
						
							
							Reuse operand location when updating PHI instructions.  
						
						... 
						
						
						
						Calling RemoveOperand is very expensive on huge PHI instructions. This makes
early tail duplication run twice as fast on the Firefox JavaScript
interpreter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95832  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-11 00:34:33 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						518bb53485 
					 
					
						
						
							
							move target-independent opcodes out of TargetInstrInfo  
						
						... 
						
						
						
						into TargetOpcodes.h.  #include the new TargetOpcodes.h
into MachineInstr.  Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the 
codebase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-09 19:54:29 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						cb44b28f4d 
					 
					
						
						
							
							Treat indirect branches specially only during pre-regalloc tail duplication,  
						
						... 
						
						
						
						not during the later post-alloc tail duplication.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93600  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-16 00:42:25 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						057d53993c 
					 
					
						
						
							
							Simplify logic. Any functional change is unintended.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93540  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-15 19:59:57 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						bfdcf3bd49 
					 
					
						
						
							
							Change pre-regalloc tail duplication to only duplicate indirect branch blocks.  
						
						... 
						
						
						
						The pre-regalloc pass caused some regressions in both compile time and
performance of the generated code, and it did not improve performance, except
for indirect branches.  I also moved the check for single-block loops to speed
up the common case when running the taildup pass before reg allocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93505  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-15 06:29:17 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						30ac0467ce 
					 
					
						
						
							
							Add Target hook to duplicate machine instructions.  
						
						... 
						
						
						
						Some instructions refer to unique labels, and so cannot be trivially cloned
with CloneMachineInstr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92873  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-06 23:47:07 +00:00 
						 
				 
			
				
					
						
							
							
								David Greene 
							
						 
					 
					
						
						
							
						
						00dec1bbf9 
					 
					
						
						
							
							Change errs() to dbgs().  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92582  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 01:25:15 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						3466f13f38 
					 
					
						
						
							
							Tail duplication should zap a copy it inserted for SSA update if the copy is the only use of its source.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91390  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-15 01:44:10 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						80564f761a 
					 
					
						
						
							
							Delete code accidentally left behind.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90804  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-07 21:19:33 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						75eb535843 
					 
					
						
						
							
							Pre-regalloc tale duplication. Work in progress.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90759  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-07 10:15:19 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						11572babb1 
					 
					
						
						
							
							Handle recursive PHI's.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90575  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-04 19:09:10 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						79fc6f44b6 
					 
					
						
						
							
							Add a pre-regalloc tail duplication pass.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90567  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-04 09:42:45 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						111e7629cc 
					 
					
						
						
							
							Teach tail duplication to update SSA form. Work in progress.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90432  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-03 08:43:53 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						f1e01dcc94 
					 
					
						
						
							
							Don't count PHI instructions toward the limit for tail duplicating a block.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90326  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-02 17:15:24 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						3858225afc 
					 
					
						
						
							
							Reprioritize tests for tail duplication to be aggressive about indirect  
						
						... 
						
						
						
						branches even when optimizing for code size.  Unless we find evidence to the
contrary in the future, the special treatment for indirect branches does not
have a significant effect on code size, and performance still matters with -Os.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90147  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-11-30 18:56:45 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						15217e63bc 
					 
					
						
						
							
							Remove isProfitableToDuplicateIndirectBranch target hook.  It is profitable  
						
						... 
						
						
						
						for all the processors where I have tried it, and even when it might not help
performance, the cost is quite low.  The opportunities for duplicating
indirect branches are limited by other factors so code size does not change
much due to tail duplicating indirect branches aggressively.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90144  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-11-30 18:35:03 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						2d521e51ac 
					 
					
						
						
							
							Rename new TailDuplicationPass to avoid name conflict with the old one.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89968  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-11-26 21:38:41 +00:00 
						 
				 
			
				
					
						
							
							
								Bob Wilson 
							
						 
					 
					
						
						
							
						
						15acadde5f 
					 
					
						
						
							
							Split tail duplication into a separate pass.  This is needed to avoid  
						
						... 
						
						
						
						running tail duplication when doing branch folding for if-conversion, and
we also want to be able to run tail duplication earlier to fix some
reg alloc problems.  Move the CanFallThrough function from BranchFolding
to MachineBasicBlock so that it can be shared by TailDuplication.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89904  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-11-26 00:32:21 +00:00