| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
function attributes.
This makes the LLVM assembly look better. E.g.:
define void @foo() #0 { ret void }
attributes #0 = { nounwind noinline ssp }
llvm-svn: 175605
|
|
|
|
|
|
|
|
|
|
| |
Analyse Phis under the starting assumption that they are NoAlias. Recursively
look at their inputs.
If they MayAlias/MustAlias there must be an input that makes them so.
Addresses bug 14351.
llvm-svn: 169788
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a partial solution to PR14351. It removes some of the special
significance of the first incoming phi value in the phi aliasing checking logic
in BasicAA. In the context of a loop, the old logic assumes that the first
incoming value is the interesting one (meaning that it is the one that comes
from outside the loop), but this is often not the case. With this change, we
now test first the incoming value that comes from a block other than the parent
of the phi being tested.
llvm-svn: 168245
|
|
|
|
|
|
|
|
|
|
| |
'nocapture' attribute.
The nocapture attribute only specifies that no copies are made that
outlive the function. This isn't the same as there being no copies at all.
This fixes PR14045.
llvm-svn: 167381
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enhances basic alias analysis to recognize phis whose first incoming values are
NoAlias and whose other incoming values are just the phi node itself through
some amount of recursion.
Example: With this change basicaa reports that ptr_phi and ptr_phi2 do not alias
each other.
bb:
ptr = ptr2 + 1
loop:
ptr_phi = phi [bb, ptr], [loop, ptr_plus_one]
ptr2_phi = phi [bb, ptr2], [loop, ptr2_plus_one]
...
ptr_plus_one = gep ptr_phi, 1
ptr2_plus_one = gep ptr2_phi, 1
This enables the elimination of one load in code like the following:
extern int foo;
int test_noalias(int *ptr, int num, int* coeff) {
int *ptr2 = ptr;
int result = (*ptr++) * (*coeff--);
while (num--) {
*ptr2++ = *ptr;
result += (*coeff--) * (*ptr++);
}
*ptr = foo;
return result;
}
Part 2/2 of fix for PR13564.
llvm-svn: 163319
|
|
|
|
|
|
|
|
|
|
|
|
| |
If we can show that the base pointers of two GEPs don't alias each other using
precise analysis and the indices and base offset are equal then the two GEPs
also don't alias each other.
This is primarily needed for the follow up patch that analyses NoAlias'ing PHI
nodes.
Part 1/2 of fix for PR13564.
llvm-svn: 163317
|
|
|
|
|
|
|
|
|
|
| |
versions of Bash. In addition, I can back out the change to the lit
built-in shell test runner to support this.
This should fix the majority of fallout on Darwin, but I suspect there
will be a few straggling issues.
llvm-svn: 159544
|
|
|
|
| |
llvm-svn: 155432
|
|
|
|
|
|
| |
defaults to the ABI alignment. Given that, make this code a bit more aggressive in such cases.
llvm-svn: 151584
|
|
|
|
|
|
| |
object given sufficient alignment. Fixes PR12098.
llvm-svn: 151553
|
|
|
|
|
|
|
|
| |
run with LIT now and now Dejagnu. dg.exp is no longer needed.
Patch reviewed by Daniel Dunbar. It will be followed by additional cleanup patches.
llvm-svn: 150664
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I followed three heuristics for deciding whether to set 'true' or
'false':
- Everything target independent got 'true' as that is the expected
common output of the GCC builtins.
- If the target arch only has one way of implementing this operation,
set the flag in the way that exercises the most of codegen. For most
architectures this is also the likely path from a GCC builtin, with
'true' being set. It will (eventually) require lowering away that
difference, and then lowering to the architecture's operation.
- Otherwise, set the flag differently dependending on which target
operation should be tested.
Let me know if anyone has any issue with this pattern or would like
specific tests of another form. This should allow the x86 codegen to
just iteratively improve as I teach the backend how to differentiate
between the two forms, and everything else should remain exactly the
same.
llvm-svn: 146370
|
|
|
|
|
|
| |
instead of 'volatile load', which is archaic.
llvm-svn: 145171
|
|
|
|
|
|
| |
implementation correctly while checking nocapture calls.
llvm-svn: 140666
|
|
|
|
|
|
| |
alias-analysis tests to the new atomic instructions.
llvm-svn: 140557
|
|
|
|
|
|
| |
variable differences so that it actually does something sane. Fixes PR10881.
llvm-svn: 139276
|
|
|
|
|
|
| |
Fixes PR10872 and <rdar://problem/10065079>.
llvm-svn: 139204
|
|
|
|
|
|
|
| |
PR10292 doesn't show that the loads don't alias
the allocas.
llvm-svn: 134852
|
|
|
|
| |
llvm-svn: 134850
|
|
|
|
|
|
|
|
|
| |
for pre-2.9 bitcode files. We keep x86 unaligned loads, movnt, crc32, and the
target indep prefetch change.
As usual, updating the testsuite is a PITA.
llvm-svn: 133337
|
|
|
|
|
|
|
|
| |
been
needed since llvm-gcc 3.4 days.
llvm-svn: 133248
|
|
|
|
|
|
|
| |
syntax and has been long obsolete. As usual, updating the tests is the nasty
part of this.
llvm-svn: 133242
|
|
|
|
|
|
| |
are either unreduced or only test old syntax.
llvm-svn: 133228
|
|
|
|
|
|
| |
is disabled.
llvm-svn: 132632
|
|
|
|
| |
llvm-svn: 132625
|
|
|
|
|
|
| |
it exposed are fixed.
llvm-svn: 132611
|
|
|
|
|
|
|
|
|
| |
queries in the case of a DAG, where a query reaches a node
visited earlier, but it's not on a cycle. This avoids
MayAlias results in cases where BasicAA is expected to
return MustAlias or PartialAlias in order to protect TBAA.
llvm-svn: 132609
|
|
|
|
|
|
| |
of conservatively choosing MayAlias.
llvm-svn: 132579
|
|
|
|
|
|
|
|
| |
after checking for a GEP, so that it matches what GetUnderlyingObject
does. This fixes an obscure bug turned up by bugpoint in the testcase
for PR9931.
llvm-svn: 131971
|
|
|
|
| |
llvm-svn: 131851
|
|
|
|
|
|
|
|
|
| |
Original log message:
When BasicAA can determine that two pointers have the same base but
differ by a dynamic offset, return PartialAlias instead of MayAlias.
See the comment in the code for details. This fixes PR9971.
llvm-svn: 131809
|
|
|
|
|
|
|
| |
differ by a dynamic offset, return PartialAlias instead of MayAlias.
See the comment in the code for details. This fixes PR9971.
llvm-svn: 131781
|
|
|
|
| |
llvm-svn: 130327
|
|
|
|
|
|
|
|
|
| |
only check arguments with pointer types. Update the documentation
of IntrReadArgMem reflect this.
While here, add support for TBAA tags on intrinsic calls.
llvm-svn: 130317
|
|
|
|
|
|
|
|
|
|
|
| |
is equivalent to any other relevant value; it isn't true in general.
If it is equivalent, the LoopPromoter will tell the AST the equivalence.
Also, delete the PreheaderLoad if it is unused.
Chris, since you were the last one to make major changes here, can you check
that this is sane?
llvm-svn: 129049
|
|
|
|
| |
llvm-svn: 128149
|
|
|
|
|
|
| |
and whose address is never taken is a non-escaping local object and can't alias anything else.
llvm-svn: 128140
|
|
|
|
| |
llvm-svn: 124125
|
|
|
|
|
|
|
|
| |
are pointing to the same object, one pointer is accessing the entire
object, and the other is access has a non-zero size. This prevents
TBAA from kicking in and saying NoAlias in such cases.
llvm-svn: 123775
|
|
|
|
|
|
| |
exposed. It turns out to be a latent bug in basicaa, scary.
llvm-svn: 122772
|
|
|
|
| |
llvm-svn: 122771
|
|
|
|
|
|
| |
instcombine and into InstructionSimplify.
llvm-svn: 121861
|
|
|
|
| |
llvm-svn: 120493
|
|
|
|
| |
llvm-svn: 120492
|
|
|
|
| |
llvm-svn: 118836
|
|
|
|
|
|
|
|
|
|
|
|
| |
does normal initialization and normal chaining. Change the default
AliasAnalysis implementation to NoAlias.
Update StandardCompileOpts.h and friends to explicitly request
BasicAliasAnalysis.
Update tests to explicitly request -basicaa.
llvm-svn: 116720
|
|
|
|
|
|
| |
targets.
llvm-svn: 114015
|
|
|
|
| |
llvm-svn: 112889
|
|
|
|
| |
llvm-svn: 112483
|
|
|
|
|
|
| |
which I broke with a recent patch.
llvm-svn: 111452
|