Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						0b6cb50738 
					 
					
						
						
							
							Factor checked library call optimization into a common helper class and use it  
						
						... 
						
						
						
						to unify the almost identical code in CodeGenPrepare and InstCombineCalls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98338  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-12 09:27:41 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						7fa30b8e5d 
					 
					
						
						
							
							stpcpy is so similar to strcpy, it doesn't deserve a complete copy of the __strcpy_chk -> strcpy code.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98284  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-11 20:45:13 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						19888ca8b4 
					 
					
						
						
							
							Lower stpcpy_chk when possible.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98274  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-11 19:24:34 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						bd97376200 
					 
					
						
						
							
							Add strncpy libcall creator.  Use it when it should be used.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98219  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-11 01:25:07 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						687fed3530 
					 
					
						
						
							
							Re-commit 97860 with fix. getMallocAllocatedType may return null.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98000  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-08 22:54:36 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						7b323a34fa 
					 
					
						
						
							
							Let the fallthrough handle whether or not we've changed anything  
						
						... 
						
						
						
						before we try to optimize.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97876  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-06 10:59:25 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						27ceaa13f8 
					 
					
						
						
							
							Migrate _chk call lowering from SimplifyLibCalls to InstCombine. Stub  
						
						... 
						
						
						
						out the remainder of the calls that we should lower in some way and
move the tests to the new correct directory. Fix up tests that are now
optimized more than they were before by -instcombine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97875  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-06 10:50:38 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						75f0d6953a 
					 
					
						
						
							
							Temporarily revert:  
						
						... 
						
						
						
						Log:
Transform @llvm.objectsize to integer if the argument is a result of malloc of known size.
Modified:
   llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
   llvm/trunk/test/Transforms/InstCombine/objsize.ll
It appears to be causing swb and nightly test failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97866  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-06 03:11:35 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						fc8ccfedbb 
					 
					
						
						
							
							Transform @llvm.objectsize to integer if the argument is a result of malloc of known size.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97860  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-06 01:01:42 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						a862326bc7 
					 
					
						
						
							
							Instcombine should turn llvm.objectsize of a alloca with static size to an integer.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97827  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-05 20:47:23 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						f79d6246e6 
					 
					
						
						
							
							Add missing break for Intrinsic::objectsize case. It was falling through to the following Intrinsic::bswap code. I have no idea why it wasn't breaking stuff.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97774  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-05 01:22:47 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						6e5dfd4bf5 
					 
					
						
						
							
							Instcombine constant folding can normalize gep with negative index to index with large offset. When instcombine objsize checking transformation sees these geps where the offset seemingly point out of bound, it should just return "i don't know" rather than asserting.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96825  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-22 23:34:00 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						1df9859c40 
					 
					
						
						
							
							There are two ways of checking for a given type, for example isa<PointerType>(T)  
						
						... 
						
						
						
						and T->isPointerTy().  Convert most instances of the first form to the second form.
Requested by Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-16 11:11:14 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						b0bc6c361d 
					 
					
						
						
							
							Uniformize the names of type predicates: rather than having isFloatTy and  
						
						... 
						
						
						
						isInteger, we now have isFloatTy and isIntegerTy.  Requested by Chris!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96223  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-15 16:12:20 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						77ffe3b31e 
					 
					
						
						
							
							Fix a problem where we had bitcasted operands that gave us  
						
						... 
						
						
						
						odd offsets since the bitcasted pointer size and the offset pointer
size are going to be different types for the GEP vs base object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96134  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-13 23:38:01 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						dfdddd8ed6 
					 
					
						
						
							
							Make sure that ConstantExpr offsets also aren't off of extern  
						
						... 
						
						
						
						symbols.
Thanks to Duncan Sands for the testcase!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95877  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-11 17:44:04 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						26d0e892e3 
					 
					
						
						
							
							Add ConstantExpr handling to Intrinsic::objectsize lowering.  
						
						... 
						
						
						
						Update testcase accordingly now that we can optimize another
section.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95846  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-11 01:48:54 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						415326b4ed 
					 
					
						
						
							
							Move Intrinsic::objectsize lowering back to InstCombineCalls and  
						
						... 
						
						
						
						enable constant 0 offset lowering.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95691  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-09 21:24:27 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						724bea90b0 
					 
					
						
						
							
							Remove this code for now. I have a better idea and will rewrite with  
						
						... 
						
						
						
						that in mind.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95402  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-05 19:04:06 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						e7b97471f8 
					 
					
						
						
							
							Temporarily revert this since it appears to have caused a build  
						
						... 
						
						
						
						failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95294  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-04 06:41:27 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						ea4b6dfd8f 
					 
					
						
						
							
							Rework constant expr and array handling for objectsize instcombining.  
						
						... 
						
						
						
						Fix bugs where we would compute out of bounds as in bounds, and where
we couldn't know that the linker could override the size of an array.
Add a few new testcases, change existing testcase to use a private
global array instead of extern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95283  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-04 02:55:34 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						ec5ef6d8b0 
					 
					
						
						
							
							If we're dealing with a zero-length array, don't lower to any  
						
						... 
						
						
						
						particular size, we just don't know what the length is yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95266  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-03 23:56:07 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						0c6a8f9eda 
					 
					
						
						
							
							Recommit this, looks like it wasn't the cause.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95165  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-03 00:21:58 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						9f34dd305b 
					 
					
						
						
							
							Hopefully temporarily revert this.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95154  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-02 23:01:31 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						8334f068c4 
					 
					
						
						
							
							Reformat my last patch slightly.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95147  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-02 22:29:26 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						a6a089cd24 
					 
					
						
						
							
							Re-add strcmp and known size object size checking optimization.  
						
						... 
						
						
						
						Passed bootstrap and nightly test run here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95145  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-02 22:10:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d569561835 
					 
					
						
						
							
							fix rdar://7590304, a miscompilation of objc apps on arm.  The caller  
						
						... 
						
						
						
						of objc message send was getting marked arm_apcscc, but the prototype
isn't.  This is fine at runtime because objcmsgsend is implemented in
assembly.  Only turn a mismatched caller and callee into 'unreachable'
if the callee is a definition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94986  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-01 18:11:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						830f3f205d 
					 
					
						
						
							
							fix rdar://7590304, an infinite loop in instcombine.  In the invoke  
						
						... 
						
						
						
						case, instcombine can't zap the invoke for fear of changing the CFG.
However, we have to do something to prevent the next iteration of
instcombine from inserting another store -> undef before the invoke
thereby getting into infinite iteration between dead store elim and
store insertion.
Just zap the callee to null, which will prevent the next iteration
from doing anything.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94985  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-01 18:04:58 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						36664bfc7a 
					 
					
						
						
							
							Revert my last couple of patches. They appear to have broken bison.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94841  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-29 21:16:24 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						949124ce0f 
					 
					
						
						
							
							Add constant support to object size handling and remove default  
						
						... 
						
						
						
						lowering. We'll either figure it out, or not and be lowered by
SelectionDAGBuild.
Add test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94775  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-29 01:09:57 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						4d1f58861d 
					 
					
						
						
							
							Remove unnecessary dyn_cast and add a comment.  Part of a WIP.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93026  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-08 21:37:11 +00:00 
						 
				 
			
				
					
						
							
							
								Eric Christopher 
							
						 
					 
					
						
						
							
						
						130063207d 
					 
					
						
						
							
							Move the object size intrinsic optimization to inst-combine and make  
						
						... 
						
						
						
						it work for any integer size return type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92853  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-06 20:04:44 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						8c65f6e71c 
					 
					
						
						
							
							Move remaining stuff to the isInteger predicate.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92771  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 21:05:54 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						753a2b464d 
					 
					
						
						
							
							split call handling out to InstCombineCalls.cpp  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92707  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 07:32:13 +00:00