Chris Lattner 
							
						 
					 
					
						
						
							
						
						7514437133 
					 
					
						
						
							
							set DEBUG_TYPE right  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30623  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-09-27 04:58:23 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						dfa1af0513 
					 
					
						
						
							
							Allow tail duplication in more cases, relaxing the previous restriction a  
						
						... 
						
						
						
						bit.  This fixes Regression/Transforms/TailDup/MergeTest.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30237  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-09-10 18:17:58 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e99c623e75 
					 
					
						
						
							
							Throttle back tail duplication to avoid creating really ugly sequences of code.  
						
						... 
						
						
						
						For Transforms/TailDup/if-tail-dup.ll, f.e., it produces:
_foo:
        movl 8(%esp), %eax
        movl 4(%esp), %ecx
        testl $1, %ecx
        je LBB1_2       #cond_next
LBB1_1: #cond_true
        movl $1, (%eax)
LBB1_2: #cond_next
        testl $2, %ecx
        je LBB1_4       #cond_next10
LBB1_3: #cond_true6
        movl $1, 4(%eax)
LBB1_4: #cond_next10
        testl $4, %ecx
        je LBB1_6       #cond_next18
LBB1_5: #cond_true14
        movl $1, 8(%eax)
LBB1_6: #cond_next18
        testl $8, %ecx
        je LBB1_8       #return
LBB1_7: #cond_true22
        movl $1, 12(%eax)
        ret
LBB1_8: #return
        ret
instead of:
_foo:
        movl 4(%esp), %eax
        testl $2, %eax
        sete %cl
        movl 8(%esp), %edx
        testl $1, %eax
        je LBB1_2       #cond_next
LBB1_1: #cond_true
        movl $1, (%edx)
        testb %cl, %cl
        jne LBB1_4      #cond_next10
        jmp LBB1_3      #cond_true6
LBB1_2: #cond_next
        testb %cl, %cl
        jne LBB1_4      #cond_next10
LBB1_3: #cond_true6
        movl $1, 4(%edx)
        testl $4, %eax
        je LBB1_6       #cond_next18
        jmp LBB1_5      #cond_true14
LBB1_4: #cond_next10
        testl $4, %eax
        je LBB1_6       #cond_next18
LBB1_5: #cond_true14
        movl $1, 8(%edx)
        testl $8, %eax
        je LBB1_8       #return
        jmp LBB1_7      #cond_true22
LBB1_6: #cond_next18
        testl $8, %eax
        je LBB1_8       #return
LBB1_7: #cond_true22
        movl $1, 12(%edx)
        ret
LBB1_8: #return
        ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30158  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-09-07 21:30:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7f8897f22e 
					 
					
						
						
							
							eliminate RegisterOpt.  It does the same thing as RegisterPass.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29925  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-08-27 22:42:52 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						dac58ad983 
					 
					
						
						
							
							Make iostream #inclusion explicit  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25514  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-22 23:32:06 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						fd93908ae8 
					 
					
						
						
							
							Remove trailing whitespace  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21427  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-21 23:48:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b9df9b4c88 
					 
					
						
						
							
							Do not count debugger intrinsics in size estimation.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18110  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-22 17:23:57 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7e54a01ddb 
					 
					
						
						
							
							Speed up the tail duplication pass on the testcase below from 68.2s to 1.23s:  
						
						... 
						
						
						
						#define CL0(a) case a: f(); goto c;
 #define CL1(a) CL0(a##0) CL0(a##1) CL0(a##2) CL0(a##3) CL0(a##4) CL0(a##5) \
 CL0(a##6) CL0(a##7) CL0(a##8) CL0(a##9)
 #define CL2(a) CL1(a##0) CL1(a##1) CL1(a##2) CL1(a##3) CL1(a##4) CL1(a##5) \
 CL1(a##6) CL1(a##7) CL1(a##8) CL1(a##9)
 #define CL3(a) CL2(a##0) CL2(a##1) CL2(a##2) CL2(a##3) CL2(a##4) CL2(a##5) \
 CL2(a##6) CL2(a##7) CL2(a##8) CL2(a##9)
 #define CL4(a) CL3(a##0) CL3(a##1) CL3(a##2) CL3(a##3) CL3(a##4) CL3(a##5) \
 CL3(a##6) CL3(a##7) CL3(a##8) CL3(a##9)
 void f();
 void a() {
     int b;
  c: switch (b) {
         CL4(1)
     }
 }
This comes from GCC PR 15524
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17390  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-11-01 07:05:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c3e903fe65 
					 
					
						
						
							
							Reduce code growth implied by the tail duplication pass by not duplicating  
						
						... 
						
						
						
						an instruction if it can be hoisted to a common dominator of the block.
This implements: test/Regression/Transforms/TailDup/MergeTest.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16758  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-10-06 03:27:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4b50156049 
					 
					
						
						
							
							Prototype these functions more accurately  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16432  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-09-20 04:43:15 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						2da5c3dda6 
					 
					
						
						
							
							Convert code to compile with vc7.1.  
						
						... 
						
						
						
						Patch contributed by Paolo Invernizzi. Thanks Paolo!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16368  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-09-15 17:06:42 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						551ccae044 
					 
					
						
						
							
							Changes For Bug 352  
						
						... 
						
						
						
						Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-09-01 22:55:40 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						d8e1eea678 
					 
					
						
						
							
							Fix #includes of i*.h => Instructions.h as per PR403.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15328  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-29 17:05:13 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						c8a1fcdb48 
					 
					
						
						
							
							Remove unused header file.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13750  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-05-25 08:51:36 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3c85eef81a 
					 
					
						
						
							
							Make the tail duplication threshold accessible from the command line instead of hardcoded  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13025  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-04-18 00:52:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						50eafbc828 
					 
					
						
						
							
							Fix bug in previous checkin  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12458  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-03-16 23:36:49 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						24ad00db5a 
					 
					
						
						
							
							Okay, so there is no reasonable way for tail duplication to update SSA form,  
						
						... 
						
						
						
						as it is making effectively arbitrary modifications to the CFG and we don't
have a domset/domfrontier implementations that can handle the dynamic updates.
Instead of having a bunch of code that doesn't actually work in practice,
just demote any potentially tricky values to the stack (causing the problem
to go away entirely).  Later invocations of mem2reg will rebuild SSA for us.
This fixes all of the major performance regressions with tail duplication
from LLVM 1.1.  For example, this loop:
---
int popcount(int x) {
  int result = 0;
  while (x != 0) {
    result = result + (x & 0x1);
    x = x >> 1;
  }
  return result;
}
---
Used to be compiled into:
int %popcount(int %X) {
entry:
	br label %loopentry
loopentry:		; preds = %entry, %no_exit
	%x.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ]		; <int> [#uses=3]
	%result.1.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ]		; <int> [#uses=2]
	%tmp.1 = seteq int %x.0, 0		; <bool> [#uses=1]
	br bool %tmp.1, label %loopexit, label %no_exit
no_exit:		; preds = %loopentry
	%tmp.4 = and int %x.0, 1		; <int> [#uses=1]
	%tmp.6 = add int %tmp.4, %result.1.0		; <int> [#uses=1]
	%tmp.9 = shr int %x.0, ubyte 1		; <int> [#uses=1]
	br label %loopentry
loopexit:		; preds = %loopentry
	ret int %result.1.0
}
And is now compiled into:
int %popcount(int %X) {
entry:
        br label %no_exit
no_exit:                ; preds = %entry, %no_exit
        %x.0.0 = phi int [ %X, %entry ], [ %tmp.9, %no_exit ]          ; <int> [#uses=2]
        %result.1.0.0 = phi int [ 0, %entry ], [ %tmp.6, %no_exit ]             ; <int> [#uses=1]
        %tmp.4 = and int %x.0.0, 1              ; <int> [#uses=1]
        %tmp.6 = add int %tmp.4, %result.1.0.0          ; <int> [#uses=2]
        %tmp.9 = shr int %x.0.0, ubyte 1                ; <int> [#uses=2]
        %tmp.1 = seteq int %tmp.9, 0            ; <bool> [#uses=1]
        br bool %tmp.1, label %loopexit, label %no_exit
loopexit:               ; preds = %no_exit
        ret int %tmp.6
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12457  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-03-16 23:29:09 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4bebf08d15 
					 
					
						
						
							
							Do not copy gigantic switch instructions  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12441  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-03-16 19:45:22 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						99cca7d3aa 
					 
					
						
						
							
							Disable tail duplication in a case that breaks on Olden/tsp  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12021  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-03-01 01:12:13 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4279f3c984 
					 
					
						
						
							
							Fix PR255: [tailduplication] Single basic block loops are very rare  
						
						... 
						
						
						
						Note that this is a band-aid put over a band-aid.  This just undisables
tail duplication in on very specific case that it seems to work in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11989  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-29 06:41:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c6bd195336 
					 
					
						
						
							
							Implement Transforms/InstCombine/cast.ll:test13, a case which occurs in a  
						
						... 
						
						
						
						hot 164.gzip loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11702  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-22 05:25:17 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c23396e8de 
					 
					
						
						
							
							Disable tail duplication in any "hard" cases, where it might break SSA form.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11052  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-01 06:32:28 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d745602662 
					 
					
						
						
							
							Finegrainify namespacification  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10725  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-09 06:02:20 +00:00 
						 
				 
			
				
					
						
							
							
								Brian Gaeke 
							
						 
					 
					
						
						
							
						
						d0fde30ce8 
					 
					
						
						
							
							Put all LLVM code into the llvm namespace, as per bug 109.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-11-11 22:41:34 +00:00 
						 
				 
			
				
					
						
							
							
								John Criswell 
							
						 
					 
					
						
						
							
						
						b576c94c15 
					 
					
						
						
							
							Added LLVM project notice to the top of every C++ source file.  
						
						... 
						
						
						
						Header files will be on the way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-10-20 19:43:21 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						3186d275f7 
					 
					
						
						
							
							Fix bug: TailDuplicate/2003-08-31-UnreachableBlocks.ll  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8276  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-08-31 21:17:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						086cb002d2 
					 
					
						
						
							
							Fix bug: TailDup/2003-08-23-InvalidatedPointers.ll  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8078  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-08-23 20:08:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6806f5614d 
					 
					
						
						
							
							DEBUG got moved to Support/Debug.h  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7492  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-08-01 22:15:03 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						00f185fbfd 
					 
					
						
						
							
							Fix bug: TailDup/2003-07-22-InfiniteLoop.ll  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7243  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-07-23 03:32:41 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						fcd74e2e31 
					 
					
						
						
							
							Fix bug: TailDup/2003-06-24-Simpleloop.ll  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6881  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-06-24 19:48:06 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						066ab6ac80 
					 
					
						
						
							
							Add paranoia checking  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6856  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-06-22 20:46:00 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ea635cd072 
					 
					
						
						
							
							Test change  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6852  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-06-22 20:25:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7a7bef4355 
					 
					
						
						
							
							Initial checkin of Tail duplication pass.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6846  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-06-22 20:10:28 +00:00