Chris Lattner 
							
						 
					 
					
						
						
							
						
						4f8c18c7c7 
					 
					
						
						
							
							Eliminate the dropInstruction method, which is not needed any more.  
						
						... 
						
						
						
						Fix a subtle iterator invalidation bug I introduced in the last commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60258  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 23:30:39 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0ec48ddef2 
					 
					
						
						
							
							implement some fixme's: when deleting an instruction with  
						
						... 
						
						
						
						an entry in the nonlocal deps map, don't reset entries
referencing that instruction to [dirty, null], instead, set
them to [dirty,next] where next is the instruction after the
deleted one.  Use this information in the non-local deps
code to avoid rescanning entire blocks.
This speeds up GVN slightly by avoiding pointless work.  On
403.gcc this makes GVN 1.5% faster. 
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60256  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 22:02:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						396a4a55e5 
					 
					
						
						
							
							Change MemDep::getNonLocalDependency to return its results as  
						
						... 
						
						
						
						a smallvector instead of a DenseMap.  This speeds up GVN by 5%
on 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60255  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 21:33:22 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						86b29ef64a 
					 
					
						
						
							
							reimplement getNonLocalDependency with a simpler worklist  
						
						... 
						
						
						
						formulation that is faster and doesn't require nonLazyHelper.
Much less code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60253  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 21:22:42 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						233336ebc5 
					 
					
						
						
							
							tidy up some variable names.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60243  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 09:22:14 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8c4652790e 
					 
					
						
						
							
							rename some maps.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60242  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 09:20:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5391a1d804 
					 
					
						
						
							
							Split getDependency into getDependency and getDependencyFrom, the  
						
						... 
						
						
						
						former does caching, the later doesn't.  This dramatically simplifies
the logic in getDependency and getDependencyFrom.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60234  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 03:47:00 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7f52422a3c 
					 
					
						
						
							
							Now that DepType is private, we can start cleaning up some of its uses:  
						
						... 
						
						
						
						Document the Dirty value more precisely, use it for the uninitialized
DepResultTy value.  Change reverse mappings to be from an instruction*
instead of DepResultTy, and stop tracking other forms.  This makes it more
clear that we only care about the instruction cases.
Eliminate a DepResultTy,bool pair by using Dirty in the local case as well,
shrinking the map and simplifying the code.
This speeds up GVN by ~3% on 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60232  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 03:22:12 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4c72400625 
					 
					
						
						
							
							Introduce and use a new MemDepResult class to hold the results of a memdep  
						
						... 
						
						
						
						query.  This makes it crystal clear what cases can escape from MemDep that
the clients have to handle.  This also gives the clients a nice simplified
interface to it that is easy to poke at.
This patch also makes DepResultTy and MemoryDependenceAnalysis::DepType
private, yay.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60231  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 02:29:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						39f372e23e 
					 
					
						
						
							
							Reimplement the internal abstraction used by MemDep in terms  
						
						... 
						
						
						
						of a pointer/int pair instead of a manually bitmangled pointer.
This forces clients to think a little more about checking the 
appropriate pieces and will be useful for internal 
implementation improvements later.
I'm not particularly happy with this.  After going through this
I don't think that the clients of memdep should be exposed to
the internal type at all.  I'll fix this in a subsequent commit.
This has no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60230  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-29 01:43:36 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						956033a4f5 
					 
					
						
						
							
							comment cleanups.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60220  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-28 22:41:36 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b390b1728e 
					 
					
						
						
							
							forward declare CallSite instead of #includ'ing it.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60217  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-28 21:47:19 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8b589fa135 
					 
					
						
						
							
							rename "ping" to "verifyRemoved".  I don't know why 'ping' what chosen,  
						
						... 
						
						
						
						but it doesn't make any sense at all.
Also make the method const, private, and fit in 80 cols while we're at it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60215  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-28 21:42:09 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e85866313a 
					 
					
						
						
							
							comment and indentation improvements.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60214  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-11-28 21:36:43 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						ae73dc1448 
					 
					
						
						
							
							Tidy up several unbeseeming casts from pointer to intptr_t.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-09-04 17:05:41 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						c758209153 
					 
					
						
						
							
							PassInfo keep tracks whether a pass is an analysis pass or not.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48554  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-03-19 21:56:59 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						c7fe32e840 
					 
					
						
						
							
							Do not use virtual function to identify an analysis pass.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48520  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-03-19 00:48:41 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						1cee94f041 
					 
					
						
						
							
							Identify Analysis pass.  
						
						... 
						
						
						
						Do not run analysis pass again if analysis info is still available.
This fixes PR1441.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48476  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-03-18 00:39:19 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						30b4bd4d10 
					 
					
						
						
							
							Re-apply the patch to improve the optimizations of memcpy's, with several  
						
						... 
						
						
						
						bugs fixed.  This now passes PPC bootstrap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47026  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2008-02-12 21:15:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7ed47a1335 
					 
					
						
						
							
							Don't attribute in file headers anymore.  See llvmdev for the  
						
						... 
						
						
						
						discussion of this change.  Boy are my fingers tired. ;-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45411  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-12-29 19:59:42 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						5fc4abac3d 
					 
					
						
						
							
							Fix several cache coherence bugs in MemDep/GVN that were found.  Also add some (disabled) debugging code  
						
						... 
						
						
						
						to make such problems easier to diagnose in the future, written by Duncan Sands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44695  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-12-08 01:37:09 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						742f9b6682 
					 
					
						
						
							
							Add a flag to mark a dirty cache entry.  This is not yet used, but will eventually  
						
						... 
						
						
						
						help non-local memdep caching.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42137  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-09-19 16:13:57 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						4d13de4e3b 
					 
					
						
						
							
							Cache non-local memory dependence analysis.  This is a significant compile  
						
						... 
						
						
						
						time performance win in most cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41126  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-16 21:27:05 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9528f11481 
					 
					
						
						
							
							Make NonLocal and None const in the right way. :-)  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40961  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-09 04:42:44 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						49609a5ddf 
					 
					
						
						
							
							Add one more comment.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40949  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-08 21:54:33 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						179463c0d4 
					 
					
						
						
							
							Cleanup and comment-ize the memdep header.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40948  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-08 21:53:20 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						8cad423d94 
					 
					
						
						
							
							Change the None and NonLocal markers in memdep to be const.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40946  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-08 21:39:39 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						371d68958f 
					 
					
						
						
							
							Get rid of unnecessary #include.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40885  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-07 00:38:16 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						dbbe816757 
					 
					
						
						
							
							Clean up a bunch of caching stuff in memdep.  This reduces the time to run GVN  
						
						... 
						
						
						
						on 403.gcc from ~15s to ~10s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40884  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-07 00:33:45 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9066020993 
					 
					
						
						
							
							Make non-local memdep not be recursive, and fix a bug on 403.gcc that this exposed.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40692  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-08-01 22:01:54 +00:00 
						 
				 
			
				
					
						
							
							
								David Greene 
							
						 
					 
					
						
						
							
						
						df464195fe 
					 
					
						
						
							
							Fix GLIBCXX_DEBUG error owing to dereference of end iterator.  There's  
						
						... 
						
						
						
						no guarantee that an instruction returned by getDependency exists in
the maps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40647  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-31 20:01:27 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						02d6852a1c 
					 
					
						
						
							
							Forgot to include this file in my last commit.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40496  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-25 21:30:15 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						0cd320362e 
					 
					
						
						
							
							Add basic support for performing whole-function RLE.  
						
						... 
						
						
						
						Note: This has not yet been thoroughly tested.  Use at your own risk.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40489  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-25 19:57:03 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						4beedbd006 
					 
					
						
						
							
							Add initial support for non-local memory dependence analysis.  
						
						... 
						
						
						
						NOTE: This has only been cursorily tested.  Expected improvements soon.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40476  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-24 21:52:37 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						faac518ce0 
					 
					
						
						
							
							Add support for walking up memory def chains, which enables finding many more  
						
						... 
						
						
						
						dead stores on 400.perlbench.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39929  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-16 21:52:50 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						5f32320797 
					 
					
						
						
							
							Add support for finding the dependencies of call and invoke instructions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38497  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-10 17:59:22 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						6b278fc786 
					 
					
						
						
							
							Fix a bunch of things from Chris' feedback  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38493  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-10 17:08:11 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						78e02f78ce 
					 
					
						
						
							
							A first stab at memory dependence analysis.  This is an interface on top of  
						
						... 
						
						
						
						alias analysis, adding caching and lazy computation of queries.  This will
be used in planned improvements to memory access optimizations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37958  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-07-06 23:14:35 +00:00