Chris Lattner 
							
						 
					 
					
						
						
							
						
						7312a22ed6 
					 
					
						
						
							
							enhance the "change or icmp's into switch" xform to handle one value in an  
						
						... 
						
						
						
						'or sequence' that it doesn't understand.  This allows us to optimize
something insane like this:
int crud (unsigned char c, unsigned x)
 {
   if(((((((((( (int) c <= 32 ||
                    (int) c == 46) || (int) c == 44)
                  || (int) c == 58) || (int) c == 59) || (int) c == 60)
               || (int) c == 62) || (int) c == 34) || (int) c == 92)
            || (int) c == 39) != 0)
     foo();
 }
into:
define i32 @crud(i8 zeroext %c, i32 %x) nounwind ssp noredzone {
entry:
  %cmp = icmp ult i8 %c, 33
  br i1 %cmp, label %if.then, label %switch.early.test
switch.early.test:                                ; preds = %entry
  switch i8 %c, label %if.end [
    i8 39, label %if.then
    i8 44, label %if.then
    i8 58, label %if.then
    i8 59, label %if.then
    i8 60, label %if.then
    i8 62, label %if.then
    i8 46, label %if.then
    i8 92, label %if.then
    i8 34, label %if.then
  ]
by pulling the < comparison out ahead of the newly formed switch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121680  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 04:50:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0aa749bde7 
					 
					
						
						
							
							merge two very similar functions into one that has a bool argument.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121678  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 04:26:26 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						662269d2ab 
					 
					
						
						
							
							don't bother handling non-canonical icmp's  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121676  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 04:18:32 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						803a29d19f 
					 
					
						
						
							
							inline a function, making the result much simpler.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121675  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 04:15:19 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						abf706703f 
					 
					
						
						
							
							Fix my previous patch to handle a degenerate case that the llvm-gcc  
						
						... 
						
						
						
						bootstrap buildbot tripped over.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121674  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 03:43:57 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						28acc13548 
					 
					
						
						
							
							convert some methods to be static functions  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121673  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 03:30:12 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						fca20f507c 
					 
					
						
						
							
							zap two more std::sorts.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121672  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 03:24:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						61c77449c7 
					 
					
						
						
							
							fix a fairly serious oversight with switch formation from  
						
						... 
						
						
						
						or'd conditions.  Previously we'd compile something like this:
int crud (unsigned char c) {
   return c == 62 || c == 34 || c == 92;
}
into:
  switch i8 %c, label %lor.rhs [
    i8 62, label %lor.end
    i8 34, label %lor.end
  ]
lor.rhs:                                          ; preds = %entry
  %cmp8 = icmp eq i8 %c, 92
  br label %lor.end
lor.end:                                          ; preds = %entry, %entry, %lor.rhs
  %0 = phi i1 [ true, %entry ], [ %cmp8, %lor.rhs ], [ true, %entry ]
  %lor.ext = zext i1 %0 to i32
  ret i32 %lor.ext
which failed to merge the compare-with-92 into the switch.  With this patch
we simplify this all the way to:
  switch i8 %c, label %lor.rhs [
    i8 62, label %lor.end
    i8 34, label %lor.end
    i8 92, label %lor.end
  ]
lor.rhs:                                          ; preds = %entry
  br label %lor.end
lor.end:                                          ; preds = %entry, %entry, %entry, %lor.rhs
  %0 = phi i1 [ true, %entry ], [ false, %lor.rhs ], [ true, %entry ], [ true, %entry ]
  %lor.ext = zext i1 %0 to i32
  ret i32 %lor.ext
which is much better for codegen's switch lowering stuff.  This kicks in 33 times
on 176.gcc (for example) cutting 103 instructions off the generated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121671  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 03:18:54 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6d4d21e29d 
					 
					
						
						
							
							convert an std::sort to array_pod_sort.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121669  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 02:00:58 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cd4b709d73 
					 
					
						
						
							
							move the "br (X == 0 | X == 1), T, F" -> switch optimization to a new  
						
						... 
						
						
						
						location in simplifycfg.  In the old days, SimplifyCFG was never run on
the entry block, so we had to scan over all preds of the BB passed into
simplifycfg to do this xform, now we can just check blocks ending with
a condbranch.  This avoids a scan over all preds of every simplified 
block, which should be a significant compile-time perf win on functions
with lots of edges.  No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121668  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 01:57:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9a2b72acc9 
					 
					
						
						
							
							reduce indentation and generally simplify code, no functionality change.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121667  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 01:47:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						dcb54ce3da 
					 
					
						
						
							
							use getFirstNonPHIOrDbg to simplify this code.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121664  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-13 01:28:06 +00:00 
						 
				 
			
				
					
						
							
							
								Frits van Bommel 
							
						 
					 
					
						
						
							
						
						7ac40c3ffa 
					 
					
						
						
							
							Teach SimplifyCFG to turn  
						
						... 
						
						
						
						(indirectbr (select cond, blockaddress(@fn, BlockA),
                            blockaddress(@fn, BlockB)))
into
  (br cond, BlockA, BlockB).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120943  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-12-05 18:29:03 +00:00 
						 
				 
			
				
					
						
							
							
								Duncan Sands 
							
						 
					 
					
						
						
							
						
						5f28475b30 
					 
					
						
						
							
							Fix PR8445: a block with no predecessors may be the entry block, in which case  
						
						... 
						
						
						
						it isn't unreachable and should not be zapped.  The check for the entry block
was missing in one case: a block containing a unwind instruction.  While there,
do some small cleanups: "M" is not a great name for a Function* (it would be
more appropriate for a Module*), change it to "Fn"; use Fn in more places.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117224  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-10-24 12:23:30 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						7a4994356b 
					 
					
						
						
							
							Instead, teach SimplifyCFG to trim non-address-taken blocks from  
						
						... 
						
						
						
						indirectbr destination lists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111122  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-16 14:41:14 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						e2c6d131d1 
					 
					
						
						
							
							Teach SimplifyCFG how to simplify indirectbr instructions.  
						
						... 
						
						
						
						- Eliminate redundant successors.
 - Convert an indirectbr with one successor into a direct branch.
Also, generalize SimplifyCFG to be able to be run on a function entry block.
It knows quite a few simplifications which are applicable to the entry
block, and it only needs a few checks to avoid trouble with the entry block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111060  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-08-14 00:29:42 +00:00 
						 
				 
			
				
					
						
							
							
								Gabor Greif 
							
						 
					 
					
						
						
							
						
						20361b9d4d 
					 
					
						
						
							
							pass dereferenced iterator to dyn_cast  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109098  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-22 11:43:44 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						2722dfa75d 
					 
					
						
						
							
							Remove unneeded check, and correct style.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108427  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-15 16:38:22 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						e84178a0bd 
					 
					
						
						
							
							Extend SimplifyCFG's common-destination folding heuristic to allow a single  
						
						... 
						
						
						
						"bonus" instruction to be speculatively executed.  Add a heuristic to
ensure we're not tripping up out-of-order execution by checking that this bonus
instruction only uses values that were already guaranteed to be available.
This allows us to eliminate the short circuit in (x&1)&&(x&2).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108351  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-14 19:52:16 +00:00 
						 
				 
			
				
					
						
							
							
								Gabor Greif 
							
						 
					 
					
						
						
							
						
						625398343e 
					 
					
						
						
							
							cache dereferenced iterators  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108133  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-12 10:59:23 +00:00 
						 
				 
			
				
					
						
							
							
								Gabor Greif 
							
						 
					 
					
						
						
							
						
						5896935423 
					 
					
						
						
							
							cache result of operator*  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107974  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-07-09 15:25:09 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						4bb31bfaa3 
					 
					
						
						
							
							Fix a grammaro.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99917  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-30 20:04:57 +00:00 
						 
				 
			
				
					
						
							
							
								Gabor Greif 
							
						 
					 
					
						
						
							
						
						bd44314c67 
					 
					
						
						
							
							fix two cases where the arguments were extracted from the wrong range out of the InvokeInst  
						
						... 
						
						
						
						spotted by baldrick -- thanks\!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99914  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-30 19:20:53 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						c69b4a5b8b 
					 
					
						
						
							
							Make returns more consistent with others.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98490  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-03-14 10:40:28 +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 
						 
				 
			
				
					
						
							
							
								Jakob Stoklund Olesen 
							
						 
					 
					
						
						
							
						
						58e9ee85fd 
					 
					
						
						
							
							Teach SimplifyCFG about magic pointer constants.  
						
						... 
						
						
						
						Weird code sometimes uses pointer constants other than null. This patch
teaches SimplifyCFG to build switch instructions in those cases.
Code like this:
void f(const char *x) {
  if (!x)
    puts("null");
  else if ((uintptr_t)x == 1)
    puts("one");
  else if (x == (char*)2 || x == (char*)3)
    puts("two");
  else if ((intptr_t)x == 4)
    puts("four");
  else
    puts(x);
}
Now becomes a switch:
define void @f(i8* %x) nounwind ssp {
entry:
  %magicptr23 = ptrtoint i8* %x to i64            ; <i64> [#uses=1]
  switch i64 %magicptr23, label %if.else16 [
    i64 0, label %if.then
    i64 1, label %if.then2
    i64 2, label %if.then9
    i64 3, label %if.then9
    i64 4, label %if.then14
  ]
Note that LLVM's own DenseMap uses magic pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95439  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-02-05 22:03:18 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						11acaa374c 
					 
					
						
						
							
							Convert a ton of simple integer type equality tests to the new predicate.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92760  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 20:07:06 +00:00 
						 
				 
			
				
					
						
							
							
								Benjamin Kramer 
							
						 
					 
					
						
						
							
						
						f012705c7e 
					 
					
						
						
							
							Avoid going through the LLVMContext for type equality where it's safe to dereference the type pointer.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92726  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 13:12:22 +00:00 
						 
				 
			
				
					
						
							
							
								David Greene 
							
						 
					 
					
						
						
							
						
						89d6fd36a2 
					 
					
						
						
							
							Change errs() to dbgs().  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92604  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 01:26:52 +00:00 
						 
				 
			
				
					
						
							
							
								Devang Patel 
							
						 
					 
					
						
						
							
						
						44a29e066a 
					 
					
						
						
							
							Remove dead debug info intrinsics.  
						
						... 
						
						
						
						Intrinsic::dbg_stoppoint
 Intrinsic::dbg_region_start 
 Intrinsic::dbg_region_end 
 Intrinsic::dbg_func_start
AutoUpgrade simply ignores these intrinsics now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92557  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2010-01-05 01:10:40 +00:00 
						 
				 
			
				
					
						
							
							
								Jim Grosbach 
							
						 
					 
					
						
						
							
						
						43a8241b65 
					 
					
						
						
							
							Move EliminateDuplicatePHINodes() from SimplifyCFG.cpp to Local.cpp  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90324  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-12-02 17:06:45 +00:00 
						 
				 
			
				
					
						
							
							
								Jim Grosbach 
							
						 
					 
					
						
						
							
						
						20f4d34fe3 
					 
					
						
						
							
							Make EliminateDuplicatePHINodes() available as a utility function  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89297  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-11-19 02:02:10 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						dce94d92df 
					 
					
						
						
							
							refactor TryToSimplifyUncondBranchFromEmptyBlock out of SimplifyCFG.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86666  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-11-10 05:59:26 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7b550ccfc5 
					 
					
						
						
							
							remove a bunch of extraneous LLVMContext arguments  
						
						... 
						
						
						
						from various APIs, addressing PR5325.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86231  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-11-06 04:27:31 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						0e747beb3c 
					 
					
						
						
							
							Add a comment about a missed opportunity.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85635  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-10-30 23:15:43 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						2c63566e40 
					 
					
						
						
							
							Teach SimplifyCFG how to eliminate duplicate PHI nodes within a block.  
						
						... 
						
						
						
						This reduces codesize on a variety of codes by 1-2% on x86-64. It also
helps clean up after SSAUpdater.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85626  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-10-30 22:39:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						11f15dbb28 
					 
					
						
						
							
							change simplifycfg to not duplicate 'unwind' instructions.  Hopefully  
						
						... 
						
						
						
						this will increase the likelihood of common code getting sunk towards
the unwind.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83996  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-10-13 18:13:05 +00:00 
						 
				 
			
				
					
						
							
							
								Nick Lewycky 
							
						 
					 
					
						
						
							
						
						6776064d19 
					 
					
						
						
							
							Instruction::clone does not need to take an LLVMContext&. Remove that and  
						
						... 
						
						
						
						update all the callers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82889  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-09-27 07:38:41 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						58cfa3b137 
					 
					
						
						
							
							Rename Instruction::isIdenticalTo to Instruction::isIdenticalToWhenDefined,  
						
						... 
						
						
						
						and introduce a new Instruction::isIdenticalTo which tests for full
identity, including the SubclassOptionalData flags. Also, fix the
Instruction::clone implementations to preserve the SubclassOptionalData
flags. Finally, teach several optimizations how to handle
SubclassOptionalData correctly, given these changes.
This fixes the counterintuitive behavior of isIdenticalTo not comparing
the full value, and clone not returning an identical clone, as well as
some subtle bugs that could be caused by these.
Thanks to Nick Lewycky for reporting this, and for an initial patch!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80038  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-08-25 22:11:20 +00:00 
						 
				 
			
				
					
						
							
							
								Daniel Dunbar 
							
						 
					 
					
						
						
							
						
						e317bcc74c 
					 
					
						
						
							
							Fix -Asserts warnings.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79849  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-08-23 10:29:55 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						bdff548e4d 
					 
					
						
						
							
							eliminate the "Value" printing methods that print to a std::ostream.  
						
						... 
						
						
						
						This required converting a bunch of stuff off DOUT and other cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79819  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-08-23 04:37:46 +00:00 
						 
				 
			
				
					
						
							
							
								Eli Friedman 
							
						 
					 
					
						
						
							
						
						12bb766ae9 
					 
					
						
						
							
							Fix for PR3016: detect the tricky case, where there are  
						
						... 
						
						
						
						unfoldable references to a PHI node in the block being folded, and disable
the transformation in that case.  The correct transformation of such PHI
nodes depends on whether BB dominates Succ, and dominance is expensive 
to compute here.  (Alternatively, it's possible to check whether any 
uses are live, but that's also essentially a dominance calculation. 
Another alternative is to use reg2mem, but it probably isn't a good idea to
use that in simplifycfg.)
Also, remove some incorrect code from CanPropagatePredecessorsForPHIs 
which is made unnecessary with this patch: it didn't consider the case 
where a PHI node in BB has multiple uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79174  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-08-16 04:23:49 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						1d0be15f89 
					 
					
						
						
							
							Push LLVMContexts through the IntegerType APIs.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-08-13 21:58:54 +00:00 
						 
				 
			
				
					
						
							
							
								Dan Gohman 
							
						 
					 
					
						
						
							
						
						4ae5126d04 
					 
					
						
						
							
							Remove a bunch more now-unnecessary Context arguments.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78809  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-08-12 16:23:25 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						9e9a0d5fc2 
					 
					
						
						
							
							Move more code back to 2.5 APIs.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77635  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-30 23:03:37 +00:00 
						 
				 
			
				
					
						
							
							
								Daniel Dunbar 
							
						 
					 
					
						
						
							
						
						460f656475 
					 
					
						
						
							
							Remove Value::getName{Start,End}, the last of the old Name APIs.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77152  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-26 09:48:23 +00:00 
						 
				 
			
				
					
						
							
							
								Daniel Dunbar 
							
						 
					 
					
						
						
							
						
						ce63ffb52f 
					 
					
						
						
							
							More migration to raw_ostream, the water has dried up around the iostream hole.  
						
						... 
						
						
						
						- Some clients which used DOUT have moved to DEBUG. We are deprecating the
   "magic" DOUT behavior which avoided calling printing functions when the
   statement was disabled. In addition to being unnecessary magic, it had the
   downside of leaving code in -Asserts builds, and of hiding potentially
   unnecessary computations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77019  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-25 00:23:56 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						eed707b1e6 
					 
					
						
						
							
							Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types.  More to come.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77011  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-24 23:12:02 +00:00 
						 
				 
			
				
					
						
							
							
								Owen Anderson 
							
						 
					 
					
						
						
							
						
						e922c02019 
					 
					
						
						
							
							Get rid of the Pass+Context magic.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2009-07-22 00:24:57 +00:00