| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 90258
|
| |
|
|
| |
llvm-svn: 90257
|
| |
|
|
| |
llvm-svn: 90217
|
| |
|
|
| |
llvm-svn: 90134
|
| |
|
|
| |
llvm-svn: 90133
|
| |
|
|
|
|
|
| |
* Do not SEGFAULT if tree entryNode() is NULL
* Print function names in dotty printer
llvm-svn: 90130
|
| |
|
|
|
|
| |
llvm-gcc build.
llvm-svn: 90113
|
| |
|
|
|
|
|
| |
and reverse nonlocal memdep maps in synch, this should
fix 255.vortex.
llvm-svn: 90107
|
| |
|
|
|
|
| |
This permits the devirtualization of llvm.org/PR3100#c9 when compiled by clang.
llvm-svn: 90099
|
| |
|
|
|
|
|
| |
LLVM::Transforms/GVN/2009-02-17-LoadPRECrash.ll
LLVM::Transforms/GVN/2009-06-17-InvalidPRE.ll
llvm-svn: 90096
|
| |
|
|
|
|
|
|
|
|
|
|
| |
was being added to the Result vector, but not being put in the
cache. This means that if the cache was reused wholesale for a
later query that it would be missing this entry and we'd do an
incorrect load elimination.
Unfortunately, it's not really possible to write a useful
testcase for this, but this unbreaks 255.vortex.
llvm-svn: 90093
|
| |
|
|
| |
llvm-svn: 90085
|
| |
|
|
|
|
| |
PR5574.
llvm-svn: 90045
|
| |
|
|
|
|
| |
inserted instructions. No functionality change until someone starts using it.
llvm-svn: 90039
|
| |
|
|
|
|
|
|
|
| |
way that getUnderlyingObject does it.
This fixes the 'DecomposeGEPExpression and getUnderlyingObject disagree!'
assertion on sqlite3.
llvm-svn: 90038
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
fixes PR5630 and sets the stage for the next phase of goodness (testcase
pending).
llvm-svn: 90019
|
| |
|
|
| |
llvm-svn: 90016
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 90011
|
| |
|
|
| |
llvm-svn: 90002
|
| |
|
|
| |
llvm-svn: 90001
|
| |
|
|
|
|
|
| |
fixes a crash analyzing consumer-lame, which had an "%X = add %X, 1"
in unreachable code.
llvm-svn: 90000
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
translation done by memdep, and reenable gep translation
again.
llvm-svn: 89992
|
| |
|
|
|
|
| |
whoops.
llvm-svn: 89991
|
| |
|
|
| |
llvm-svn: 89990
|
| |
|
|
| |
llvm-svn: 89985
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
SimplifyGEPInst method in InstructionSimplify.h. No functionality change.
llvm-svn: 89980
|
| |
|
|
|
|
| |
come.
llvm-svn: 89979
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 89975
|
| |
|
|
|
|
|
| |
previously already handled it at -m32 because there were no i32->i64
extensions for addressing.
llvm-svn: 89959
|
| |
|
|
| |
llvm-svn: 89958
|
| |
|
|
| |
llvm-svn: 89957
|
| |
|
|
| |
llvm-svn: 89956
|
| |
|
|
| |
llvm-svn: 89955
|
| |
|
|
|
|
| |
to exercise this though.
llvm-svn: 89954
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 89951
|
| |
|
|
|
|
| |
DecomposeGEPExpression. This dramatically simplifies and shrinks the code by eliminating the horrible CheckGEPInstructions method, fixes a miscompilation (@test3) and makes the code more aggressive. In particular, we now handle the @test4 case, which is reduced from the SmallPtrSet constructor. Missing this caused us to emit a variable length memset instead of a fixed size one.
llvm-svn: 89922
|
| |
|
|
|
|
| |
Value::getUnderlyingObject does (when TD is around). This allows us to avoid calling DecomposeGEPExpression unless the ultimate alias check we care about passes, speedup up BasicAA a bit.
llvm-svn: 89920
|
| |
|
|
|
|
| |
list of scaled offsets. Use this to eliminate some previous ad-hoc code which was subtly broken (it assumed all Constant*'s were non-zero, but strange constant express could be zero).
llvm-svn: 89915
|
| |
|
|
| |
llvm-svn: 89914
|
| |
|
|
| |
llvm-svn: 89912
|
| |
|
|
| |
llvm-svn: 89866
|
| |
|
|
| |
llvm-svn: 89725
|
| |
|
|
| |
llvm-svn: 89713
|
| |
|
|
| |
llvm-svn: 89689
|