Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								18e816f356 
								
							 
						 
						
							
							
								
								Switch to a very conservative heuristic for determining when loop-unswitching  
							
							 
							
							... 
							
							
							
							will be profitable.  This is mainly to remove some cases where excessive
unswitching would result in long compile times and/or huge generated code.
Once someone comes up with a better heuristic that avoids these cases, this
should be switched out.
llvm-svn: 28962 
							
						 
						
							2006-06-28 17:47:50 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0a2e11260e 
								
							 
						 
						
							
							
								
								Don't unswitch really large loops even if they are mostly filled with empty  
							
							 
							
							... 
							
							
							
							blocks.
llvm-svn: 28959 
							
						 
						
							2006-06-28 16:38:55 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								bb3ae5eb8f 
								
							 
						 
						
							
							
								
								Fix for 2006-06-27-DeadSwitchCase.ll  
							
							 
							
							... 
							
							
							
							Be more careful when updating Phi nodes after eliminating dead switch cases.  Fix
proposed by Chris.
llvm-svn: 28947 
							
						 
						
							2006-06-27 22:26:09 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								f52351e50f 
								
							 
						 
						
							
							
								
								Make LoopUnswitch able to unswitch loops with live-out values by taking advantage  
							
							 
							
							... 
							
							
							
							of LCSSA.  This results several times the number of unswitchings occurring on
tests such and timberwolfmc, unix-tbl, and ldecod.
llvm-svn: 28912 
							
						 
						
							2006-06-26 07:44:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0c4f5a655a 
								
							 
						 
						
							
							
								
								Fix Transforms/LoopUnswitch/2006-06-13-SingleEntryPHI.ll, a loop unswitch  
							
							 
							
							... 
							
							
							
							bug exposed by the recent lcssa work.
llvm-svn: 28779 
							
						 
						
							2006-06-14 04:46:17 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								fd0a3d6e5c 
								
							 
						 
						
							
							
								
								Reapply my 6/9 changes.  The bug Evan saw no longer occurs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 28759 
							
						 
						
							2006-06-12 21:49:21 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1b6e310e6f 
								
							 
						 
						
							
							
								
								Back out Owen's 6/9 changes. They broke MultiSource/Benchmarks/Prolangs-C/bison (and perhaps others).  
							
							 
							
							... 
							
							
							
							llvm-svn: 28747 
							
						 
						
							2006-06-11 09:32:57 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								b1dc1d44f8 
								
							 
						 
						
							
							
								
								Add LCSSA as a requirement for LoopUnswitch, and assert that LoopUnswitch preserves  
							
							 
							
							... 
							
							
							
							LCSSA.
llvm-svn: 28739 
							
						 
						
							2006-06-09 18:40:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								5821a6a17a 
								
							 
						 
						
							
							
								
								add the actual cost to the debug info  
							
							 
							
							... 
							
							
							
							llvm-svn: 27051 
							
						 
						
							2006-03-24 07:14:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e5521db5bc 
								
							 
						 
						
							
							
								
								Fix Regression/Transforms/LoopUnswitch/2006-02-22-UnswitchCrash.ll, which  
							
							 
							
							... 
							
							
							
							caused SPASS to fail building last night.
We can't trivially unswitch a loop if the exit block has phi nodes in it,
because we don't know which predecessor to use.
llvm-svn: 26320 
							
						 
						
							2006-02-22 23:55:00 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8a5a324dac 
								
							 
						 
						
							
							
								
								Add some comments, simplify some code, and fix a bug that caused rewriting  
							
							 
							
							... 
							
							
							
							to rewrite with the wrong value.
llvm-svn: 26311 
							
						 
						
							2006-02-22 06:37:14 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c2e3a7a4ce 
								
							 
						 
						
							
							
								
								improved support for branch folding, still not enabled.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26289 
							
						 
						
							2006-02-18 07:57:38 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								19fa8ac938 
								
							 
						 
						
							
							
								
								Implement deletion of dead blocks, currently disabled.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26285 
							
						 
						
							2006-02-18 02:42:34 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								cb853de534 
								
							 
						 
						
							
							
								
								a previous patch completely disabled trivial unswitching, this fixees it.  
							
							 
							
							... 
							
							
							
							Thanks to nate for pointing this out :)
llvm-svn: 26280 
							
						 
						
							2006-02-18 01:32:04 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								29f771ba21 
								
							 
						 
						
							
							
								
								initial trivial support for folding branches that have now-constant destinations.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26279 
							
						 
						
							2006-02-18 01:27:45 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8e44ff50b0 
								
							 
						 
						
							
							
								
								When unswitching a loop, make sure to update loop info with exit blocks in  
							
							 
							
							... 
							
							
							
							the right loop.
llvm-svn: 26277 
							
						 
						
							2006-02-18 00:55:32 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								baddba41c7 
								
							 
						 
						
							
							
								
								Fix loops where the header has an exit, fixing a loop-unswitch crash on crafty  
							
							 
							
							... 
							
							
							
							llvm-svn: 26258 
							
						 
						
							2006-02-17 06:39:56 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6fd136239b 
								
							 
						 
						
							
							
								
								start of some new simplification code, not thoroughly tested, use at your own  
							
							 
							
							... 
							
							
							
							risk :)
llvm-svn: 26248 
							
						 
						
							2006-02-17 00:31:07 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fa335f6083 
								
							 
						 
						
							
							
								
								Change SplitBlock to increment a BasicBlock::iterator, not an Instruction*.  Apparently they do different things :)  
							
							 
							
							... 
							
							
							
							This fixes a testcase that nate reduced from spass.
Also included are a couple minor code changes that don't affect the generated
code at all.
llvm-svn: 26235 
							
						 
						
							2006-02-16 19:36:22 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								55f63f1b53 
								
							 
						 
						
							
							
								
								Fix VC++ warning.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26228 
							
						 
						
							2006-02-16 04:07:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ff42e81028 
								
							 
						 
						
							
							
								
								fix a bug where we unswitched the wrong way  
							
							 
							
							... 
							
							
							
							llvm-svn: 26225 
							
						 
						
							2006-02-16 01:24:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fdff0bb43e 
								
							 
						 
						
							
							
								
								Implement trivial unswitching for switch stmts.  This allows us to trivial  
							
							 
							
							... 
							
							
							
							unswitch this loop on 2 before sweating to unswitch on 1/3.
void test4(int N, int i, int C, int*P, int*Q) {
  int j;
  for (j = 0; j < N; ++j) {
    switch (C) {                // general unswitching.
    default: P[i+j] = 0; break;
    case 1: Q[i+j] = 0; break;
    case 3: P[i+j] = Q[i+j]; break;
    case 2: break;              //  TRIVIAL UNSWITCH on C==2
    }
  }
}
llvm-svn: 26223 
							
						 
						
							2006-02-15 22:52:05 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								e5cb76d744 
								
							 
						 
						
							
							
								
								make "trivial" unswitching significantly more general.  It can now handle  
							
							 
							
							... 
							
							
							
							this for example:
  for (j = 0; j < N; ++j) {     // trivial unswitch
    if (C)
      P[i+j] = 0;
  }
turning it into the obvious code without bothering to duplicate an empty loop.
llvm-svn: 26220 
							
						 
						
							2006-02-15 22:03:36 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								65152d80ec 
								
							 
						 
						
							
							
								
								Checking the wrong value.  This caused us to emit silly code like  
							
							 
							
							... 
							
							
							
							Y = seteq bool X, true
instead of just using X :)
llvm-svn: 26215 
							
						 
						
							2006-02-15 19:05:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								01db04efb0 
								
							 
						 
						
							
							
								
								more refactoring, no functionality change.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26194 
							
						 
						
							2006-02-15 01:44:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								b0cbe7106e 
								
							 
						 
						
							
							
								
								pull some code out into a function  
							
							 
							
							... 
							
							
							
							llvm-svn: 26191 
							
						 
						
							2006-02-15 00:07:43 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								0b8ec1a132 
								
							 
						 
						
							
							
								
								Use statistics to keep track of what flavors of loops we are unswitching  
							
							 
							
							... 
							
							
							
							llvm-svn: 26157 
							
						 
						
							2006-02-14 01:01:41 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fbadd7e1ee 
								
							 
						 
						
							
							
								
								implement unswitching of loops with switch stmts and selects in them  
							
							 
							
							... 
							
							
							
							llvm-svn: 26114 
							
						 
						
							2006-02-11 00:43:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f1b151684d 
								
							 
						 
						
							
							
								
								Update PHI nodes in successors of exit blocks.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26113 
							
						 
						
							2006-02-10 23:26:14 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								fe4151efe7 
								
							 
						 
						
							
							
								
								Reform the unswitching code in terms of edge splitting, not block splitting.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26112 
							
						 
						
							2006-02-10 23:16:39 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ec6b40a093 
								
							 
						 
						
							
							
								
								Fix a case where UnswitchTrivialCondition broke critical edges with  
							
							 
							
							... 
							
							
							
							phi's in the successors
llvm-svn: 26108 
							
						 
						
							2006-02-10 19:08:15 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								6e263155a6 
								
							 
						 
						
							
							
								
								add some notes, move some code around.  Implement unswitching of loops  
							
							 
							
							... 
							
							
							
							with branches on partially invariant computations.
llvm-svn: 26104 
							
						 
						
							2006-02-10 02:30:37 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4935417a84 
								
							 
						 
						
							
							
								
								Move code around to be more logical, no functionality change.  
							
							 
							
							... 
							
							
							
							llvm-svn: 26103 
							
						 
						
							2006-02-10 02:01:22 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								3fc3148b85 
								
							 
						 
						
							
							
								
								When unswitching a trivial loop, do admit we are doing it! :)  
							
							 
							
							... 
							
							
							
							llvm-svn: 26102 
							
						 
						
							2006-02-10 01:36:35 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								ed7a67b0de 
								
							 
						 
						
							
							
								
								Implement unconditional unswitching of 'trivial' loops, those loops that contain  
							
							 
							
							... 
							
							
							
							branches in their entry block that control whether or not the loop is a noop or not.
llvm-svn: 26101 
							
						 
						
							2006-02-10 01:24:09 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								4f0e66df6a 
								
							 
						 
						
							
							
								
								Simplify control flow a bit, note that unswitch preserves canonical loop form  
							
							 
							
							... 
							
							
							
							llvm-svn: 26098 
							
						 
						
							2006-02-09 22:15:42 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								8976219850 
								
							 
						 
						
							
							
								
								Make the threshold a parameter  
							
							 
							
							... 
							
							
							
							llvm-svn: 26093 
							
						 
						
							2006-02-09 20:15:48 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								2826e0511b 
								
							 
						 
						
							
							
								
								Simplify the loop-unswitch pass, by not even trying to unswitch loops with  
							
							 
							
							... 
							
							
							
							uses of loop values outside the loop.  We need loop-closed SSA form to do
this right, or to use SSA rewriting if we really care.
llvm-svn: 26089 
							
						 
						
							2006-02-09 19:14:52 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								c597b8a55e 
								
							 
						 
						
							
							
								
								Make iostream #inclusion explicit  
							
							 
							
							... 
							
							
							
							llvm-svn: 25514 
							
						 
						
							2006-01-22 23:32:06 +00:00  
						
					 
				
					
						
							
							
								 
								Misha Brukman
							
						 
						
							 
							
							
							
							
								
							
							
								b1c9317bb4 
								
							 
						 
						
							
							
								
								Remove trailing whitespace  
							
							 
							
							... 
							
							
							
							llvm-svn: 21427 
							
						 
						
							2005-04-21 23:48:37 +00:00  
						
					 
				
					
						
							
							
								 
								Jeff Cohen
							
						 
						
							 
							
							
							
							
								
							
							
								eca0d0f2da 
								
							 
						 
						
							
							
								
								Put createLoopUnswitchPass() into proper namespace  
							
							 
							
							... 
							
							
							
							llvm-svn: 19306 
							
						 
						
							2005-01-06 05:47:18 +00:00  
						
					 
				
					
						
							
							
								 
								Alkis Evlogimenos
							
						 
						
							 
							
							
							
							
								
							
							
								a5c04ee50f 
								
							 
						 
						
							
							
								
								Fixes to make LLVM compile with vc7.1.  
							
							 
							
							... 
							
							
							
							Patch contributed by Paolo Invernizzi!
llvm-svn: 16152 
							
						 
						
							2004-09-03 18:19:51 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								7c16caa336 
								
							 
						 
						
							
							
								
								Changes For Bug 352  
							
							 
							
							... 
							
							
							
							Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137 
							
						 
						
							2004-09-01 22:55:40 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f48f777d4c 
								
							 
						 
						
							
							
								
								Initial checkin of a simple loop unswitching pass.  It still needs work,  
							
							 
							
							... 
							
							
							
							but it's a start, and seems to do it's basic job.
llvm-svn: 13068 
							
						 
						
							2004-04-19 18:07:02 +00:00