717d7edd3e 
								
							 
						 
						
							
							
								
								Migrate LLVM and Clang to use the new makeArrayRef(...) functions where previously explicit non-default constructors were used.  
							
							... 
							
							
							
							Mostly mechanical with some manual reformatting.
llvm-svn: 135390 
							
						 
						
							2011-07-18 12:00:32 +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  
				
					
						
							
							
								 
						
							
								57aa636794 
								
							 
						 
						
							
							
								
								Convert InsertValueInst and ExtractValueInst APIs to use ArrayRef.  
							
							... 
							
							
							
							llvm-svn: 135040 
							
						 
						
							2011-07-13 10:26:04 +00:00  
				
					
						
							
							
								 
						
							
								3e334a42d7 
								
							 
						 
						
							
							
								
								Move onlyUsedByLifetimeMarkers to ValueTracking so that it can be used by other  
							
							... 
							
							
							
							passes as well.
llvm-svn: 133904 
							
						 
						
							2011-06-27 04:20:45 +00:00  
				
					
						
							
							
								 
						
							
								b362884ca9 
								
							 
						 
						
							
							
								
								Renamed llvm.x86.sse42.crc32 intrinsics; crc64 doesn't exist.  
							
							... 
							
							
							
							crc32.[8|16|32] have been renamed to .crc32.32.[8|16|32] and
crc64.[8|16|32] have been renamed to .crc32.64.[8|64].
llvm-svn: 132163 
							
						 
						
							2011-05-26 23:13:19 +00:00  
				
					
						
							
							
								 
						
							
								83791ced7b 
								
							 
						 
						
							
							
								
								Teach valuetracking that byval arguments with a specified alignment are  
							
							... 
							
							
							
							aligned.
Teach memcpyopt to not give up all hope when confonted with an underaligned
memcpy feeding an overaligned byval.  If the *source* of the memcpy can be
determined to be adequeately aligned, or if it can be forced to be, we can
eliminate the memcpy.
This addresses PR9794.  We now compile the example into:
define i32 @f(%struct.p* nocapture byval align 8 %q) nounwind ssp {
entry:
  %call = call i32 @g(%struct.p* byval align 8 %q) nounwind
  ret i32 %call
}
in both x86-64 and x86-32 mode.  We still don't get a tailcall though,
because tailcalls apparently can't handle byval.
llvm-svn: 131884 
							
						 
						
							2011-05-23 00:03:39 +00:00  
				
					
						
							
							
								 
						
							
								2a746bfe36 
								
							 
						 
						
							
							
								
								Teach ValueTracking about x86 crc32 intrinsics.  
							
							... 
							
							
							
							llvm-svn: 131861 
							
						 
						
							2011-05-22 18:25:30 +00:00  
				
					
						
							
							
								 
						
							
								0ab5e2cded 
								
							 
						 
						
							
							
								
								Fix a ton of comment typos found by codespell.  Patch by  
							
							... 
							
							
							
							Luis Felipe Strano Moraes!
llvm-svn: 129558 
							
						 
						
							2011-04-15 05:18:47 +00:00  
				
					
						
							
							
								 
						
							
								8baa2c7ad9 
								
							 
						 
						
							
							
								
								Don't assume something which might be a constant expression is an instruction.  
							
							... 
							
							
							
							Based on PR9429, but no testcase because I can't figure out how to trigger it
anymore given other changes to the relevant code.
llvm-svn: 128781 
							
						 
						
							2011-04-02 22:11:56 +00:00  
				
					
						
							
							
								 
						
							
								f0469af63e 
								
							 
						 
						
							
							
								
								Fix INT_MIN gotcha pointed out by Eli Friedman.  
							
							... 
							
							
							
							llvm-svn: 128028 
							
						 
						
							2011-03-21 21:40:32 +00:00  
				
					
						
							
							
								 
						
							
								5acc751b6f 
								
							 
						 
						
							
							
								
								Teach ComputeMaskedBits about sub nsw.  
							
							... 
							
							
							
							llvm-svn: 127548 
							
						 
						
							2011-03-12 17:18:11 +00:00  
				
					
						
							
							
								 
						
							
								391a946fa9 
								
							 
						 
						
							
							
								
								ComputeMaskedBits: sub falls through to add, and sub doesn't have the same overflow semantics as add.  
							
							... 
							
							
							
							Should fix the selfhost failures that started with r127463.
llvm-svn: 127465 
							
						 
						
							2011-03-11 14:46:49 +00:00  
				
					
						
							
							
								 
						
							
								cc79973856 
								
							 
						 
						
							
							
								
								Teach ComputeMaskedBits about nsw on add. I don't think there's anything we can  
							
							... 
							
							
							
							do with nuw here, but sub and mul should be given similar treatment.
Fixes PR9343 #15 !
llvm-svn: 127463 
							
						 
						
							2011-03-11 09:00:19 +00:00  
				
					
						
							
							
								 
						
							
								7dc3d47c34 
								
							 
						 
						
							
							
								
								Fix PR9331.  Simplified version of a patch by Jakub Staszak.  
							
							... 
							
							
							
							llvm-svn: 127243 
							
						 
						
							2011-03-08 12:39:03 +00:00  
				
					
						
							
							
								 
						
							
								e467979d0a 
								
							 
						 
						
							
							
								
								Add more analysis of the sign bit of an srem instruction. If the LHS is negative  
							
							... 
							
							
							
							then the result could go either way. If it's provably positive then so is the
srem. Fixes PR9343 #7 !
llvm-svn: 127146 
							
						 
						
							2011-03-07 01:50:10 +00:00  
				
					
						
							
							
								 
						
							
								afe4a3062d 
								
							 
						 
						
							
							
								
								Fix comment.  
							
							... 
							
							
							
							llvm-svn: 126645 
							
						 
						
							2011-02-28 09:18:11 +00:00  
				
					
						
							
							
								 
						
							
								66f4f22f7b 
								
							 
						 
						
							
							
								
								srem doesn't actually have the same resulting sign as its numerator, you could  
							
							... 
							
							
							
							also have a zero when numerator = denominator. Reverts parts of r126635 and
r126637.
llvm-svn: 126644 
							
						 
						
							2011-02-28 09:17:39 +00:00  
				
					
						
							
							
								 
						
							
								c9aab8567b 
								
							 
						 
						
							
							
								
								Teach value tracking to make use of flags in more situations.  
							
							... 
							
							
							
							llvm-svn: 126642 
							
						 
						
							2011-02-28 08:02:21 +00:00  
				
					
						
							
							
								 
						
							
								29dbbd12c1 
								
							 
						 
						
							
							
								
								Teach ValueTracking to look at the dividend when determining the sign bit of an  
							
							... 
							
							
							
							srem instruction.
llvm-svn: 126637 
							
						 
						
							2011-02-28 06:52:12 +00:00  
				
					
						
							
							
								 
						
							
								acf6b0776a 
								
							 
						 
						
							
							
								
								Stores of null pointers should turn into memset, we weren't recognizing  
							
							... 
							
							
							
							them as splat values.
llvm-svn: 126041 
							
						 
						
							2011-02-19 19:35:49 +00:00  
				
					
						
							
							
								 
						
							
								ac0b62c277 
								
							 
						 
						
							
							
								
								Tolerate degenerate phi nodes that can occur in the middle of optimization  
							
							... 
							
							
							
							passes. Fixes PR9112. Patch by Jakub Staszak!
llvm-svn: 125319 
							
						 
						
							2011-02-10 23:54:10 +00:00  
				
					
						
							
							
								 
						
							
								4b397fcdc2 
								
							 
						 
						
							
							
								
								Add a m_SignBit pattern for convenience.  
							
							... 
							
							
							
							llvm-svn: 124656 
							
						 
						
							2011-02-01 08:50:33 +00:00  
				
					
						
							
							
								 
						
							
								2e9e4f1be3 
								
							 
						 
						
							
							
								
								Fix typo: should have been testing that X was odd, not V.  
							
							... 
							
							
							
							llvm-svn: 124533 
							
						 
						
							2011-01-29 13:27:00 +00:00  
				
					
						
							
							
								 
						
							
								8a33733228 
								
							 
						 
						
							
							
								
								APInt has a method for determining whether a number is a power of 2  
							
							... 
							
							
							
							which is more efficient than countPopulation - use it.
llvm-svn: 124283 
							
						 
						
							2011-01-26 08:44:16 +00:00  
				
					
						
							
							
								 
						
							
								9e9d5b25e2 
								
							 
						 
						
							
							
								
								In which I discover that zero+zero is zero, d'oh!  
							
							... 
							
							
							
							llvm-svn: 124188 
							
						 
						
							2011-01-25 15:14:15 +00:00  
				
					
						
							
							
								 
						
							
								fced7620f5 
								
							 
						 
						
							
							
								
								See if this fixes llvm-gcc bootstrap.  
							
							... 
							
							
							
							llvm-svn: 124184 
							
						 
						
							2011-01-25 12:15:09 +00:00  
				
					
						
							
							
								 
						
							
								d395108394 
								
							 
						 
						
							
							
								
								According to my auto-simplifier the most common missed simplifications in  
							
							... 
							
							
							
							optimized code are:
  (non-negative number)+(power-of-two) != 0 -> true
and
  (x | 1) != 0 -> true
Instcombine knows about the second one of course, but only does it if X|1
has only one use.  These fire thousands of times in the testsuite.
llvm-svn: 124183 
							
						 
						
							2011-01-25 09:38:29 +00:00  
				
					
						
							
							
								 
						
							
								0f124e1987 
								
							 
						 
						
							
							
								
								Give GetUnderlyingObject a TargetData, to keep it in sync  
							
							... 
							
							
							
							with BasicAA's DecomposeGEPExpression, which recently began
using a TargetData. This fixes PR8968, though the testcase
is awkward to reduce.
Also, update several off GetUnderlyingObject's users
which happen to have a TargetData handy to pass it in.
llvm-svn: 124134 
							
						 
						
							2011-01-24 18:53:32 +00:00  
				
					
						
							
							
								 
						
							
								c86e67e110 
								
							 
						 
						
							
							
								
								fix an off-by-one bug that caused a crash analyzing  
							
							... 
							
							
							
							ashr's with huge shift amounts, PR8896
llvm-svn: 122814 
							
						 
						
							2011-01-04 18:19:15 +00:00  
				
					
						
							
							
								 
						
							
								9cb1035f94 
								
							 
						 
						
							
							
								
								move isBytewiseValue out to ValueTracking.h/cpp  
							
							... 
							
							
							
							llvm-svn: 122565 
							
						 
						
							2010-12-26 20:15:01 +00:00  
				
					
						
							
							
								 
						
							
								7aa18bf46a 
								
							 
						 
						
							
							
								
								Add vector versions of some existing scalar transforms to aid codegen in matching psign & pblend operations to the IR produced by clang/gcc for their C idioms.  
							
							... 
							
							
							
							llvm-svn: 122105 
							
						 
						
							2010-12-17 23:12:19 +00:00  
				
					
						
							
							
								 
						
							
								05b18f143f 
								
							 
						 
						
							
							
								
								Reapply r121886, and also update DecomposeGEPExpression to keep  
							
							... 
							
							
							
							it in sync.
llvm-svn: 121895 
							
						 
						
							2010-12-15 20:49:55 +00:00  
				
					
						
							
							
								 
						
							
								d02b65982e 
								
							 
						 
						
							
							
								
								Revert r121886. DecomposeGEPExpression needs to be kept  
							
							... 
							
							
							
							in sync.
llvm-svn: 121892 
							
						 
						
							2010-12-15 20:39:25 +00:00  
				
					
						
							
							
								 
						
							
								949ab7889c 
								
							 
						 
						
							
							
								
								Strengthen GetUnderlyingObject using InstructionSimplify.  
							
							... 
							
							
							
							While LLVM's main design is that analysis code shouldn't
go out of its way to understand code which hasn't been
InstCombined, analysis utility routines like this can
find themselves being called in the middle of transform
passes when instcombine hasn't had a chance to run.
llvm-svn: 121886 
							
						 
						
							2010-12-15 20:10:26 +00:00  
				
					
						
							
							
								 
						
							
								a4fcd2418d 
								
							 
						 
						
							
							
								
								Move Value::getUnderlyingObject to be a standalone  
							
							... 
							
							
							
							function so that it can live in Analysis instead of
VMCore.
llvm-svn: 121885 
							
						 
						
							2010-12-15 20:02:24 +00:00  
				
					
						
							
							
								 
						
							
								583abbc4df 
								
							 
						 
						
							
							
								
								PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and  
							
							... 
							
							
							
							zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method
trunc(), to be const and to return a new value instead of modifying the
object in place.
llvm-svn: 121120 
							
						 
						
							2010-12-07 08:25:19 +00:00  
				
					
						
							
							
								 
						
							
								25a5e4ca1f 
								
							 
						 
						
							
							
								
								PR5207: Rename overloaded APInt methods set(), clear(), flip() to  
							
							... 
							
							
							
							setAllBits(), setBit(unsigned), etc.
llvm-svn: 120564 
							
						 
						
							2010-12-01 08:53:58 +00:00  
				
					
						
							
							
								 
						
							
								e28618de59 
								
							 
						 
						
							
							
								
								move GetPointerBaseWithConstantOffset out of GVN into ValueTracking.h  
							
							... 
							
							
							
							llvm-svn: 120476 
							
						 
						
							2010-11-30 22:25:26 +00:00  
				
					
						
							
							
								 
						
							
								15084f085d 
								
							 
						 
						
							
							
								
								PR5207: Make APInt::set(), APInt::clear() and APInt::flip() return void.  
							
							... 
							
							
							
							llvm-svn: 120413 
							
						 
						
							2010-11-30 09:02:01 +00:00  
				
					
						
							
							
								 
						
							
								72d283c826 
								
							 
						 
						
							
							
								
								fix PR8063, a crash in globalopt in the malloc analysis code.  
							
							... 
							
							
							
							llvm-svn: 113109 
							
						 
						
							2010-09-05 17:20:46 +00:00  
				
					
						
							
							
								 
						
							
								9f7500f57b 
								
							 
						 
						
							
							
								
								move gep decomposition out of ValueTracking into BasicAA.  The form of  
							
							... 
							
							
							
							decomposition that it is doing is very basicaa specific and is only used
by basicaa.
Now with less tree breakingness.
llvm-svn: 111433 
							
						 
						
							2010-08-18 22:07:29 +00:00  
				
					
						
							
							
								 
						
							
								fbeeb130d8 
								
							 
						 
						
							
							
								
								Revert r111375, "move gep decomposition out of ValueTracking into BasicAA.  The  
							
							... 
							
							
							
							form of", it doesn't pass tests.
llvm-svn: 111385 
							
						 
						
							2010-08-18 18:43:08 +00:00  
				
					
						
							
							
								 
						
							
								54fe883203 
								
							 
						 
						
							
							
								
								move gep decomposition out of ValueTracking into BasicAA.  The form of  
							
							... 
							
							
							
							decomposition that it is doing is very basicaa specific and is only used
by basicaa.
llvm-svn: 111375 
							
						 
						
							2010-08-18 18:22:17 +00:00  
				
					
						
							
							
								 
						
							
								a33edcb56c 
								
							 
						 
						
							
							
								
								fix PR7589: In brief:  
							
							... 
							
							
							
							gep P, (zext x) != gep P, (sext x)
DecomposeGEPExpression was getting this wrong, confusing
basicaa.
llvm-svn: 111352 
							
						 
						
							2010-08-18 04:28:19 +00:00  
				
					
						
							
							
								 
						
							
								1abbde3103 
								
							 
						 
						
							
							
								
								use ArgOperand accessors  
							
							... 
							
							
							
							llvm-svn: 106697 
							
						 
						
							2010-06-23 23:38:07 +00:00  
				
					
						
							
							
								 
						
							
								7258dcd77f 
								
							 
						 
						
							
							
								
								Revert 101465, it broke internal OpenGL testing.  
							
							... 
							
							
							
							Probably the best way to know that all getOperand() calls have been handled
is to replace that API instead of updating.
llvm-svn: 101579 
							
						 
						
							2010-04-16 23:37:20 +00:00  
				
					
						
							
							
								 
						
							
								f375520f7b 
								
							 
						 
						
							
							
								
								reapply r101434  
							
							... 
							
							
							
							with a fix for self-hosting
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101465 
							
						 
						
							2010-04-16 15:33:14 +00:00  
				
					
						
							
							
								 
						
							
								403e9694f9 
								
							 
						 
						
							
							
								
								back out r101423 and r101397, they break llvm-gcc self-host on darwin10  
							
							... 
							
							
							
							llvm-svn: 101434 
							
						 
						
							2010-04-16 01:16:20 +00:00  
				
					
						
							
							
								 
						
							
								33ae80bff7 
								
							 
						 
						
							
							
								
								reapply r101364, which has been backed out in r101368  
							
							... 
							
							
							
							with a fix
rotate CallInst operands, i.e. move callee to the back
of the operand array
the motivation for this patch are laid out in my mail to llvm-commits:
more efficient access to operands and callee, faster callgraph-construction,
smaller compiler binary
llvm-svn: 101397 
							
						 
						
							2010-04-15 20:51:13 +00:00  
				
					
						
							
							
								 
						
							
								9fd00c7d25 
								
							 
						 
						
							
							
								
								back out r101364, as it trips the linux nightlybot on some clang C++ tests  
							
							... 
							
							
							
							llvm-svn: 101368 
							
						 
						
							2010-04-15 12:46:56 +00:00