Nick Lewycky
							
						 
						
							 
							
							
							
							
								
							
							
								55a700b0cf 
								
							 
						 
						
							
							
								
								Make LazyValueInfo non-recursive.  
							
							 
							
							... 
							
							
							
							llvm-svn: 122120 
							
						 
						
							2010-12-18 01:00:40 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a4fcd2418d 
								
							 
						 
						
							
							
								
								Move Value::getUnderlyingObject to be a standalone  
							
							 
							
							... 
							
							
							
							function so that it can live in Analysis instead of
VMCore.
llvm-svn: 121885 
							
						 
						
							2010-12-15 20:02:24 +00:00  
						
					 
				
					
						
							
							
								 
								Nick Lewycky
							
						 
						
							 
							
							
							
							
								
							
							
								11678bd299 
								
							 
						 
						
							
							
								
								Clean up some of LVI:  
							
							 
							
							... 
							
							
							
							* mergeIn now uses constant folding for constants that are provably not-equal.
 * sink some sanity checks from the get*() methods into the mark*() methods, to ensure that we never have a constant/notconstant ConstantInt
 * some textual cleanups, whitespace changes, removing "else" after return, that sort of thing.
llvm-svn: 121877 
							
						 
						
							2010-12-15 18:57:18 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								c7ed4dc932 
								
							 
						 
						
							
							
								
								Take the first step towards making LVI non-recursive: get rid of the LVIQuery abstraction.  
							
							 
							
							... 
							
							
							
							llvm-svn: 121357 
							
						 
						
							2010-12-09 06:14:58 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								df7a4f2515 
								
							 
						 
						
							
							
								
								Now with fewer extraneous semicolons!  
							
							 
							
							... 
							
							
							
							llvm-svn: 115996 
							
						 
						
							2010-10-07 22:25:06 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								140296f5c0 
								
							 
						 
						
							
							
								
								It is possible, under specific circumstances involving ptrtoint ConstantExpr's, for LVI to end up trying to merge  
							
							 
							
							... 
							
							
							
							a Constant into a ConstantRange.  Handle this conservatively for now, rather than asserting.  The testcase is
more complex that I would like, but the manifestation of the problem is sensitive to iteration orders and the state of the
LVI cache, and I have not been able to reproduce it with manually constructed or simplified cases.
Fixes PR8162.
llvm-svn: 114103 
							
						 
						
							2010-09-16 18:28:33 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								a74fa15f32 
								
							 
						 
						
							
							
								
								Clean up some of the PassRegistry implementation, and pImpl-ize it to reduce #include clutter  
							
							 
							
							... 
							
							
							
							and exposing internal details.
llvm-svn: 113252 
							
						 
						
							2010-09-07 19:16:25 +00:00  
						
					 
				
					
						
							
							
								 
								Nick Lewycky
							
						 
						
							 
							
							
							
							
								
							
							
								ad48e01eef 
								
							 
						 
						
							
							
								
								Add completely hokey binary-and and binary-or operations to ConstantRange and  
							
							 
							
							... 
							
							
							
							teach LazyValueInfo to use them.
llvm-svn: 113196 
							
						 
						
							2010-09-07 05:39:02 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								65b48b5dfc 
								
							 
						 
						
							
							
								
								zap dead code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 113073 
							
						 
						
							2010-09-04 18:12:00 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								c725462245 
								
							 
						 
						
							
							
								
								Add support for simplifying a load from a computed value to a load from a global when it  
							
							 
							
							... 
							
							
							
							is provable that they're equivalent.  This fixes PR4855.
llvm-svn: 112994 
							
						 
						
							2010-09-03 19:08:37 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								2912df072d 
								
							 
						 
						
							
							
								
								Remove incorrect and poorly tested code for trying to reason about values on default edges of  
							
							 
							
							... 
							
							
							
							switches.  Just return the conservatively correct answer.
llvm-svn: 112876 
							
						 
						
							2010-09-02 22:16:52 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								a8c896b704 
								
							 
						 
						
							
							
								
								Fix a bug in LazyValueInfo that CorrelatedValuePropagation exposed: In the LVI lattice, undef and the full set ConstantRange should not  
							
							 
							
							... 
							
							
							
							be treated as equivalent.
llvm-svn: 112843 
							
						 
						
							2010-09-02 18:23:58 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								9517943d11 
								
							 
						 
						
							
							
								
								It is possible to try to merge a not-constant with a constantrage, when dealing with ptrtoint ConstantExpr's.  
							
							 
							
							... 
							
							
							
							Unfortunately, the only testcase I have for this is huge and doesn't reduce well because the error is
sensitive to iteration-order issues, since the problem only occurs when merging values in a particular order.
llvm-svn: 112489 
							
						 
						
							2010-08-30 17:03:45 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								38f6b7fe3b 
								
							 
						 
						
							
							
								
								Improve the precision of getConstant().  
							
							 
							
							... 
							
							
							
							llvm-svn: 112323 
							
						 
						
							2010-08-27 23:29:38 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								6ebbd92380 
								
							 
						 
						
							
							
								
								Use LVI to eliminate conditional branches where we've tested a related condition previously.  Update tests for this change.  
							
							 
							
							... 
							
							
							
							This fixes PR5652.
llvm-svn: 112270 
							
						 
						
							2010-08-27 17:12:29 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								4afea9e3c6 
								
							 
						 
						
							
							
								
								In the default address space, any GEP off of null results in a trap value if you try to load it.  Thus,  
							
							 
							
							... 
							
							
							
							any load in the default address space that completes implies that the base value that it GEP'd from
was not null.
llvm-svn: 112015 
							
						 
						
							2010-08-25 01:16:47 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								a10000006e 
								
							 
						 
						
							
							
								
								NULL loads are only invalid in the default address space.  
							
							 
							
							... 
							
							
							
							llvm-svn: 111972 
							
						 
						
							2010-08-24 22:00:55 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								b695c83de9 
								
							 
						 
						
							
							
								
								Add support for inferring values for the default cases of switches.  
							
							 
							
							... 
							
							
							
							llvm-svn: 111971 
							
						 
						
							2010-08-24 21:59:42 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								da34de1599 
								
							 
						 
						
							
							
								
								Add support for inferring that a load from a pointer implies that it is not null.  
							
							 
							
							... 
							
							
							
							llvm-svn: 111959 
							
						 
						
							2010-08-24 20:47:29 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								c62f704576 
								
							 
						 
						
							
							
								
								Don't assume that all constants with integer types are ConstantInts.  
							
							 
							
							... 
							
							
							
							llvm-svn: 111906 
							
						 
						
							2010-08-24 07:55:44 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								80d19f0905 
								
							 
						 
						
							
							
								
								Use ConstantRange to propagate information through value definitions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 111425 
							
						 
						
							2010-08-18 21:11:37 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								208636fa33 
								
							 
						 
						
							
							
								
								Inform LazyValueInfo whenever a block is deleted, to avoid dangling pointer issues.  
							
							 
							
							... 
							
							
							
							llvm-svn: 111382 
							
						 
						
							2010-08-18 18:39:01 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								fa7d44687f 
								
							 
						 
						
							
							
								
								Fix another iterator invalidation that caused a *really* nasty miscompilation in 403.gcc.  
							
							 
							
							... 
							
							
							
							llvm-svn: 111210 
							
						 
						
							2010-08-16 23:42:33 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								7b974a45db 
								
							 
						 
						
							
							
								
								Fix a subtle use-after-free issue.  
							
							 
							
							... 
							
							
							
							llvm-svn: 110863 
							
						 
						
							2010-08-11 22:36:04 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								0bd61240e9 
								
							 
						 
						
							
							
								
								Improve indentation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 110778 
							
						 
						
							2010-08-11 04:24:25 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								5f1dd0967d 
								
							 
						 
						
							
							
								
								Now that we're using ConstantRange to represent potential values, make use of that represenation to  
							
							 
							
							... 
							
							
							
							create constraints from comparisons other than eq/neq.
llvm-svn: 110742 
							
						 
						
							2010-08-10 23:20:01 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								185fe00633 
								
							 
						 
						
							
							
								
								Switch over to using ConstantRange to track integral values.  
							
							 
							
							... 
							
							
							
							llvm-svn: 110714 
							
						 
						
							2010-08-10 20:03:09 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								8afac043fb 
								
							 
						 
						
							
							
								
								Add ConstantRange information to the debugging output.  
							
							 
							
							... 
							
							
							
							llvm-svn: 110598 
							
						 
						
							2010-08-09 20:50:46 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								0f306a45ad 
								
							 
						 
						
							
							
								
								Add the beginnings of infrastructure for range tracking.  
							
							 
							
							... 
							
							
							
							llvm-svn: 110388 
							
						 
						
							2010-08-05 22:59:19 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								c3a1413ea1 
								
							 
						 
						
							
							
								
								Split the tag and value members of LVILatticeVal in preparation for expanding the lattice to something that won't fit in two bits.  
							
							 
							
							... 
							
							
							
							llvm-svn: 110383 
							
						 
						
							2010-08-05 22:10:46 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								c1561b8400 
								
							 
						 
						
							
							
								
								Add an initial implementation of PHI translation for LazyValueInfo.  This involves rolling back some  
							
							 
							
							... 
							
							
							
							of my earlier data structure improvements until I can ensure that there are no iterator invalidation problems.
llvm-svn: 109935 
							
						 
						
							2010-07-30 23:59:40 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								e4a0ab69d2 
								
							 
						 
						
							
							
								
								Revert my last two patches to LVI, which recent changes have exposed a miscompilation in.  
							
							 
							
							... 
							
							
							
							llvm-svn: 109889 
							
						 
						
							2010-07-30 20:56:07 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								a44f49f189 
								
							 
						 
						
							
							
								
								Pass the queried value by argument rather than in a member, in preparation for supporting PHI translation.  
							
							 
							
							... 
							
							
							
							llvm-svn: 109701 
							
						 
						
							2010-07-28 23:50:08 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								6982dd4e1f 
								
							 
						 
						
							
							
								
								Get rid of LVIQuery as a distinct data structure, so that we don't have to initialize a new set of maps on every query.  
							
							 
							
							... 
							
							
							
							llvm-svn: 109679 
							
						 
						
							2010-07-28 22:07:25 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								aac5a72139 
								
							 
						 
						
							
							
								
								Rearrange several datastructures in LazyValueInfo to improve compile time.  
							
							 
							
							... 
							
							
							
							This is still not perfect, but better than it was before.
llvm-svn: 109563 
							
						 
						
							2010-07-27 23:58:11 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								aa7f66ba67 
								
							 
						 
						
							
							
								
								Add an initial implementation of LazyValueInfo updating for JumpThreading.  Disabled for now.  
							
							 
							
							... 
							
							
							
							llvm-svn: 109424 
							
						 
						
							2010-07-26 18:48:03 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								a57b97e7e7 
								
							 
						 
						
							
							
								
								Fix batch of converting RegisterPass<> to INTIALIZE_PASS().  
							
							 
							
							... 
							
							
							
							llvm-svn: 109045 
							
						 
						
							2010-07-21 22:09:45 +00:00  
						
					 
				
					
						
							
							
								 
								David Greene
							
						 
						
							 
							
							
							
							
								
							
							
								37e9809294 
								
							 
						 
						
							
							
								
								Convert debug messages to use dbgs().  Generally this means  
							
							 
							
							... 
							
							
							
							s/errs/dbgs/g except for certain special cases.
llvm-svn: 92040 
							
						 
						
							2009-12-23 20:43:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e58c05780e 
								
							 
						 
						
							
							
								
								typo spotted by duncan.  
							
							 
							
							... 
							
							
							
							llvm-svn: 88884 
							
						 
						
							2009-11-16 03:51:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								7735878591 
								
							 
						 
						
							
							
								
								teach LVI to infer edge information from switch instructions.  
							
							 
							
							... 
							
							
							
							This allows JT to eliminate a ton of infeasible edges when
handling code like the templates in PatternMatch.h
llvm-svn: 88869 
							
						 
						
							2009-11-15 20:02:12 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b0c0a0df3e 
								
							 
						 
						
							
							
								
								fix a logic error that would cause LVI-JT to miscompile  
							
							 
							
							... 
							
							
							
							some conditionals
llvm-svn: 88868 
							
						 
						
							2009-11-15 20:01:24 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2c708562f5 
								
							 
						 
						
							
							
								
								implement the first stab at caching queries.  This isn't correct  
							
							 
							
							... 
							
							
							
							(because the invalidation logic is missing) but LVI isn't enabled
by default anyway.
llvm-svn: 88867 
							
						 
						
							2009-11-15 20:00:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								af025d3f6e 
								
							 
						 
						
							
							
								
								refactor a bunch of code forming the new LazyValueInfoCache  
							
							 
							
							... 
							
							
							
							and LVIQuery classes, no functionality change.
llvm-svn: 88866 
							
						 
						
							2009-11-15 19:59:49 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								22db4b5e0c 
								
							 
						 
						
							
							
								
								various fixes to the lattice transfer functions.  
							
							 
							
							... 
							
							
							
							llvm-svn: 86952 
							
						 
						
							2009-11-12 04:57:13 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								565ee2f1bd 
								
							 
						 
						
							
							
								
								Add a new getPredicateOnEdge method which returns more rich information for  
							
							 
							
							... 
							
							
							
							constant constraints.  Improve the LVI lattice to include inequality 
constraints.
llvm-svn: 86950 
							
						 
						
							2009-11-12 04:36:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								d5e25436a1 
								
							 
						 
						
							
							
								
								expose edge information and switch j-t to use it.  
							
							 
							
							... 
							
							
							
							llvm-svn: 86920 
							
						 
						
							2009-11-12 01:29:10 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b584d1e456 
								
							 
						 
						
							
							
								
								move some stuff into DEBUG's and turn on lazy-value-info for  
							
							 
							
							... 
							
							
							
							the basic.ll testcase.
llvm-svn: 86918 
							
						 
						
							2009-11-12 01:22:16 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								19019eaf00 
								
							 
						 
						
							
							
								
								make LazyValueInfo actually to some stuff.  This isn't very tested but improves  
							
							 
							
							... 
							
							
							
							strswitch.
llvm-svn: 86889 
							
						 
						
							2009-11-11 22:48:44 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fde1f8d0d8 
								
							 
						 
						
							
							
								
								stub out some LazyValueInfo interfaces, and have JumpThreading  
							
							 
							
							... 
							
							
							
							start using them in a trivial way when -enable-jump-threading-lvi
is passed.  enable-jump-threading-lvi will be my playground for 
awhile.
llvm-svn: 86789 
							
						 
						
							2009-11-11 02:08:33 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								741c94c719 
								
							 
						 
						
							
							
								
								Stub out a new lazy value info pass, which will eventually  
							
							 
							
							... 
							
							
							
							vend value constraint information to the optimizer.
llvm-svn: 86767 
							
						 
						
							2009-11-11 00:22:30 +00:00