| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
subclass of AllocationInst, so it no longer is necessary.
llvm-svn: 84969
|
|
|
|
| |
llvm-svn: 84373
|
|
|
|
|
|
| |
not themselves phi nodes. However, V2 may be. Call aliasCheck with V2 first to potentially eliminate a std::swap call.
llvm-svn: 84226
|
|
|
|
| |
llvm-svn: 84191
|
|
|
|
|
|
| |
improve alias results if constant, and the source pointer can't be modified.
llvm-svn: 84175
|
|
|
|
| |
llvm-svn: 84174
|
|
|
|
|
|
| |
only dereference the element they point to directly with no pointer arithmetic.
llvm-svn: 84159
|
|
|
|
| |
llvm-svn: 84080
|
|
|
|
|
|
|
|
| |
cannot alias the GEP. GEP pointer alias rule states this clearly:
A pointer value formed from a getelementptr instruction is associated with the
addresses associated with the first operand of the getelementptr.
llvm-svn: 84079
|
|
|
|
| |
llvm-svn: 84074
|
|
|
|
| |
llvm-svn: 84072
|
|
|
|
|
|
| |
value than it's safe to declare the PHI NoAlias the value. Ditto for MustAlias.
llvm-svn: 84038
|
|
|
|
| |
llvm-svn: 84000
|
|
|
|
|
|
| |
modify through the pointer they're given.
llvm-svn: 83959
|
|
|
|
|
|
|
|
| |
as to MallocInst.
Reviewed by Eli Friedman.
llvm-svn: 82281
|
|
|
|
| |
llvm-svn: 80267
|
|
|
|
| |
llvm-svn: 78948
|
|
|
|
|
|
|
|
| |
change back are
metadata related, which I'm waiting on to avoid conflicting with Devang.
llvm-svn: 77721
|
|
|
|
| |
llvm-svn: 77494
|
|
|
|
|
|
| |
getAnalysisIfAvailable<TargetData>().
llvm-svn: 77028
|
|
|
|
|
|
| |
thanks to contexts-on-types. More to come.
llvm-svn: 77011
|
|
|
|
| |
llvm-svn: 76702
|
|
|
|
|
|
|
|
|
|
|
|
| |
Getelementptrs that are defined to wrap are virtually useless to
optimization, and getelementptrs that are undefined on any kind
of overflow are too restrictive -- it's difficult to ensure that
all intermediate addresses are within bounds. I'm going to take
a different approach.
Remove a few optimizations that depended on this flag.
llvm-svn: 76437
|
|
|
|
|
|
|
|
| |
GEPOperator's hasNoPointer0verflow(), and make a few places in instcombine
that create GEPs that may overflow clear the NoOverflow value. Among
other things, this partially addresses PR2831.
llvm-svn: 76252
|
|
|
|
|
|
|
|
| |
number of issues in
our current context-passing stuff, which is also fixed here
llvm-svn: 76089
|
|
|
|
|
|
|
|
|
| |
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").
llvm-svn: 75640
|
|
|
|
|
|
|
|
|
| |
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.
llvm-svn: 75379
|
|
|
|
| |
llvm-svn: 74878
|
|
|
|
|
|
| |
files.
llvm-svn: 74844
|
|
|
|
| |
llvm-svn: 73911
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
beyond their associated static array type.
I believe that this fixes a legitimate bug, because BasicAliasAnalysis
already has code to check for this condition that works for non-constant
indices, however it was missing the case of constant indices. With this
change, it checks for both.
This fixes PR4267, and miscompiles of SPEC 188.ammp and 464.h264.href.
llvm-svn: 72451
|
|
|
|
|
|
|
| |
will make it more obvious what it represents, and stop
it being confused with the StoreSize.
llvm-svn: 71349
|
|
|
|
|
|
| |
intrinsics to any IntrWriteArgMem intrinsics.
llvm-svn: 64551
|
|
|
|
|
|
|
|
| |
couldn't ever be the return of call instruction. However, it's quite possible
that said local allocation is itself the return of a function call. That's
what malloc and calloc are for, actually.
llvm-svn: 64442
|
|
|
|
|
|
|
|
| |
AliasAnalysis and BasicAliasAnalysis. This involves some wider changes because it
folds away some never-used methods.
llvm-svn: 63900
|
|
|
|
|
|
|
|
| |
only dereference their arguments, and enhance
BasicAA to make use of this fact when computing ModRef info.
llvm-svn: 63718
|
|
|
|
|
|
|
|
| |
they are useful to analyses other than BasicAliasAnalysis.cpp. Include
the full comment for isIdentifiedObject in the header file. Thanks to
Chris for suggeseting this.
llvm-svn: 63589
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a MachineInstr doesn't have a memoperand but has an opcode that
is known to load or store, assume its memory reference may alias
*anything*, including stack slots which the compiler completely
controls.
To partially compensate for this, teach the ScheduleDAG building
code to do basic getUnderlyingValue analysis. This greatly
reduces the number of instructions that require restrictive
dependencies. This code will need to be revisited when we start
doing real alias analysis, but it should suffice for now.
llvm-svn: 63370
|
|
|
|
|
|
|
|
|
| |
doing very similar pointer capture analysis.
Factor out the common logic. The new version
is from FunctionAttrs since it does a better
job than the version in BasicAliasAnalysis
llvm-svn: 62461
|
|
|
|
| |
llvm-svn: 62436
|
|
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
|
|
|
|
|
|
| |
llvm.memcpy/memset/memmove. This allows removal of some
hackish code from basicaa.
llvm-svn: 62071
|
|
|
|
|
|
|
|
| |
the argument is marked nocapture - no need to
analyze the argument if the answer is already
known!
llvm-svn: 61753
|
|
|
|
|
|
|
|
|
|
| |
The problematic part of this patch is that we were out of attribute bits,
requiring some fancy bit hacking to make it fit (by shrinking alignment)
without breaking existing users or the file format.
This change will require users to rebuild llvm-gcc to match llvm.
llvm-svn: 61239
|
|
|
|
|
|
| |
builds.
llvm-svn: 61094
|
|
|
|
|
|
| |
intrinsics are properly marked nocapture, the fixme should be addressed.
llvm-svn: 61040
|
|
|
|
|
|
|
|
|
|
|
| |
parallel, allowing it to decide that P/Q must alias if A/B
must alias in things like:
P = gep A, 0, i, 1
Q = gep B, 0, i, 1
This allows GVN to delete 62 more instructions out of 403.gcc.
llvm-svn: 60820
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tricks based on readnone/readonly functions.
Teach memdep to look past readonly calls when analyzing
deps for a readonly call. This allows elimination of a
few more calls from 403.gcc:
before:
63 gvn - Number of instructions PRE'd
153986 gvn - Number of instructions deleted
50069 gvn - Number of loads deleted
after:
63 gvn - Number of instructions PRE'd
153991 gvn - Number of instructions deleted
50069 gvn - Number of loads deleted
5 calls isn't much, but this adds plumbing for the next change.
llvm-svn: 60794
|
|
|
|
| |
llvm-svn: 60697
|
|
|
|
| |
llvm-svn: 60687
|