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  
				
					
						
							
							
								 
						
							
								38f6b7fe3b 
								
							 
						 
						
							
							
								
								Improve the precision of getConstant().  
							
							... 
							
							
							
							llvm-svn: 112323 
							
						 
						
							2010-08-27 23:29:38 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								a10000006e 
								
							 
						 
						
							
							
								
								NULL loads are only invalid in the default address space.  
							
							... 
							
							
							
							llvm-svn: 111972 
							
						 
						
							2010-08-24 22:00:55 +00:00  
				
					
						
							
							
								 
						
							
								b695c83de9 
								
							 
						 
						
							
							
								
								Add support for inferring values for the default cases of switches.  
							
							... 
							
							
							
							llvm-svn: 111971 
							
						 
						
							2010-08-24 21:59:42 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								c62f704576 
								
							 
						 
						
							
							
								
								Don't assume that all constants with integer types are ConstantInts.  
							
							... 
							
							
							
							llvm-svn: 111906 
							
						 
						
							2010-08-24 07:55:44 +00:00  
				
					
						
							
							
								 
						
							
								80d19f0905 
								
							 
						 
						
							
							
								
								Use ConstantRange to propagate information through value definitions.  
							
							... 
							
							
							
							llvm-svn: 111425 
							
						 
						
							2010-08-18 21:11:37 +00:00  
				
					
						
							
							
								 
						
							
								208636fa33 
								
							 
						 
						
							
							
								
								Inform LazyValueInfo whenever a block is deleted, to avoid dangling pointer issues.  
							
							... 
							
							
							
							llvm-svn: 111382 
							
						 
						
							2010-08-18 18:39:01 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								7b974a45db 
								
							 
						 
						
							
							
								
								Fix a subtle use-after-free issue.  
							
							... 
							
							
							
							llvm-svn: 110863 
							
						 
						
							2010-08-11 22:36:04 +00:00  
				
					
						
							
							
								 
						
							
								0bd61240e9 
								
							 
						 
						
							
							
								
								Improve indentation.  
							
							... 
							
							
							
							llvm-svn: 110778 
							
						 
						
							2010-08-11 04:24:25 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								185fe00633 
								
							 
						 
						
							
							
								
								Switch over to using ConstantRange to track integral values.  
							
							... 
							
							
							
							llvm-svn: 110714 
							
						 
						
							2010-08-10 20:03:09 +00:00  
				
					
						
							
							
								 
						
							
								8afac043fb 
								
							 
						 
						
							
							
								
								Add ConstantRange information to the debugging output.  
							
							... 
							
							
							
							llvm-svn: 110598 
							
						 
						
							2010-08-09 20:50:46 +00:00  
				
					
						
							
							
								 
						
							
								0f306a45ad 
								
							 
						 
						
							
							
								
								Add the beginnings of infrastructure for range tracking.  
							
							... 
							
							
							
							llvm-svn: 110388 
							
						 
						
							2010-08-05 22:59:19 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								aa7f66ba67 
								
							 
						 
						
							
							
								
								Add an initial implementation of LazyValueInfo updating for JumpThreading.  Disabled for now.  
							
							... 
							
							
							
							llvm-svn: 109424 
							
						 
						
							2010-07-26 18:48:03 +00:00  
				
					
						
							
							
								 
						
							
								a57b97e7e7 
								
							 
						 
						
							
							
								
								Fix batch of converting RegisterPass<> to INTIALIZE_PASS().  
							
							... 
							
							
							
							llvm-svn: 109045 
							
						 
						
							2010-07-21 22:09:45 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								e58c05780e 
								
							 
						 
						
							
							
								
								typo spotted by duncan.  
							
							... 
							
							
							
							llvm-svn: 88884 
							
						 
						
							2009-11-16 03:51:42 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								22db4b5e0c 
								
							 
						 
						
							
							
								
								various fixes to the lattice transfer functions.  
							
							... 
							
							
							
							llvm-svn: 86952 
							
						 
						
							2009-11-12 04:57:13 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								d5e25436a1 
								
							 
						 
						
							
							
								
								expose edge information and switch j-t to use it.  
							
							... 
							
							
							
							llvm-svn: 86920 
							
						 
						
							2009-11-12 01:29:10 +00:00  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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  
				
					
						
							
							
								 
						
							
								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