040dd82f44 
								
							 
						 
						
							
							
								
								Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to use  
							
							... 
							
							
							
							ArrayRef.
llvm-svn: 135761 
							
						 
						
							2011-07-22 08:16:57 +00:00  
				
					
						
							
							
								 
						
							
								ed8db7d9df 
								
							 
						 
						
							
							
								
								Convert ConstantExpr::getGetElementPtr and  
							
							... 
							
							
							
							ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.
llvm-svn: 135673 
							
						 
						
							2011-07-21 14:31:17 +00:00  
				
					
						
							
							
								 
						
							
								229907cd11 
								
							 
						 
						
							
							
								
								land David Blaikie's patch to de-constify Type, with a few tweaks.  
							
							... 
							
							
							
							llvm-svn: 135375 
							
						 
						
							2011-07-18 04:54:35 +00:00  
				
					
						
							
							
								 
						
							
								a7606b993c 
								
							 
						 
						
							
							
								
								Silence compiler warnings.  
							
							... 
							
							
							
							llvm-svn: 135358 
							
						 
						
							2011-07-16 22:26:27 +00:00  
				
					
						
							
							
								 
						
							
								244e2c3e82 
								
							 
						 
						
							
							
								
								Fix SCEVEXpander to handle arbitrary phi expansion. Includes two  
							
							... 
							
							
							
							related bug fixes and corresponding assertions for uninitialized data
and missing NULL check. Test cases will be included with the new LFTR.
llvm-svn: 135333 
							
						 
						
							2011-07-16 00:59:39 +00:00  
				
					
						
							
							
								 
						
							
								c3239d3965 
								
							 
						 
						
							
							
								
								Preserve debug loc.  
							
							... 
							
							
							
							llvm-svn: 134441 
							
						 
						
							2011-07-05 21:48:22 +00:00  
				
					
						
							
							
								 
						
							
								154d78a661 
								
							 
						 
						
							
							
								
								Cleanup. Fix a stupid variable name.  
							
							... 
							
							
							
							llvm-svn: 133995 
							
						 
						
							2011-06-28 05:41:52 +00:00  
				
					
						
							
							
								 
						
							
								411daa5e81 
								
							 
						 
						
							
							
								
								SCEVExpander: give new insts a name that identifies the reponsible pass.  
							
							... 
							
							
							
							llvm-svn: 133992 
							
						 
						
							2011-06-28 05:07:32 +00:00  
				
					
						
							
							
								 
						
							
								ccf8dbf885 
								
							 
						 
						
							
							
								
								New binops need debug loc.  
							
							... 
							
							
							
							llvm-svn: 133642 
							
						 
						
							2011-06-22 20:56:56 +00:00  
				
					
						
							
							
								 
						
							
								52131344a2 
								
							 
						 
						
							
							
								
								Remove PHINode::reserveOperandSpace(). Instead, add a parameter to  
							
							... 
							
							
							
							PHINode::Create() giving the (known or expected) number of operands.
llvm-svn: 128537 
							
						 
						
							2011-03-30 11:28:46 +00:00  
				
					
						
							
							
								 
						
							
								e0938d8a87 
								
							 
						 
						
							
							
								
								(Almost) always call reserveOperandSpace() on newly created PHINodes.  
							
							... 
							
							
							
							llvm-svn: 128535 
							
						 
						
							2011-03-30 11:19:20 +00:00  
				
					
						
							
							
								 
						
							
								8b55b736b1 
								
							 
						 
						
							
							
								
								Added SCEV::NoWrapFlags to manage unsigned, signed, and self wrap  
							
							... 
							
							
							
							properties.
Added the self-wrap flag for SCEV::AddRecExpr.
A slew of temporary FIXMEs indicate the intention of the no-self-wrap flag
without changing behavior in this revision.
llvm-svn: 127590 
							
						 
						
							2011-03-14 16:50:06 +00:00  
				
					
						
							
							
								 
						
							
								aa036eedb8 
								
							 
						 
						
							
							
								
								When decling to reuse existing expressions that involve casts, ignore  
							
							... 
							
							
							
							bitcasts, which are really no-ops here. This fixes slowdowns on
MultiSource/Applications/aha and others.
llvm-svn: 127031 
							
						 
						
							2011-03-04 20:46:46 +00:00  
				
					
						
							
							
								 
						
							
								7290868a1b 
								
							 
						 
						
							
							
								
								Don't re-use existing addrec expansions if they contain casts.  
							
							... 
							
							
							
							This fixes PR9259.
llvm-svn: 126812 
							
						 
						
							2011-03-02 01:34:10 +00:00  
				
					
						
							
							
								 
						
							
								8ea83d81e0 
								
							 
						 
						
							
							
								
								Introduce memoization for ScalarEvolution dominates and properlyDominates  
							
							... 
							
							
							
							queries, and SCEVExpander getRelevantLoop queries.
llvm-svn: 119595 
							
						 
						
							2010-11-18 00:34:22 +00:00  
				
					
						
							
							
								 
						
							
								20d9ce21ef 
								
							 
						 
						
							
							
								
								Move SCEV::dominates and properlyDominates to ScalarEvolution.  
							
							... 
							
							
							
							llvm-svn: 119570 
							
						 
						
							2010-11-17 21:41:58 +00:00  
				
					
						
							
							
								 
						
							
								afd6db9932 
								
							 
						 
						
							
							
								
								Move SCEV::isLoopInvariant and hasComputableLoopEvolution to be member  
							
							... 
							
							
							
							functions of ScalarEvolution, in preparation for memoization and
other optimizations.
llvm-svn: 119562 
							
						 
						
							2010-11-17 21:23:15 +00:00  
				
					
						
							
							
								 
						
							
								cd83870faf 
								
							 
						 
						
							
							
								
								Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variable  
							
							... 
							
							
							
							it inserted rather than using LoopInfo::getCanonicalInductionVariable to
rediscover it, since that doesn't work on non-canonical loops. This fixes
infinite recurrsion on such loops; PR7562.
llvm-svn: 109419 
							
						 
						
							2010-07-26 18:28:14 +00:00  
				
					
						
							
							
								 
						
							
								31158756e4 
								
							 
						 
						
							
							
								
								Simplify this code; LoopInfo::getCanonicalInductionVariable will only  
							
							... 
							
							
							
							find integer induction variables.
llvm-svn: 108853 
							
						 
						
							2010-07-20 16:46:58 +00:00  
				
					
						
							
							
								 
						
							
								4fd92434f1 
								
							 
						 
						
							
							
								
								Make getOrInsertCanonicalInductionVariable guarantee that its  
							
							... 
							
							
							
							result is a PHINode*.
llvm-svn: 108852 
							
						 
						
							2010-07-20 16:44:52 +00:00  
				
					
						
							
							
								 
						
							
								fbbdfcaea7 
								
							 
						 
						
							
							
								
								Fix the order that SCEVExpander considers add operands in so that  
							
							... 
							
							
							
							it doesn't miss an opportunity to form a GEP, regardless of the
relative loop depths of the operands. This fixes rdar://8197217.
llvm-svn: 108475 
							
						 
						
							2010-07-15 23:38:13 +00:00  
				
					
						
							
							
								 
						
							
								8e66a42784 
								
							 
						 
						
							
							
								
								remove useless cast and fix typos in comment  
							
							... 
							
							
							
							llvm-svn: 107989 
							
						 
						
							2010-07-09 16:42:04 +00:00  
				
					
						
							
							
								 
						
							
								3b740e9085 
								
							 
						 
						
							
							
								
								cache result of operator*  
							
							... 
							
							
							
							llvm-svn: 107988 
							
						 
						
							2010-07-09 16:39:02 +00:00  
				
					
						
							
							
								 
						
							
								e82532a1c5 
								
							 
						 
						
							
							
								
								cache result of operator*  
							
							... 
							
							
							
							llvm-svn: 107976 
							
						 
						
							2010-07-09 15:40:10 +00:00  
				
					
						
							
							
								 
						
							
								37f145c55b 
								
							 
						 
						
							
							
								
								Simplify.  
							
							... 
							
							
							
							llvm-svn: 107248 
							
						 
						
							2010-06-30 06:09:46 +00:00  
				
					
						
							
							
								 
						
							
								dd41bba517 
								
							 
						 
						
							
							
								
								Use A.append(...) instead of A.insert(A.end(), ...) when A is a  
							
							... 
							
							
							
							SmallVector, and other SmallVector simplifications.
llvm-svn: 106452 
							
						 
						
							2010-06-21 19:47:52 +00:00  
				
					
						
							
							
								 
						
							
								c515ab1eb2 
								
							 
						 
						
							
							
								
								Restore a call to rememberInstruction which was accidentally dropped  
							
							... 
							
							
							
							in refactoring.
llvm-svn: 106398 
							
						 
						
							2010-06-19 22:50:35 +00:00  
				
					
						
							
							
								 
						
							
								d277246137 
								
							 
						 
						
							
							
								
								Factor out duplicated code for reusing and inserting casts into  
							
							... 
							
							
							
							a helper function.
llvm-svn: 106388 
							
						 
						
							2010-06-19 13:25:23 +00:00  
				
					
						
							
							
								 
						
							
								fd3b4e7390 
								
							 
						 
						
							
							
								
								A few more places where SCEVExpander bits need to skip over debug intrinsics  
							
							... 
							
							
							
							when iterating through instructions. Yet more work for rdar://7797940
llvm-svn: 106149 
							
						 
						
							2010-06-16 21:13:38 +00:00  
				
					
						
							
							
								 
						
							
								bbfb6aca92 
								
							 
						 
						
							
							
								
								LSR needs to remember inserted instructions even in postinc mode, because  
							
							... 
							
							
							
							there could be multiple subexpressions within a single expansion which
require insert point adjustment. This fixes PR7306.
llvm-svn: 105510 
							
						 
						
							2010-06-05 00:33:07 +00:00  
				
					
						
							
							
								 
						
							
								1d2ded75e2 
								
							 
						 
						
							
							
								
								Use getConstant instead of getIntegerSCEV. The two are basically the  
							
							... 
							
							
							
							same, now that getConstant has overloads consistent with ConstantInt::get.
llvm-svn: 102965 
							
						 
						
							2010-05-03 22:09:21 +00:00  
				
					
						
							
							
								 
						
							
								58b0470592 
								
							 
						 
						
							
							
								
								When checking whether the special handling for an addrec increment which  
							
							... 
							
							
							
							doesn't dominate the header is needed, don't check whether the increment
expression has computable loop evolution. While the operands of an
addrec are required to be loop-invariant, they're not required to 
dominate any part of the loop. This fixes PR6914.
llvm-svn: 102389 
							
						 
						
							2010-04-26 21:46:36 +00:00  
				
					
						
							
							
								 
						
							
								b29cda9b3c 
								
							 
						 
						
							
							
								
								Fix a bunch of namespace polution.  
							
							... 
							
							
							
							llvm-svn: 101376 
							
						 
						
							2010-04-15 17:08:50 +00:00  
				
					
						
							
							
								 
						
							
								3295a6e5bc 
								
							 
						 
						
							
							
								
								When emitting code for an add, don't force a SCEVUnknown wrapper around  
							
							... 
							
							
							
							a hoisted intermediate result if the intermediate result isn't an
Instruction.
llvm-svn: 100884 
							
						 
						
							2010-04-09 19:14:31 +00:00  
				
					
						
							
							
								 
						
							
								394b624215 
								
							 
						 
						
							
							
								
								Add a comment.  
							
							... 
							
							
							
							llvm-svn: 100874 
							
						 
						
							2010-04-09 18:20:03 +00:00  
				
					
						
							
							
								 
						
							
								d006ab90dd 
								
							 
						 
						
							
							
								
								Generalize IVUsers to track arbitrary expressions rather than expressions  
							
							... 
							
							
							
							explicitly split into stride-and-offset pairs. Also, add the
ability to track multiple post-increment loops on the same expression.
This refines the concept of "normalizing" SCEV expressions used for
to post-increment uses, and introduces a dedicated utility routine for
normalizing and denormalizing expressions.
This fixes the expansion of expressions which are post-increment users
of more than one loop at a time. More broadly, this takes LSR another
step closer to being able to reason about more than one loop at a time.
llvm-svn: 100699 
							
						 
						
							2010-04-07 22:27:08 +00:00  
				
					
						
							
							
								 
						
							
								dcddd5701c 
								
							 
						 
						
							
							
								
								Don't back past debug info intrinsics; SCEVExpander's strategy  
							
							... 
							
							
							
							for ignoring debug info intrinsics everywhere else is to advance
past them, and it needs to be consistent.
llvm-svn: 99332 
							
						 
						
							2010-03-23 21:53:22 +00:00  
				
					
						
							
							
								 
						
							
								89d4e3c3fd 
								
							 
						 
						
							
							
								
								Fix more places to more thoroughly ignore debug intrinsics. This fixes  
							
							... 
							
							
							
							use-before-def errors in SCEVExpander-produced code in sqlite3 when debug
info with optimization is enabled, though the testcases for this are
dependent on use-list order.
llvm-svn: 99001 
							
						 
						
							2010-03-19 21:51:03 +00:00  
				
					
						
							
							
								 
						
							
								0052449e1a 
								
							 
						 
						
							
							
								
								Reapply r98755 with a thinko which miscompiled gengtype fixed.  
							
							... 
							
							
							
							llvm-svn: 98793 
							
						 
						
							2010-03-18 01:17:13 +00:00  
				
					
						
							
							
								 
						
							
								d2abecaeea 
								
							 
						 
						
							
							
								
								Revert 98755, which may be causing trouble.  
							
							... 
							
							
							
							llvm-svn: 98762 
							
						 
						
							2010-03-17 19:54:53 +00:00  
				
					
						
							
							
								 
						
							
								5c9b0e1a6e 
								
							 
						 
						
							
							
								
								Change SCEVNAryExpr's operand array from a SmallVector to a plain  
							
							... 
							
							
							
							pointer and length, and allocate the arrays in ScalarEvolution's
BumpPtrAllocator, so that they get released when their owning
SCEV gets released. SCEVs are immutable, so they don't need to worry
about operand array resizing. This fixes a memory leak reported
in PR6637.
llvm-svn: 98755 
							
						 
						
							2010-03-17 18:51:01 +00:00  
				
					
						
							
							
								 
						
							
								ace75dff75 
								
							 
						 
						
							
							
								
								Another place where debug info affected codegen.  
							
							... 
							
							
							
							llvm-svn: 98026 
							
						 
						
							2010-03-09 01:08:11 +00:00  
				
					
						
							
							
								 
						
							
								066b8ea590 
								
							 
						 
						
							
							
								
								Fix another case where LSR was affected by debug info.  
							
							... 
							
							
							
							llvm-svn: 97865 
							
						 
						
							2010-03-06 02:45:26 +00:00  
				
					
						
							
							
								 
						
							
								f5cc1cdc65 
								
							 
						 
						
							
							
								
								Fix a case where LSR is sensitive to debug info.  
							
							... 
							
							
							
							llvm-svn: 97830 
							
						 
						
							2010-03-05 21:12:40 +00:00  
				
					
						
							
							
								 
						
							
								29707de4fe 
								
							 
						 
						
							
							
								
								Make SCEVExpander and LSR more aggressive about hoisting expressions out  
							
							... 
							
							
							
							of loops.
llvm-svn: 97642 
							
						 
						
							2010-03-03 05:29:13 +00:00  
				
					
						
							
							
								 
						
							
								2850b41412 
								
							 
						 
						
							
							
								
								Revert r97580; that's not the right way to fix this.  
							
							... 
							
							
							
							llvm-svn: 97639 
							
						 
						
							2010-03-03 04:36:42 +00:00  
				
					
						
							
							
								 
						
							
								d55f574589 
								
							 
						 
						
							
							
								
								When expanding an expression such as (A + B + C + D), sort the operands  
							
							... 
							
							
							
							by loop depth and emit loop-invariant subexpressions outside of loops.
This speeds up MultiSource/Applications/viterbi and others.
llvm-svn: 97580 
							
						 
						
							2010-03-02 19:32:21 +00:00  
				
					
						
							
							
								 
						
							
								52f5563973 
								
							 
						 
						
							
							
								
								Non-affine post-inc SCEV expansions have more code which must be  
							
							... 
							
							
							
							emitted after the increment. Make sure the insert position
reflects this. This fixes PR6453.
llvm-svn: 97537 
							
						 
						
							2010-03-02 01:59:21 +00:00  
				
					
						
							
							
								 
						
							
								8b0a419eb1 
								
							 
						 
						
							
							
								
								Spelling fixes.  
							
							... 
							
							
							
							llvm-svn: 97453 
							
						 
						
							2010-03-01 17:49:51 +00:00  
				
					
						
							
							
								 
						
							
								c70e994364 
								
							 
						 
						
							
							
								
								Fix SCEVExpander's existing PHI reuse checking to recognize the  
							
							... 
							
							
							
							case where there are loop-invariant instructions somehow left
inside the loop, and in a position where they won't dominate
the IV increment position.
llvm-svn: 96448 
							
						 
						
							2010-02-17 02:39:31 +00:00