1bfd121321 
								
							 
						 
						
							
							
								
								Make Transforms to be 4.3 warnings-clean  
							
							... 
							
							
							
							llvm-svn: 47371 
							
						 
						
							2008-02-20 11:26:25 +00:00  
				
					
						
							
							
								 
						
							
								b4724dbda2 
								
							 
						 
						
							
							
								
								When performing return slot optimization, remember to inform memdep when we're removing the memcpy.  
							
							... 
							
							
							
							llvm-svn: 47364 
							
						 
						
							2008-02-20 08:23:02 +00:00  
				
					
						
							
							
								 
						
							
								e92e303582 
								
							 
						 
						
							
							
								
								Refactor this method a bit, and correct a test that was completely wrong but happened to work out anyways. :-)  
							
							... 
							
							
							
							llvm-svn: 47321 
							
						 
						
							2008-02-19 07:07:51 +00:00  
				
					
						
							
							
								 
						
							
								f7b7ba9c5a 
								
							 
						 
						
							
							
								
								isa+cast -> dyncast.  
							
							... 
							
							
							
							llvm-svn: 47320 
							
						 
						
							2008-02-19 06:53:20 +00:00  
				
					
						
							
							
								 
						
							
								c130e3afc4 
								
							 
						 
						
							
							
								
								simplify  this code again, try 2 :)  
							
							... 
							
							
							
							llvm-svn: 47319 
							
						 
						
							2008-02-19 06:52:38 +00:00  
				
					
						
							
							
								 
						
							
								e71d6e37b2 
								
							 
						 
						
							
							
								
								Fix a comment.  
							
							... 
							
							
							
							llvm-svn: 47318 
							
						 
						
							2008-02-19 06:51:23 +00:00  
				
					
						
							
							
								 
						
							
								806cbde53b 
								
							 
						 
						
							
							
								
								Major improvements to yesterday's return slot optimization.  Remove some unneccessary constraints,  
							
							... 
							
							
							
							and add some others that should have been in from the first place.  Document the whole thing better.
llvm-svn: 47315 
							
						 
						
							2008-02-19 06:35:43 +00:00  
				
					
						
							
							
								 
						
							
								c0c3cd8e27 
								
							 
						 
						
							
							
								
								Factor the profitability check for return slot optimization out into a static function.  
							
							... 
							
							
							
							At some point in the future, this check will become smarter.
llvm-svn: 47310 
							
						 
						
							2008-02-19 03:27:34 +00:00  
				
					
						
							
							
								 
						
							
								551b8eeb5c 
								
							 
						 
						
							
							
								
								An sret parameter is required to be the first parameter, so there's no need to loop  
							
							... 
							
							
							
							over all the parameters of the callee looking for it.
llvm-svn: 47309 
							
						 
						
							2008-02-19 03:15:29 +00:00  
				
					
						
							
							
								 
						
							
								336824f102 
								
							 
						 
						
							
							
								
								Cleanup some of my patches from yesterday.  Refactor the check for which xform  
							
							... 
							
							
							
							to apply to a memcpy into processInstruction.  Also, fix a bug in the check due to
missing braces.
llvm-svn: 47307 
							
						 
						
							2008-02-19 03:09:45 +00:00  
				
					
						
							
							
								 
						
							
								ffca8e99b2 
								
							 
						 
						
							
							
								
								Fix Transforms/GVN/memcpy.ll, which Chris broke in r47275 by reordering the branches.  memcpy's are a kind of CallInst.  
							
							... 
							
							
							
							llvm-svn: 47305 
							
						 
						
							2008-02-19 02:53:23 +00:00  
				
					
						
							
							
								 
						
							
								0af5601028 
								
							 
						 
						
							
							
								
								minor code simplification, no functionality change.  
							
							... 
							
							
							
							llvm-svn: 47275 
							
						 
						
							2008-02-18 17:47:29 +00:00  
				
					
						
							
							
								 
						
							
								3549553262 
								
							 
						 
						
							
							
								
								Add support to GVN for performing sret return slot optimization.  This means that, if an sret function tail calls  
							
							... 
							
							
							
							another sret function, it should pass its own sret parameter to the tail callee, allowing it to fill in the correct
return value.  llvm-gcc does not emit this by default.  Instead, it allocates space in the caller for the sret of
the tail call and then uses memcpy to copy the result into the caller's sret parameter.  This optimization detects
and optimizes that case.
llvm-svn: 47265 
							
						 
						
							2008-02-18 09:24:53 +00:00  
				
					
						
							
							
								 
						
							
								7c77e2bc65 
								
							 
						 
						
							
							
								
								Fix PR2032. Inform the alias analysis of changes to the underlying program.  
							
							... 
							
							
							
							llvm-svn: 47111 
							
						 
						
							2008-02-14 07:11:24 +00:00  
				
					
						
							
							
								 
						
							
								00dba4f734 
								
							 
						 
						
							
							
								
								Re-apply the patch to improve the optimizations of memcpy's, with several  
							
							... 
							
							
							
							bugs fixed.  This now passes PPC bootstrap.
llvm-svn: 47026 
							
						 
						
							2008-02-12 21:15:18 +00:00  
				
					
						
							
							
								 
						
							
								716c10c01e 
								
							 
						 
						
							
							
								
								Fix for bug 1996: optimize out loads of undef.  This code basically just  
							
							... 
							
							
							
							checks for a malloc/alloca immediately followed by a load.
llvm-svn: 47006 
							
						 
						
							2008-02-12 12:08:14 +00:00  
				
					
						
							
							
								 
						
							
								c676a0329c 
								
							 
						 
						
							
							
								
								Temporarily reverting:  
							
							... 
							
							
							
							http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080128/057882.html 
This is causing a miscompilation on PPC G5 and just now seeing it on iMac x86-64.
llvm-svn: 46822 
						
							2008-02-06 20:03:07 +00:00  
				
					
						
							
							
								 
						
							
								c4a7c41869 
								
							 
						 
						
							
							
								
								Allow GVN to hack on memcpy's, making them open to further optimization.  
							
							... 
							
							
							
							llvm-svn: 46693 
							
						 
						
							2008-02-04 02:59:58 +00:00  
				
					
						
							
							
								 
						
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
				
					
						
							
							
								 
						
							
								086b2c4537 
								
							 
						 
						
							
							
								
								Fix several cache coherence bugs in MemDep/GVN that were found.  Also add some (disabled) debugging code  
							
							... 
							
							
							
							to make such problems easier to diagnose in the future, written by Duncan Sands.
llvm-svn: 44695 
							
						 
						
							2007-12-08 01:37:09 +00:00  
				
					
						
							
							
								 
						
							
								68b6f50938 
								
							 
						 
						
							
							
								
								Integrate the readonly/readnone logic more deeply  
							
							... 
							
							
							
							into alias analysis.  This meant updating the API
which now has versions of the getModRefBehavior,
doesNotAccessMemory and onlyReadsMemory methods
which take a callsite parameter.  These should be
used unless the callsite is not known, since in
general they can do a better job than the versions
that take a function.  Also, users should no longer
call the version of getModRefBehavior that takes
both a function and a callsite.  To reduce the
chance of misuse it is now protected.
llvm-svn: 44487 
							
						 
						
							2007-12-01 07:51:45 +00:00  
				
					
						
							
							
								 
						
							
								ffa55112e0 
								
							 
						 
						
							
							
								
								Fix a miscompilation in spiff on PPC.  
							
							... 
							
							
							
							llvm-svn: 44437 
							
						 
						
							2007-11-29 18:02:22 +00:00  
				
					
						
							
							
								 
						
							
								9f0b6e9d46 
								
							 
						 
						
							
							
								
								Fix another bug that was causing siod to fail.  
							
							... 
							
							
							
							llvm-svn: 44325 
							
						 
						
							2007-11-26 07:17:19 +00:00  
				
					
						
							
							
								 
						
							
								4f833c7610 
								
							 
						 
						
							
							
								
								Allow GVN to eliminate read-only function calls when it can detect that they are redundant.  
							
							... 
							
							
							
							llvm-svn: 44323 
							
						 
						
							2007-11-26 02:26:36 +00:00  
				
					
						
							
							
								 
						
							
								09b83ba6f1 
								
							 
						 
						
							
							
								
								Allow GVN to eliminate redundant calls to functions without side effects.  
							
							... 
							
							
							
							llvm-svn: 43147 
							
						 
						
							2007-10-18 19:39:33 +00:00  
				
					
						
							
							
								 
						
							
								46da2a6262 
								
							 
						 
						
							
							
								
								Add partial caching of non-local memory dependence queries.  This provides a modest  
							
							... 
							
							
							
							speedup for GVN.
llvm-svn: 42185 
							
						 
						
							2007-09-21 03:53:52 +00:00  
				
					
						
							
							
								 
						
							
								0625bd6472 
								
							 
						 
						
							
							
								
								Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfo  
							
							... 
							
							
							
							Add a new DenseMapInfo::isEqual method to allow clients to redefine
the equality predicate used when probing the hash table.
llvm-svn: 42042 
							
						 
						
							2007-09-17 18:34:04 +00:00  
				
					
						
							
							
								 
						
							
								4cd516b50b 
								
							 
						 
						
							
							
								
								Be more careful when constant-folding PHI nodes.  
							
							... 
							
							
							
							llvm-svn: 41998 
							
						 
						
							2007-09-16 08:04:16 +00:00  
				
					
						
							
							
								 
						
							
								f5023a7a84 
								
							 
						 
						
							
							
								
								Factor out some code into a helper function.  
							
							... 
							
							
							
							llvm-svn: 41131 
							
						 
						
							2007-08-16 22:51:56 +00:00  
				
					
						
							
							
								 
						
							
								221a43604e 
								
							 
						 
						
							
							
								
								Add some more comments to GVN.  
							
							... 
							
							
							
							llvm-svn: 41129 
							
						 
						
							2007-08-16 22:02:55 +00:00  
				
					
						
							
							
								 
						
							
								bc271a02fd 
								
							 
						 
						
							
							
								
								Eliminate PHI nodes with constant values during normal GVN processing, even when  
							
							... 
							
							
							
							they're not related to eliminating a load.
llvm-svn: 41081 
							
						 
						
							2007-08-14 18:33:27 +00:00  
				
					
						
							
							
								 
						
							
								398602a6eb 
								
							 
						 
						
							
							
								
								Be more aggressive in pruning unnecessary PHI nodes when doing PHI construction.  
							
							... 
							
							
							
							llvm-svn: 41080 
							
						 
						
							2007-08-14 18:16:29 +00:00  
				
					
						
							
							
								 
						
							
								676070d503 
								
							 
						 
						
							
							
								
								Make GVN iterative.  
							
							... 
							
							
							
							llvm-svn: 41078 
							
						 
						
							2007-08-14 18:04:11 +00:00  
				
					
						
							
							
								 
						
							
								a7b220f23a 
								
							 
						 
						
							
							
								
								Fix a case where GVN was failing to return true when it had, in fact, modified  
							
							... 
							
							
							
							the function.
llvm-svn: 41077 
							
						 
						
							2007-08-14 17:59:48 +00:00  
				
					
						
							
							
								 
						
							
								9b1cc8cac0 
								
							 
						 
						
							
							
								
								Make NonLocal and None const in the right way. :-)  
							
							... 
							
							
							
							llvm-svn: 40961 
							
						 
						
							2007-08-09 04:42:44 +00:00  
				
					
						
							
							
								 
						
							
								b84d3b1c92 
								
							 
						 
						
							
							
								
								Change the None and NonLocal markers in memdep to be const.  
							
							... 
							
							
							
							llvm-svn: 40946 
							
						 
						
							2007-08-08 21:39:39 +00:00  
				
					
						
							
							
								 
						
							
								0cc1a76283 
								
							 
						 
						
							
							
								
								Don't insert nearly as many redundant phi nodes.  
							
							... 
							
							
							
							llvm-svn: 40909 
							
						 
						
							2007-08-07 23:12:31 +00:00  
				
					
						
							
							
								 
						
							
								2d19aae4ca 
								
							 
						 
						
							
							
								
								Fix a subtle miscompilation.  This allows 197.parser to be compiled correctly.  
							
							... 
							
							
							
							llvm-svn: 40791 
							
						 
						
							2007-08-03 19:59:35 +00:00  
				
					
						
							
							
								 
						
							
								774761c503 
								
							 
						 
						
							
							
								
								Fix a subtle iterator invalidation bug in a recursive algorithm.  
							
							... 
							
							
							
							llvm-svn: 40776 
							
						 
						
							2007-08-03 11:03:26 +00:00  
				
					
						
							
							
								 
						
							
								9699a6ea03 
								
							 
						 
						
							
							
								
								Fix 80 col. violations.  
							
							... 
							
							
							
							llvm-svn: 40750 
							
						 
						
							2007-08-02 18:16:06 +00:00  
				
					
						
							
							
								 
						
							
								0ac1fc8ac1 
								
							 
						 
						
							
							
								
								Fix a bug that was causing several miscompilations on SPEC.  
							
							... 
							
							
							
							llvm-svn: 40746 
							
						 
						
							2007-08-02 17:56:05 +00:00  
				
					
						
							
							
								 
						
							
								c321e5e272 
								
							 
						 
						
							
							
								
								Make non-local memdep not be recursive, and fix a bug on 403.gcc that this exposed.  
							
							... 
							
							
							
							llvm-svn: 40692 
							
						 
						
							2007-08-01 22:01:54 +00:00  
				
					
						
							
							
								 
						
							
								10ffa860d8 
								
							 
						 
						
							
							
								
								Don't let the memory allocator outsmart GVN. ;-)  
							
							... 
							
							
							
							llvm-svn: 40655 
							
						 
						
							2007-07-31 23:27:13 +00:00  
				
					
						
							
							
								 
						
							
								2464f4f048 
								
							 
						 
						
							
							
								
								Fix a failure I accidentally caused in my last commit by mishandling the  
							
							... 
							
							
							
							removal of redundant phis.
llvm-svn: 40650 
							
						 
						
							2007-07-31 20:18:28 +00:00  
				
					
						
							
							
								 
						
							
								d58fa6b09f 
								
							 
						 
						
							
							
								
								Fix a misoptimization in aha.  
							
							... 
							
							
							
							llvm-svn: 40642 
							
						 
						
							2007-07-31 17:43:14 +00:00  
				
					
						
							
							
								 
						
							
								850138157e 
								
							 
						 
						
							
							
								
								Avoid potential iterator invalidation problems.  
							
							... 
							
							
							
							llvm-svn: 40607 
							
						 
						
							2007-07-30 21:26:39 +00:00  
				
					
						
							
							
								 
						
							
								212d5c27f6 
								
							 
						 
						
							
							
								
								Use more caching when computing non-local dependence.  This makes bzip2 not  
							
							... 
							
							
							
							use up the entire 32-bit address space.
llvm-svn: 40596 
							
						 
						
							2007-07-30 17:29:24 +00:00  
				
					
						
							
							
								 
						
							
								d66e285b2e 
								
							 
						 
						
							
							
								
								Fix a bug caused by indiscriminantly asking for the dominators of a predecessor.  
							
							... 
							
							
							
							llvm-svn: 40595 
							
						 
						
							2007-07-30 16:57:08 +00:00  
				
					
						
							
							
								 
						
							
								dbf23ccaa0 
								
							 
						 
						
							
							
								
								Fix a couple more bugs in the phi construction by pulling in code that does  
							
							... 
							
							
							
							almost the same things from LCSSA.
llvm-svn: 40540 
							
						 
						
							2007-07-26 18:26:51 +00:00  
				
					
						
							
							
								 
						
							
								3b8cc30a61 
								
							 
						 
						
							
							
								
								Fix what is _hopefully_ the last corner case for loops.  
							
							... 
							
							
							
							llvm-svn: 40503 
							
						 
						
							2007-07-25 23:54:42 +00:00