Devang Patel 
							
						 
					 
					
						
						
							
						
						a8992b3e72 
					 
					
						
						
							
							There is no need to force DebugLoc on a PHI at this point.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131427  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-05-16 22:05:03 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						227dfdb3c4 
					 
					
						
						
							
							Preserve debug info for unused zero extended boolean argument.  
						
						... 
						
						
						
						Radar 9422775.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131422  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-05-16 21:24:05 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						10fcfb53fd 
					 
					
						
						
							
							SimplifyCFG: Use ComputeMaskedBits to prune dead cases from switch instructions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131345  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-05-14 15:57:25 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						a922ba7edc 
					 
					
						
						
							
							Set debug location for new PHI nodes created in exit block.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130894  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-05-04 23:58:22 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						67352b3ce7 
					 
					
						
						
							
							Scanning entire basic block may be too expensive in terms of compile time. Instead, just use whatever location info first non-phi instruction has.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130729  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-05-02 21:57:00 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						40348e8d1f 
					 
					
						
						
							
							Assing line number info to new PHIs created by SSA updater.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130551  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-29 22:28:59 +00:00 
						 
				 
			
				
					
						
							
							
								Peter Collingbourne 
							
						 
					 
					
						
						
							
						
						57808b3da0 
					 
					
						
						
							
							SimplifyCFG: Expose phi node folding cost threshold as command line parameter  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130528  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-29 18:47:38 +00:00 
						 
				 
			
				
					
						
							
							
								Peter Collingbourne 
							
						 
					 
					
						
						
							
						
						f15907fead 
					 
					
						
						
							
							SimplifyCFG: Add CostRemaining parameter to DominatesMergePoint  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130527  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-29 18:47:31 +00:00 
						 
				 
			
				
					
						
							
							
								Peter Collingbourne 
							
						 
					 
					
						
						
							
						
						8a70192b51 
					 
					
						
						
							
							SimplifyCFG: Add Trunc, ZExt and SExt to the list of cheap instructions for phi node folding  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130526  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-29 18:47:25 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						81ad03c020 
					 
					
						
						
							
							Remove DbgDeclare only if all uses are converted.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130431  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-28 20:32:02 +00:00 
						 
				 
			
				
					
						
							
							
								Jay Foad 
							
						 
					 
					
						
						
							
						
						ddcdcc8863 
					 
					
						
						
							
							Remove unused STL header includes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130068  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-23 19:53:52 +00:00 
						 
				 
			
				
					
						
							
							
								Jay Foad 
							
						 
					 
					
						
						
							
						
						ec9186bcf9 
					 
					
						
						
							
							PR9214: Convert Metadata API to use ArrayRef.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129932  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-21 19:59:31 +00:00 
						 
				 
			
				
					
						
							
							
								Jay Foad 
							
						 
					 
					
						
						
							
						
						1a0390253b 
					 
					
						
						
							
							Trivial simplification.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129759  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-19 15:23:29 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7a2bdde0a0 
					 
					
						
						
							
							Fix a ton of comment typos found by codespell.  Patch by  
						
						... 
						
						
						
						Luis Felipe Strano Moraes!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129558  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-15 05:18:47 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3c6e746b5f 
					 
					
						
						
							
							rework FoldBranchToCommonDest to exit earlier when there is a bonus  
						
						... 
						
						
						
						instruction around, reducing work.
Greatly simplify handling of debug instructions.  There is no need to
build up a vector of them and then move them into the one predecessor
if we're processing a block.  Instead just rescan the block and *copy*
them into the pred.  If a block gets merged into multiple preds, this
will retain more debug info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129502  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-14 02:44:53 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c8fbc34869 
					 
					
						
						
							
							comment cleanup, use moveBefore instead of removeFromParent+insertBefore.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129319  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-11 23:24:57 +00:00 
						 
				 
			
				
					
						
							
							
								Jay Foad 
							
						 
					 
					
						
						
							
						
						562b84b3ae 
					 
					
						
						
							
							Don't include Operator.h from InstrTypes.h.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129271  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-11 09:35:34 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						60d490cdc7 
					 
					
						
						
							
							Do not let debug info interfer with branch folding.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129114  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-07 23:11:25 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						949666ea16 
					 
					
						
						
							
							While hoisting common code from if/else, hoist debug info intrinsics if they match.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129078  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-07 17:27:36 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						ae6c95b58e 
					 
					
						
						
							
							Simplify. isIdenticalToWhenDefined() checks opcode.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129041  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-07 00:30:15 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						d418194036 
					 
					
						
						
							
							While folding branch to a common destination into a predecessor, copy dbg values also.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129035  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-06 22:37:20 +00:00 
						 
				 
			
				
					
						
							
							
								Eli Friedman 
							
						 
					 
					
						
						
							
						
						eeb7f4ce2d 
					 
					
						
						
							
							Attempt to fix breakage from r128782 reported by Francois Pichet on  
						
						... 
						
						
						
						llvm-commits.  (Not sure why it only breaks on Windows; maybe it has
something to do with the iterator representation...)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128802  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-04 00:37:38 +00:00 
						 
				 
			
				
					
						
							
							
								Eli Friedman 
							
						 
					 
					
						
						
							
						
						71ad2c9eda 
					 
					
						
						
							
							PR9446: RecursivelyDeleteTriviallyDeadInstructions can delete the instruction  
						
						... 
						
						
						
						after the given instruction; make sure to handle that case correctly.
(It's difficult to trigger; the included testcase involves a dead 
block, but I don't think that's a requirement.) 
While I'm here, get rid of the unnecessary warning about
SimplifyInstructionsInBlock, since it should work correctly as far as I know.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128782  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-04-02 22:45:17 +00:00 
						 
				 
			
				
					
						
							
							
								Jay Foad 
							
						 
					 
					
						
						
							
						
						3ecfc861b4 
					 
					
						
						
							
							Remove PHINode::reserveOperandSpace(). Instead, add a parameter to  
						
						... 
						
						
						
						PHINode::Create() giving the (known or expected) number of operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128537  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-30 11:28:46 +00:00 
						 
				 
			
				
					
						
							
							
								Jay Foad 
							
						 
					 
					
						
						
							
						
						d8b4fb4aab 
					 
					
						
						
							
							(Almost) always call reserveOperandSpace() on newly created PHINodes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128535  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-30 11:19:20 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						b99462117e 
					 
					
						
						
							
							Simplify.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128030  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-21 22:04:45 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						36fae67831 
					 
					
						
						
							
							If an AllocaInst referred by DbgDeclareInst is used by a LoadInst then the LoadInst should also get a corresponding llvm.dbg.value intrinsic.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127924  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-18 23:45:43 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						79fcad85a4 
					 
					
						
						
							
							Remove dead code.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127923  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-18 23:33:58 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						9c5822a966 
					 
					
						
						
							
							Consider debug info intrinsics pointing to null value as dead instructions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127922  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-18 23:28:02 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						813c9a0f19 
					 
					
						
						
							
							Try to not lose variable's debug info during instcombine.  
						
						... 
						
						
						
						This is done by lowering dbg.declare intrinsic into dbg.value intrinsic.
Radar 9143931.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127834  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-17 22:18:16 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						5ee20680c7 
					 
					
						
						
							
							Refactor into a separate utility function.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127832  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-17 21:58:19 +00:00 
						 
				 
			
				
					
						
							
							
								Cameron Zwarich 
							
						 
					 
					
						
						
							
						
						6e51c6ad9d 
					 
					
						
						
							
							Clean up something noticed by Fritz.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127684  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-15 18:42:33 +00:00 
						 
				 
			
				
					
						
							
							
								Cameron Zwarich 
							
						 
					 
					
						
						
							
						
						838b97edfa 
					 
					
						
						
							
							Do not add PHIs with no users when creating LCSSA form. Patch by Andrew Clinton.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127674  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-15 07:41:25 +00:00 
						 
				 
			
				
					
						
							
							
								Eli Friedman 
							
						 
					 
					
						
						
							
						
						b1a6eab655 
					 
					
						
						
							
							PR9450: Make switch optimization in SimplifyCFG not dependent on the ordering  
						
						... 
						
						
						
						of pointers in an std::map.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127650  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-15 02:23:35 +00:00 
						 
				 
			
				
					
						
							
							
								Eli Friedman 
							
						 
					 
					
						
						
							
						
						2adc5b6a17 
					 
					
						
						
							
							PR9420; an instruction before an unreachable is guaranteed not to have any  
						
						... 
						
						
						
						reachable uses, but there still might be uses in dead blocks.  Use the
standard solution of replacing all the uses with undef.  This is
a rare case because it's very sensitive to phase ordering in SimplifyCFG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127299  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-09 00:48:33 +00:00 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						2bc2a08b1b 
					 
					
						
						
							
							DenseMap<uintptr_t,...> doesn't allow all values as keys.  
						
						... 
						
						
						
						Avoid colliding with the sentinels, hopefully unbreaking
llvm-gcc-x86_64-linux-selfhost.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126982  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-03-04 02:48:56 +00:00 
						 
				 
			
				
					
						
							
							
								Frits van Bommel 
							
						 
					 
					
						
						
							
						
						f7b2a9d7df 
					 
					
						
						
							
							Teach SimplifyCFG that (switch (select cond, X, Y)) is better expressed as a branch.  
						
						... 
						
						
						
						Based on a patch by Alistair Lynn.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126647  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-28 09:44:07 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						278be783b5 
					 
					
						
						
							
							Revert "SimplifyCFG: GEPs with just one non-constant index are also cheap."  
						
						... 
						
						
						
						Yes, there are other types than i8* and GEPs on them can produce an add+multiply.
We don't consider that cheap enough to be speculatively executed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126481  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-25 10:33:33 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						9ae59e3444 
					 
					
						
						
							
							SimplifyCFG: GEPs with just one non-constant index are also cheap.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126452  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-24 23:26:09 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						9b61c550c2 
					 
					
						
						
							
							SimplifyCFG: GEPs with constant indices are cheap enough to be executed unconditionally.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126445  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-24 22:46:11 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						afd0d0e8a7 
					 
					
						
						
							
							Do not use DIFactory. Use DIBuilder.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126398  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-24 18:49:55 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						2cfbf018a9 
					 
					
						
						
							
							If the phi node was used by an unreachable instruction that ends up using  
						
						... 
						
						
						
						itself without going via a phi node then we could return false here in
spite of making a change.  Also, tweak the comment because this method
can (and always could) return true without deleting the original phi node.
For example, if the phi node was used by a read-only invoke instruction
which is used by another phi node phi2 which is only used by and only uses
the invoke, then phi2 would be deleted but not the invoke instruction and
not the original phi node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126129  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-21 17:32:05 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						b4098ba03d 
					 
					
						
						
							
							Simplify RecursivelyDeleteDeadPHINode.  The only functionality change  
						
						... 
						
						
						
						should be that if the phi is used by a side-effect free instruction with
no uses then the phi and the instruction now get zapped (checked by the
unittest).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126124  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-21 16:27:36 +00:00 
						 
				 
			
				
					
						
							
							
								Nick Lewycky 
							
						 
					 
					
						
						
							
						
						eff5e69c82 
					 
					
						
						
							
							Make RecursivelyDeleteDeadPHINode delete a phi node that has no users and add a  
						
						... 
						
						
						
						test for that. With this change, test/CodeGen/X86/codegen-dce.ll no longer finds
any instructions to DCE, so delete the test.
Also renamed J and JP to I and IP in RecursivelyDeleteDeadPHINode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126088  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-20 18:05:56 +00:00 
						 
				 
			
				
					
						
							
							
								Nick Lewycky 
							
						 
					 
					
						
						
							
						
						1a4021a2be 
					 
					
						
						
							
							Teach RecursivelyDeleteDeadPHINodes to handle multiple self-references. Patch  
						
						... 
						
						
						
						by Andrew Clinton!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126077  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-20 08:38:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f5ebfb0d28 
					 
					
						
						
							
							Don't unroll loops whose header block's address is taken.  
						
						... 
						
						
						
						This is part of a futile attempt to not "break" bizzaro
code like this:
 l1:
  printf("l1: %p\n", &&l1);
  ++x;
  if( x < 3 ) goto l1;
Previously we'd fold &&l1 to 1, which is fine per our semantics
but not helpful to the user.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125827  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-18 04:25:21 +00:00 
						 
				 
			
				
					
						
							
							
								Cameron Zwarich 
							
						 
					 
					
						
						
							
						
						4a60b932a2 
					 
					
						
						
							
							Rename 'loopsimplify' to 'loop-simplify'.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125317  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-10 23:38:10 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						33828bcb24 
					 
					
						
						
							
							SimplifyCFG: Track the number of used icmps when turning a icmp chain into a switch. If we used only one icmp, don't turn it into a switch.  
						
						... 
						
						
						
						Also prevent the switch-to-icmp transform from creating identity adds, noticed by Marius Wachtler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125056  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-07 22:37:28 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						042b27f40e 
					 
					
						
						
							
							SimplifyCFG: Also transform switches that represent a range comparison but are not sorted into sub+icmp.  
						
						... 
						
						
						
						This transforms another 1000 switches in gcc.c.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124826  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-03 22:51:41 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						56442dfdcf 
					 
					
						
						
							
							SimplifyCFG: Turn switches into sub+icmp+branch if possible.  
						
						... 
						
						
						
						This makes the job of the later optzn passes easier, allowing the vast amount of
icmp transforms to chew on it.
We transform 840 switches in gcc.c, leading to a 16k byte shrink of the resulting
binary on i386-linux.
The testcase from README.txt now compiles into
  decl  %edi
  cmpl  $3, %edi
  sbbl  %eax, %eax
  andl  $1, %eax
  ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124724  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2011-02-02 15:56:22 +00:00