| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
own small class. No functionality change.
llvm-svn: 90956
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
phi translation of complex expressions like &A[i+1]. This has the
following benefits:
1. The phi translation logic is all contained in its own class with
a strong interface and verification that it is self consistent.
2. The logic is more correct than before. Previously, if intermediate
expressions got PHI translated, we'd miss the update and scan for
the wrong pointers in predecessor blocks. @phi_trans2 is a testcase
for this.
3. We have a lot less code in memdep.
We can handle phi translation across blocks of things like @phi_trans3,
which is pretty insane :).
This patch should fix the miscompiles of 255.vortex, and I tested it
with a bootstrap of llvm-gcc, llvm-test and dejagnu of course.
llvm-svn: 90926
|
|
|
|
| |
llvm-svn: 90650
|
|
|
|
| |
llvm-svn: 90319
|
|
|
|
|
|
|
|
| |
GVN,
per Chris' comments. Adjust testcases to match.
llvm-svn: 90304
|
|
|
|
| |
llvm-svn: 90258
|
|
|
|
| |
llvm-svn: 90257
|
|
|
|
| |
llvm-svn: 90217
|
|
|
|
|
|
| |
llvm-gcc build.
llvm-svn: 90113
|
|
|
|
|
|
|
| |
and reverse nonlocal memdep maps in synch, this should
fix 255.vortex.
llvm-svn: 90107
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 90002
|
|
|
|
| |
llvm-svn: 90001
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
rest of the file.
llvm-svn: 89577
|
|
|
|
|
|
| |
purposes for GVN/DSE.
llvm-svn: 85383
|
|
|
|
|
|
|
|
| |
need
to depend on Ref and ModRef calls within the invariant region.
llvm-svn: 85380
|
|
|
|
|
|
| |
purely local for now.
llvm-svn: 85378
|
|
|
|
| |
llvm-svn: 85286
|
|
|
|
|
|
| |
to free()
llvm-svn: 85181
|
|
|
|
|
|
|
| |
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.
llvm-svn: 85176
|
|
|
|
|
|
|
| |
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.
llvm-svn: 84987
|
|
|
|
|
|
| |
subclass of AllocationInst, so it no longer is necessary.
llvm-svn: 84969
|
|
|
|
|
|
|
|
| |
pointer at bitcast uses of a malloc call.
It should continue scanning until the malloc call, and this patch fixes that.
llvm-svn: 83931
|
|
|
|
|
|
| |
scary, as it indicates a lurking bug. yay.
llvm-svn: 82411
|
|
|
|
|
|
|
| |
early for the stated reasons: this allows it to find more
equivalences and depend less on code layout.
llvm-svn: 82404
|
|
|
|
|
|
|
|
| |
as to MallocInst.
Reviewed by Eli Friedman.
llvm-svn: 82281
|
|
|
|
| |
llvm-svn: 77727
|
|
|
|
| |
llvm-svn: 77725
|
|
|
|
|
|
| |
and use it from one more place. Patch by Jakub Staszak!
llvm-svn: 75478
|
|
|
|
|
|
|
|
|
|
|
| |
so that all code paths get it. PR4256 was about a case where the
phi translation loop would find all preds in the Visited cache, so
it could get by without re-sorting the NonLocalPointerDeps cache.
Fix this by resorting it earlier, there is no reason not to do this.
This patch inspired by Jakub Staszak's patch.
llvm-svn: 75476
|
|
|
|
|
|
|
| |
low-level alias() method, allowing it to reason more aggressively
about pointers into constant memory. PR4189
llvm-svn: 72403
|
|
|
|
|
|
| |
hackish workarounds from memdep
llvm-svn: 67971
|
|
|
|
|
|
| |
for a dependency, not terminate the search.
llvm-svn: 66709
|