5a1acd9912 
								
							 
						 
						
							
							
								
								Move a few more APIs back to 2.5 forms.  The only remaining ones left to change back are  
							
							... 
							
							
							
							metadata related, which I'm waiting on to avoid conflicting with Devang.
llvm-svn: 77721 
							
						 
						
							2009-07-31 20:28:14 +00:00  
				
					
						
							
							
								 
						
							
								23a204d91b 
								
							 
						 
						
							
							
								
								Move getTrue() and getFalse() to 2.5-like APIs.  
							
							... 
							
							
							
							llvm-svn: 77685 
							
						 
						
							2009-07-31 17:39:07 +00:00  
				
					
						
							
							
								 
						
							
								b292b8ce70 
								
							 
						 
						
							
							
								
								Move more code back to 2.5 APIs.  
							
							... 
							
							
							
							llvm-svn: 77635 
							
						 
						
							2009-07-30 23:03:37 +00:00  
				
					
						
							
							
								 
						
							
								4056ca9568 
								
							 
						 
						
							
							
								
								Move types back to the 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77516 
							
						 
						
							2009-07-29 22:17:13 +00:00  
				
					
						
							
							
								 
						
							
								487375e9a2 
								
							 
						 
						
							
							
								
								Move ConstantExpr to 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77494 
							
						 
						
							2009-07-29 18:55:55 +00:00  
				
					
						
							
							
								 
						
							
								4aa3295a65 
								
							 
						 
						
							
							
								
								Return ConstantVector to 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77366 
							
						 
						
							2009-07-28 21:19:26 +00:00  
				
					
						
							
							
								 
						
							
								c2c7932c64 
								
							 
						 
						
							
							
								
								Change ConstantArray to 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77347 
							
						 
						
							2009-07-28 18:32:17 +00:00  
				
					
						
							
							
								 
						
							
								45308b578b 
								
							 
						 
						
							
							
								
								Move ConstantStruct back to 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77266 
							
						 
						
							2009-07-27 22:29:26 +00:00  
				
					
						
							
							
								 
						
							
								69c464dec4 
								
							 
						 
						
							
							
								
								Move ConstantFP construction back to the 2.5-ish API.  
							
							... 
							
							
							
							llvm-svn: 77247 
							
						 
						
							2009-07-27 20:59:43 +00:00  
				
					
						
							
							
								 
						
							
								edb4a70325 
								
							 
						 
						
							
							
								
								Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types.  More to come.  
							
							... 
							
							
							
							llvm-svn: 77011 
							
						 
						
							2009-07-24 23:12:02 +00:00  
				
					
						
							
							
								 
						
							
								c37bc69e91 
								
							 
						 
						
							
							
								
								Rename getConstantInt{True|False} to get{True|False} at Chris' behest.  
							
							... 
							
							
							
							llvm-svn: 76598 
							
						 
						
							2009-07-21 18:03:38 +00:00  
				
					
						
							
							
								 
						
							
								fbcc663cbf 
								
							 
						 
						
							
							
								
								llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.  
							
							... 
							
							
							
							This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").
llvm-svn: 75640 
							
						 
						
							2009-07-14 16:55:14 +00:00  
				
					
						
							
							
								 
						
							
								85f86dc058 
								
							 
						 
						
							
							
								
								Inline EvalVectorOp in order to get rid of passing-pointer-to-static-methods behavior.  
							
							... 
							
							
							
							llvm-svn: 75538 
							
						 
						
							2009-07-13 22:41:06 +00:00  
				
					
						
							
							
								 
						
							
								53a52215b5 
								
							 
						 
						
							
							
								
								Begin the painful process of tearing apart the rat'ss nest that is Constants.cpp and ConstantFold.cpp.  
							
							... 
							
							
							
							This involves temporarily hard wiring some parts to use the global context.  This isn't ideal, but it's
the only way I could figure out to make this process vaguely incremental.
llvm-svn: 75445 
							
						 
						
							2009-07-13 04:09:18 +00:00  
				
					
						
							
							
								 
						
							
								56d0659726 
								
							 
						 
						
							
							
								
								assert(0) -> LLVM_UNREACHABLE.  
							
							... 
							
							
							
							Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.
llvm-svn: 75379 
							
						 
						
							2009-07-11 20:10:48 +00:00  
				
					
						
							
							
								 
						
							
								a21d3daadc 
								
							 
						 
						
							
							
								
								Remove the vicmp and vfcmp instructions. Because we never had a release with  
							
							... 
							
							
							
							these instructions, no autoupgrade or backwards compatibility support is
provided.
llvm-svn: 74991 
							
						 
						
							2009-07-08 03:04:38 +00:00  
				
					
						
							
							
								 
						
							
								6b8320fa5b 
								
							 
						 
						
							
							
								
								Expand this test to handle more cases (remainder and shifts) of zero.  
							
							... 
							
							
							
							llvm-svn: 73839 
							
						 
						
							2009-06-21 01:56:41 +00:00  
				
					
						
							
							
								 
						
							
								62fdd112fc 
								
							 
						 
						
							
							
								
								implement PR4424: 0/x is always 0 for integer division.  
							
							... 
							
							
							
							llvm-svn: 73835 
							
						 
						
							2009-06-21 01:15:55 +00:00  
				
					
						
							
							
								 
						
							
								0d2de8c35e 
								
							 
						 
						
							
							
								
								Revert r73790, and replace it with a significantly less ugly solution.  Rather than trying to make the global reader-writer lock work,  
							
							... 
							
							
							
							create separate recursive mutexes for each value map.  The recursive-ness fixes the double-acquiring issue, which having one per ValueMap
lets us continue to maintain some concurrency.
llvm-svn: 73801 
							
						 
						
							2009-06-20 00:24:58 +00:00  
				
					
						
							
							
								 
						
							
								b07dd959a4 
								
							 
						 
						
							
							
								
								Fix a serious bug that would cause deadlock during abstract type refinement.  The constant creation  
							
							... 
							
							
							
							gets involved, and we end up trying to recursively acquire a writer lock.  The fix for this is slightly horrible,
and involves passing a boolean "locked" parameter around in Constants.cpp, but it's better than having locked and
unlocked versions of most of the code.
llvm-svn: 73790 
							
						 
						
							2009-06-19 23:16:19 +00:00  
				
					
						
							
							
								 
						
							
								7ccc52f131 
								
							 
						 
						
							
							
								
								Support vector casts in more places, fixing a variety of assertion  
							
							... 
							
							
							
							failures.
To support this, add some utility functions to Type to help support
vector/scalar-independent code. Change ConstantInt::get and
ConstantFP::get to support vector types, and add an overload to
ConstantInt::get that uses a static IntegerType type, for
convenience.
Introduce a new getConstant method for ScalarEvolution, to simplify
common use cases.
llvm-svn: 73431 
							
						 
						
							2009-06-15 22:12:54 +00:00  
				
					
						
							
							
								 
						
							
								a5b9645c4b 
								
							 
						 
						
							
							
								
								Split the Add, Sub, and Mul instruction opcodes into separate  
							
							... 
							
							
							
							integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.
For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.
This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt 
llvm-svn: 72897 
							
						 
						
							2009-06-04 22:49:04 +00:00  
				
					
						
							
							
								 
						
							
								79975d5ffb 
								
							 
						 
						
							
							
								
								Apply a patch by Micah Villmow to fix AsmParser to accept vector  
							
							... 
							
							
							
							shift constant expressions, and add support for folding vector
shift constant expressions. This fixes PR3802.
llvm-svn: 67010 
							
						 
						
							2009-03-14 17:09:17 +00:00  
				
					
						
							
							
								 
						
							
								5bf00893b6 
								
							 
						 
						
							
							
								
								Extension of GEP in constant folder was broken (apparently this code  
							
							... 
							
							
							
							has never been run!).
 - Sorry, don't know how to make an LLVM test case for this.
llvm-svn: 65383 
							
						 
						
							2009-02-24 19:10:46 +00:00  
				
					
						
							
							
								 
						
							
								e7d5479136 
								
							 
						 
						
							
							
								
								Allow the inverse transform x86_fp80 -> i80 (also  
							
							... 
							
							
							
							fires during the Ada build).
llvm-svn: 63731 
							
						 
						
							2009-02-04 11:17:06 +00:00  
				
					
						
							
							
								 
						
							
								1ea1173143 
								
							 
						 
						
							
							
								
								Fix PR3468: a crash when constant folding a bitcast of  
							
							... 
							
							
							
							i80 to x86 long double (this was presumably generated
by sroa).
llvm-svn: 63730 
							
						 
						
							2009-02-04 10:17:14 +00:00  
				
					
						
							
							
								 
						
							
								b5721632ee 
								
							 
						 
						
							
							
								
								Make special cases (0 inf nan) work for frem.  
							
							... 
							
							
							
							Besides APFloat, this involved removing code
from two places that thought they knew the
result of frem(0., x) but were wrong.
llvm-svn: 62645 
							
						 
						
							2009-01-21 00:35:19 +00:00  
				
					
						
							
							
								 
						
							
								dd8ef1bf30 
								
							 
						 
						
							
							
								
								div/rem by zero and div/rem overflow are both undefined according to  
							
							... 
							
							
							
							langref.  Constant fold them to undef instead of trying to preserve
the trap.  This fixes PR3354.
llvm-svn: 62534 
							
						 
						
							2009-01-19 21:55:26 +00:00  
				
					
						
							
							
								 
						
							
								25f0106fd9 
								
							 
						 
						
							
							
								
								Added support for the following definition of shufflevector  
							
							... 
							
							
							
							<result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <m x i32> <mask> 
llvm-svn: 58964 
							
						 
						
							2008-11-10 04:46:22 +00:00  
				
					
						
							
							
								 
						
							
								d26344d252 
								
							 
						 
						
							
							
								
								Fix unused variable warnings.  
							
							... 
							
							
							
							llvm-svn: 58653 
							
						 
						
							2008-11-03 23:20:04 +00:00  
				
					
						
							
							
								 
						
							
								1baace07c4 
								
							 
						 
						
							
							
								
								apply Eli's patch for PR2165 and provide a testcase.  
							
							... 
							
							
							
							llvm-svn: 57625 
							
						 
						
							2008-10-16 05:26:51 +00:00  
				
					
						
							
							
								 
						
							
								4f0bd68cfe 
								
							 
						 
						
							
							
								
								Add a "loses information" return value to APFloat::convert  
							
							... 
							
							
							
							and APFloat::convertToInteger.  Restore return value to
IEEE754.  Adjust all users accordingly.
llvm-svn: 57329 
							
						 
						
							2008-10-09 23:00:39 +00:00  
				
					
						
							
							
								 
						
							
								54306fe499 
								
							 
						 
						
							
							
								
								Rename APFloat::convertToAPInt to bitcastToAPInt to  
							
							... 
							
							
							
							make it clearer what the function does.  No functional
change.
llvm-svn: 57325 
							
						 
						
							2008-10-09 18:53:47 +00:00  
				
					
						
							
							
								 
						
							
								ac5c7d514f 
								
							 
						 
						
							
							
								
								Try to fold each element of a vector. This is needed to maintain structural  
							
							... 
							
							
							
							equivalence.
llvm-svn: 55694 
							
						 
						
							2008-09-03 06:48:55 +00:00  
				
					
						
							
							
								 
						
							
								f023db6444 
								
							 
						 
						
							
							
								
								Don't crash when trying to constant fold a vector with some elements that can't  
							
							... 
							
							
							
							be folded. Instead, fail to fold the entire vector.
We could also return a vector with some elements folded and some not. If anyone
thinks that's a better approach, please speak up!
llvm-svn: 55689 
							
						 
						
							2008-09-03 05:54:33 +00:00  
				
					
						
							
							
								 
						
							
								67136cff7b 
								
							 
						 
						
							
							
								
								Fix a case where vector comparison constant folding would cause an  
							
							... 
							
							
							
							infinite recursion.  part of PR2529
llvm-svn: 53383 
							
						 
						
							2008-07-10 00:29:28 +00:00  
				
					
						
							
							
								 
						
							
								b69689e18b 
								
							 
						 
						
							
							
								
								elementwise comparison of vector constants was completely wrong.  Fix  
							
							... 
							
							
							
							it for PR2529
llvm-svn: 53380 
							
						 
						
							2008-07-10 00:08:17 +00:00  
				
					
						
							
							
								 
						
							
								350e41760a 
								
							 
						 
						
							
							
								
								improve comment  
							
							... 
							
							
							
							llvm-svn: 53243 
							
						 
						
							2008-07-08 18:47:38 +00:00  
				
					
						
							
							
								 
						
							
								d137a08b0d 
								
							 
						 
						
							
							
								
								Fix three bugs:  
							
							... 
							
							
							
							1) evaluate [v]fcmp true/false with undefs to true or false instead
   of undef.
2) fix vector comparisons with undef to return a vector result instead 
   of i1
3) fix vector comparisons with evaluatable results to return vector
   true/false instead of i1 true/false (PR2529)
llvm-svn: 53220 
							
						 
						
							2008-07-08 05:46:34 +00:00  
				
					
						
							
							
								 
						
							
								3db11c2bd9 
								
							 
						 
						
							
							
								
								Constant folding for insertvalue and extractvalue.  
							
							... 
							
							
							
							llvm-svn: 51889 
							
						 
						
							2008-06-03 00:15:20 +00:00  
				
					
						
							
							
								 
						
							
								eb185ca5e9 
								
							 
						 
						
							
							
								
								Revert constant-folding change that will miscompile in some cases.  
							
							... 
							
							
							
							llvm-svn: 51223 
							
						 
						
							2008-05-17 19:00:05 +00:00  
				
					
						
							
							
								 
						
							
								79d681dddd 
								
							 
						 
						
							
							
								
								Unbreak the build.  
							
							... 
							
							
							
							llvm-svn: 51217 
							
						 
						
							2008-05-17 09:05:22 +00:00  
				
					
						
							
							
								 
						
							
								1ba90bb69b 
								
							 
						 
						
							
							
								
								Constant fold inttoptr and ptrtoint.  
							
							... 
							
							
							
							llvm-svn: 51216 
							
						 
						
							2008-05-17 09:03:26 +00:00  
				
					
						
							
							
								 
						
							
								12fce7751b 
								
							 
						 
						
							
							
								
								IR support for extractvalue and insertvalue instructions. Also, begin  
							
							... 
							
							
							
							moving toward making structs and arrays first-class types.
llvm-svn: 51157 
							
						 
						
							2008-05-15 19:50:34 +00:00  
				
					
						
							
							
								 
						
							
								f6caff66a1 
								
							 
						 
						
							
							
								
								merge of use-diet branch to trunk  
							
							... 
							
							
							
							llvm-svn: 50943 
							
						 
						
							2008-05-10 08:32:32 +00:00  
				
					
						
							
							
								 
						
							
								912bec79ca 
								
							 
						 
						
							
							
								
								hopefully resolve PR2240  
							
							... 
							
							
							
							llvm-svn: 49999 
							
						 
						
							2008-04-20 19:59:12 +00:00  
				
					
						
							
							
								 
						
							
								6b05605829 
								
							 
						 
						
							
							
								
								rearrange some code, simplify handling of shifts.  
							
							... 
							
							
							
							llvm-svn: 49995 
							
						 
						
							2008-04-20 18:24:14 +00:00  
				
					
						
							
							
								 
						
							
								d3018e6a0e 
								
							 
						 
						
							
							
								
								Use simplified ConstantFP::get method, fix a bug handling frem x, 0 with long doubles.  
							
							... 
							
							
							
							llvm-svn: 49976 
							
						 
						
							2008-04-20 00:26:06 +00:00  
				
					
						
							
							
								 
						
							
								bc26e1bb8a 
								
							 
						 
						
							
							
								
								Implement PR2206.  
							
							... 
							
							
							
							llvm-svn: 49967 
							
						 
						
							2008-04-19 22:17:26 +00:00  
				
					
						
							
							
								 
						
							
								334d33cad1 
								
							 
						 
						
							
							
								
								refactor handling of symbolic constant folding, picking up  
							
							... 
							
							
							
							a few new cases( see Integer/a1.ll), but not anything that
would happen in practice.
llvm-svn: 49965 
							
						 
						
							2008-04-19 21:58:19 +00:00