5d6ede524a 
								
							 
						 
						
							
							
								
								Quiet compiler warning. The only reason the function is marked virtual  
							
							... 
							
							
							
							is so that it can be called from inside a debugger.
llvm-svn: 33067 
							
						 
						
							2007-01-11 02:38:21 +00:00  
				
					
						
							
							
								 
						
							
								2fc338f923 
								
							 
						 
						
							
							
								
								New predicate simplifier!  
							
							... 
							
							
							
							Please do not enable, there is still some known miscompile problem.
llvm-svn: 33066 
							
						 
						
							2007-01-11 02:32:38 +00:00  
				
					
						
							
							
								 
						
							
								266e42b312 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							This patch removes the SetCC instructions and replaces them with the ICmp
and FCmp instructions. The SetCondInst instruction has been removed and
been replaced with ICmpInst and FCmpInst.
llvm-svn: 32751 
							
						 
						
							2006-12-23 06:05:41 +00:00  
				
					
						
							
							
								 
						
							
								0e5255bdc6 
								
							 
						 
						
							
							
								
								Convert more Statistic's over to STATISTIC  
							
							... 
							
							
							
							llvm-svn: 32692 
							
						 
						
							2006-12-19 21:49:03 +00:00  
				
					
						
							
							
								 
						
							
								22e978a736 
								
							 
						 
						
							
							
								
								Removing even more <iostream> includes.  
							
							... 
							
							
							
							llvm-svn: 32320 
							
						 
						
							2006-12-07 20:04:42 +00:00  
				
					
						
							
							
								 
						
							
								f06bb658a8 
								
							 
						 
						
							
							
								
								add missing #include  
							
							... 
							
							
							
							llvm-svn: 32280 
							
						 
						
							2006-12-06 18:14:47 +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  
				
					
						
							
							
								 
						
							
								cc08c83186 
								
							 
						 
						
							
							
								
								Unbreak VC++ build.  
							
							... 
							
							
							
							llvm-svn: 32113 
							
						 
						
							2006-12-02 02:22:01 +00:00  
				
					
						
							
							
								 
						
							
								09b7e4d3ab 
								
							 
						 
						
							
							
								
								Update to new predicate simplifier VRP design. Fixes PR966 and PR967.  
							
							... 
							
							
							
							Remove predicate simplifier from default gcc3 pipeline. New design is too
slow to enable by default.
Add new testcases for problems encountered in development.
llvm-svn: 31895 
							
						 
						
							2006-11-22 23:49:16 +00:00  
				
					
						
							
							
								 
						
							
								7d6f3db3e2 
								
							 
						 
						
							
							
								
								Unbreak VC++ build.  
							
							... 
							
							
							
							llvm-svn: 31464 
							
						 
						
							2006-11-05 19:31:28 +00:00  
				
					
						
							
							
								 
						
							
								67bad5adbc 
								
							 
						 
						
							
							
								
								Remove commented line from earlier debugging.  
							
							... 
							
							
							
							llvm-svn: 31460 
							
						 
						
							2006-11-05 14:19:40 +00:00  
				
					
						
							
							
								 
						
							
								7eb55b395f 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							Replace the REM instruction with UREM, SREM and FREM.
llvm-svn: 31369 
							
						 
						
							2006-11-02 01:53:59 +00:00  
				
					
						
							
							
								 
						
							
								7e80b0b31e 
								
							 
						 
						
							
							
								
								For PR950:  
							
							... 
							
							
							
							Make necessary changes to support DIV -> [SUF]Div. This changes llvm to
have three division instructions: signed, unsigned, floating point. The
bytecode and assembler are bacwards compatible, however.
llvm-svn: 31195 
							
						 
						
							2006-10-26 06:15:43 +00:00  
				
					
						
							
							
								 
						
							
								5b979ae531 
								
							 
						 
						
							
							
								
								Fix 2006-10-25-AddSetCC. A relational operator (like setlt) can never  
							
							... 
							
							
							
							produce an EQ property.
llvm-svn: 31193 
							
						 
						
							2006-10-26 02:35:18 +00:00  
				
					
						
							
							
								 
						
							
								9d17c82a26 
								
							 
						 
						
							
							
								
								Resurrect r1.25.  
							
							... 
							
							
							
							Fix and comment the "or", "and" and "xor" transformations.
llvm-svn: 31189 
							
						 
						
							2006-10-25 23:48:24 +00:00  
				
					
						
							
							
								 
						
							
								53f53db919 
								
							 
						 
						
							
							
								
								hide symbols properly  
							
							... 
							
							
							
							llvm-svn: 31184 
							
						 
						
							2006-10-25 21:14:31 +00:00  
				
					
						
							
							
								 
						
							
								dc7b9beb20 
								
							 
						 
						
							
							
								
								Revert back to r1.21, which was the last revision of predsimplify that  
							
							... 
							
							
							
							passes llvm-gcc bootstrap.
llvm-svn: 31146 
							
						 
						
							2006-10-24 00:36:21 +00:00  
				
					
						
							
							
								 
						
							
								53b4158448 
								
							 
						 
						
							
							
								
								Remove the Backwards operation. Resolving now works at the time when a  
							
							... 
							
							
							
							property is added by running through the list of uses of the value and
adding resolved properties to the property set.
llvm-svn: 31126 
							
						 
						
							2006-10-23 01:56:02 +00:00  
				
					
						
							
							
								 
						
							
								6f5c30fcec 
								
							 
						 
						
							
							
								
								Fix similar missing optimization opportunity in XOR.  
							
							... 
							
							
							
							llvm-svn: 31123 
							
						 
						
							2006-10-22 22:22:58 +00:00  
				
					
						
							
							
								 
						
							
								af2b0571d0 
								
							 
						 
						
							
							
								
								Whoops! Add missing NULL check.  
							
							... 
							
							
							
							llvm-svn: 31121 
							
						 
						
							2006-10-22 21:38:24 +00:00  
				
					
						
							
							
								 
						
							
								2c734f3fc1 
								
							 
						 
						
							
							
								
								Handle "if ((x|y) != 0)" for ints like we do for bools. Fixes missed  
							
							... 
							
							
							
							optimization opportunity pointed out by Chris Lattner.
llvm-svn: 31118 
							
						 
						
							2006-10-22 21:36:41 +00:00  
				
					
						
							
							
								 
						
							
								f345008339 
								
							 
						 
						
							
							
								
								AllocaInst can't return a null pointer. Fixes missed optimization  
							
							... 
							
							
							
							opportunity pointed out by Andrew Lewycky.
llvm-svn: 31115 
							
						 
						
							2006-10-22 19:53:27 +00:00  
				
					
						
							
							
								 
						
							
								77e030bca9 
								
							 
						 
						
							
							
								
								Replace custom dispatch code with two uses of InstVisitor. Improves  
							
							... 
							
							
							
							compile-time performance.
llvm-svn: 30896 
							
						 
						
							2006-10-12 02:02:44 +00:00  
				
					
						
							
							
								 
						
							
								58a910dff5 
								
							 
						 
						
							
							
								
								Simplify logic further.  
							
							... 
							
							
							
							Ensure that we copy KnownProperties before calling visitBasicBlock, else
we may leak properties into blocks where they don't belong.
llvm-svn: 30705 
							
						 
						
							2006-10-03 17:36:01 +00:00  
				
					
						
							
							
								 
						
							
								1d00f3e144 
								
							 
						 
						
							
							
								
								Simplify, now that predsimplify depends on break-crit-edges.  
							
							... 
							
							
							
							Fix SwitchInst where dest-block is the same as one of the cases.
llvm-svn: 30700 
							
						 
						
							2006-10-03 15:19:11 +00:00  
				
					
						
							
							
								 
						
							
								755f801adc 
								
							 
						 
						
							
							
								
								Move break-crit-edges before the predicate simplifier. Allows us to  
							
							... 
							
							
							
							optimize in more cases.
llvm-svn: 30699 
							
						 
						
							2006-10-03 14:52:23 +00:00  
				
					
						
							
							
								 
						
							
								6ab03f6a08 
								
							 
						 
						
							
							
								
								Eliminate ConstantBool::True and ConstantBool::False.  Instead, provide  
							
							... 
							
							
							
							ConstantBool::getTrue() and ConstantBool::getFalse().
llvm-svn: 30665 
							
						 
						
							2006-09-28 23:35:22 +00:00  
				
					
						
							
							
								 
						
							
								059c79264f 
								
							 
						 
						
							
							
								
								Style changes only. Remove dead code, fix a comment.  
							
							... 
							
							
							
							llvm-svn: 30588 
							
						 
						
							2006-09-23 15:13:08 +00:00  
				
					
						
							
							
								 
						
							
								fde9c308b2 
								
							 
						 
						
							
							
								
								Don't rewrite ConstantExpr::get.  
							
							... 
							
							
							
							llvm-svn: 30552 
							
						 
						
							2006-09-21 01:05:35 +00:00  
				
					
						
							
							
								 
						
							
								d74c55f483 
								
							 
						 
						
							
							
								
								Once we're down to "setcc type constant1, constant2", at least come up  
							
							... 
							
							
							
							with the right answer.
llvm-svn: 30550 
							
						 
						
							2006-09-20 23:02:24 +00:00  
				
					
						
							
							
								 
						
							
								cfff1c3f86 
								
							 
						 
						
							
							
								
								Use a total ordering to compare instructions.  
							
							... 
							
							
							
							Fixes infinite loop in resolve().
llvm-svn: 30540 
							
						 
						
							2006-09-20 17:04:01 +00:00  
				
					
						
							
							
								 
						
							
								b9c5483a93 
								
							 
						 
						
							
							
								
								Walk down the dominator tree instead of the control flow graph. That means  
							
							... 
							
							
							
							that we can't modify the CFG any more, at least not until it's possible
to update the dominator tree (PR217).
llvm-svn: 30469 
							
						 
						
							2006-09-18 21:09:35 +00:00  
				
					
						
							
							
								 
						
							
								12efffc96b 
								
							 
						 
						
							
							
								
								Add some more consistency checks.  
							
							... 
							
							
							
							llvm-svn: 30305 
							
						 
						
							2006-09-13 19:32:53 +00:00  
				
					
						
							
							
								 
						
							
								51ce8d6b46 
								
							 
						 
						
							
							
								
								Fix unionSets so that it can merge correctly.  
							
							... 
							
							
							
							llvm-svn: 30304 
							
						 
						
							2006-09-13 19:24:01 +00:00  
				
					
						
							
							
								 
						
							
								3a4dc7b489 
								
							 
						 
						
							
							
								
								Erase dead instructions.  
							
							... 
							
							
							
							llvm-svn: 30298 
							
						 
						
							2006-09-13 18:55:37 +00:00  
				
					
						
							
							
								 
						
							
								e94f42a740 
								
							 
						 
						
							
							
								
								Skip the linear search if the answer is already known.  
							
							... 
							
							
							
							llvm-svn: 30251 
							
						 
						
							2006-09-11 17:23:34 +00:00  
				
					
						
							
							
								 
						
							
								9a22d7b60f 
								
							 
						 
						
							
							
								
								Replace EquivalenceClasses with a custom-built data structure. Many common  
							
							... 
							
							
							
							operations (like findProperties) should be faster, at the expense of
unionSets being slower in cases that are rare in practise.
Don't erase a dead Instruction. This fixes a memory corruption issue.
llvm-svn: 30235 
							
						 
						
							2006-09-10 02:27:07 +00:00  
				
					
						
							
							
								 
						
							
								8e5599354a 
								
							 
						 
						
							
							
								
								Improve handling of SelectInst.  
							
							... 
							
							
							
							Reorder operations to remove duplicated work.
Fix to leave floating-point types out of the optimization.
Add tests to predsimplify.ll for SwitchInst and SelectInst handling.
llvm-svn: 30055 
							
						 
						
							2006-09-02 19:40:38 +00:00  
				
					
						
							
							
								 
						
							
								f6f529d008 
								
							 
						 
						
							
							
								
								Don't confuse canonicalize and lookup. Fixes predsimplify.reg4.ll. Also  
							
							... 
							
							
							
							corrects missing optimization opportunity removing cases from a switch.
llvm-svn: 30009 
							
						 
						
							2006-09-01 03:26:35 +00:00  
				
					
						
							
							
								 
						
							
								08674ab707 
								
							 
						 
						
							
							
								
								Properties where both Values weren't in the union (as being equal to  
							
							... 
							
							
							
							another Value) weren't being found by findProperties.
This fixes predsimplify.ll test6, a missed optimization opportunity.
llvm-svn: 29991 
							
						 
						
							2006-08-31 00:39:16 +00:00  
				
					
						
							
							
								 
						
							
								5f8f9af65c 
								
							 
						 
						
							
							
								
								Move to using the EquivalenceClass ADT. Removes SynSets.  
							
							... 
							
							
							
							If a branch's condition has become a ConstantBool, simplify it immediately.
Removing the edge saves work and exposes up more optimization opportunities
in the pass.
Add support for SelectInst.
llvm-svn: 29970 
							
						 
						
							2006-08-30 02:46:48 +00:00  
				
					
						
							
							
								 
						
							
								b2e8ae1700 
								
							 
						 
						
							
							
								
								Add PredicateSimplifier pass. Collapses equal variables into one form  
							
							... 
							
							
							
							and simplifies expressions. This implements the optimization described
in PR807.
llvm-svn: 29947 
							
						 
						
							2006-08-28 22:44:55 +00:00