- Nov 28, 2009
-
-
Chris Lattner authored
inserted instructions. No functionality change until someone starts using it. llvm-svn: 90039
-
Chris Lattner authored
way that getUnderlyingObject does it. This fixes the 'DecomposeGEPExpression and getUnderlyingObject disagree!' assertion on sqlite3. llvm-svn: 90038
-
Chris Lattner authored
if we don't have an address expression available in a predecessor, then model this as the value being clobbered at the end of the pred block instead of being modeled as a complete phi translation failure. This is important for PRE of loads because we want to see that the load is available in all but this predecessor, and complete phi translation failure results in not getting any information about predecessors. This doesn't do anything until I renable code insertion since PRE now sees that it is available in all but one predecessors, but can't insert the addressing in the predecessor that is missing it to eliminate the redundancy. llvm-svn: 90037
-
- Nov 27, 2009
-
-
Chris Lattner authored
to inform GVN about the newly inserted values. This fixes PR5631. llvm-svn: 90022
-
Chris Lattner authored
fixes PR5630 and sets the stage for the next phase of goodness (testcase pending). llvm-svn: 90019
-
Chris Lattner authored
llvm-svn: 90016
-
Nick Lewycky authored
for pointing this out. llvm-svn: 90015
-
Chris Lattner authored
translation of add with immediate. This allows us to optimize this function: void test(int N, double* G) { long j; G[1] = 1; for (j = 1; j < N - 1; j++) G[j+1] = G[j] + G[j+1]; } to only do one load every iteration of the loop. llvm-svn: 90013
-
Chris Lattner authored
llvm-svn: 90011
-
Chris Lattner authored
llvm-svn: 90009
-
Chris Lattner authored
the FIXME I added yesterday to be implemented. llvm-svn: 90008
-
Chris Lattner authored
array indexes. The "complex" case of SRoA still handles them, and correctly. This fixes a weirdness where we'd correctly avoid transforming A[0][42] if the 42 was too large, but we'd only do it if it was one gep, not two separate ones. llvm-svn: 90007
-
Chris Lattner authored
llvm-svn: 90002
-
Chris Lattner authored
llvm-svn: 90001
-
Chris Lattner authored
fixes a crash analyzing consumer-lame, which had an "%X = add %X, 1" in unreachable code. llvm-svn: 90000
-
Chris Lattner authored
where it is not available. It's unclear how to get this inserted computation into GVN's scalar availability sets, Owen, help? :) llvm-svn: 89997
-
Chris Lattner authored
translation done by memdep, and reenable gep translation again. llvm-svn: 89992
-
Chris Lattner authored
llvm-svn: 89991
-
Chris Lattner authored
llvm-svn: 89990
-
Chris Lattner authored
llvm-svn: 89985
-
Chris Lattner authored
llvm-svn: 89982
-
Chris Lattner authored
This allows us to compile the example from PR5313 into: LBB1_2: ## %bb incl %ecx movb %al, (%rsi) movslq %ecx, %rax movb (%rdi,%rax), %al testb %al, %al jne LBB1_2 instead of: LBB1_2: ## %bb movslq %eax, %rcx incl %eax movb (%rdi,%rcx), %cl movb %cl, (%rsi) movslq %eax, %rcx cmpb $0, (%rdi,%rcx) jne LBB1_2 llvm-svn: 89981
-
Chris Lattner authored
SimplifyGEPInst method in InstructionSimplify.h. No functionality change. llvm-svn: 89980
-
Chris Lattner authored
come. llvm-svn: 89979
-
Chris Lattner authored
the example in GCC PR16799 to: LBB1_2: ## %bb1 movl %eax, %eax subq %rax, %rdi movq %rdi, (%rcx) movl (%rdi), %eax testl %eax, %eax je LBB1_2 instead of: LBB1_2: ## %bb1 movl (%rdi), %ecx subq %rcx, %rdi movq %rdi, (%rax) cmpl $0, (%rdi) je LBB1_2 llvm-svn: 89978
-
Nick Lewycky authored
llvm-svn: 89976
-
Chris Lattner authored
llvm-svn: 89975
-
- Nov 26, 2009
-
-
Nick Lewycky authored
llvm-svn: 89974
-
Chris Lattner authored
remove in LLVM 3.0 llvm-svn: 89973
-
Chris Lattner authored
llvm-svn: 89972
-
Chris Lattner authored
generates store to undef and some generates store to null as the idiom for undefined behavior. Since simplifycfg zaps both, don't remove the undefined behavior in instcombine. llvm-svn: 89971
-
Chris Lattner authored
by Alastair Lynn. llvm-svn: 89970
-
Bob Wilson authored
llvm-svn: 89968
-
Chris Lattner authored
previously already handled it at -m32 because there were no i32->i64 extensions for addressing. llvm-svn: 89959
-
Chris Lattner authored
llvm-svn: 89958
-
Chris Lattner authored
llvm-svn: 89957
-
Chris Lattner authored
llvm-svn: 89956
-
Chris Lattner authored
llvm-svn: 89955
-
Chris Lattner authored
to exercise this though. llvm-svn: 89954
-
Chris Lattner authored
allows us to compile the example in readme.txt into: LBB1_1: ## %bb movl 4(%rdx,%rax), %ecx movl %ecx, %esi imull (%rdx,%rax), %esi imull %esi, %ecx movl %esi, 8(%rdx,%rax) imull %ecx, %esi movl %ecx, 12(%rdx,%rax) movl %esi, 16(%rdx,%rax) imull %ecx, %esi movl %esi, 20(%rdx,%rax) addq $16, %rax cmpq $4000, %rax jne LBB1_1 instead of: LBB1_1: movl (%rdx,%rax), %ecx imull 4(%rdx,%rax), %ecx movl %ecx, 8(%rdx,%rax) imull 4(%rdx,%rax), %ecx movl %ecx, 12(%rdx,%rax) imull 8(%rdx,%rax), %ecx movl %ecx, 16(%rdx,%rax) imull 12(%rdx,%rax), %ecx movl %ecx, 20(%rdx,%rax) addq $16, %rax cmpq $4000, %rax jne LBB1_1 GCC (4.2) doesn't seem to be able to eliminate the loads in this testcase either, it generates: L2: movl (%rdx), %eax imull 4(%rdx), %eax movl %eax, 8(%rdx) imull 4(%rdx), %eax movl %eax, 12(%rdx) imull 8(%rdx), %eax movl %eax, 16(%rdx) imull 12(%rdx), %eax movl %eax, 20(%rdx) addl $4, %ecx addq $16, %rdx cmpl $1002, %ecx jne L2 llvm-svn: 89952
-