#
39f00cc1 |
| 06-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Thread LLVMContext through the constant folding APIs, which touches a lot of files.
llvm-svn: 74844
|
#
e9454e8c |
| 22-Jun-2009 |
Owen Anderson <resistor@mac.com> |
Remove unneeded #include.
llvm-svn: 73911
|
#
776e4c8d |
| 27-May-2009 |
Dan Gohman <gohman@apple.com> |
Teach BasicAliasAnalysis to understand constant gep indices that fall beyond their associated static array type.
I believe that this fixes a legitimate bug, because BasicAliasAnalysis already has co
Teach BasicAliasAnalysis to understand constant gep indices that fall 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
show more ...
|
#
af9eaa83 |
| 09-May-2009 |
Duncan Sands <baldrick@free.fr> |
Rename PaddedSize to AllocSize, in the hope that this will make it more obvious what it represents, and stop it being confused with the StoreSize.
llvm-svn: 71349
|
Revision tags: llvmorg-2.5.0 |
|
#
73247d2e |
| 14-Feb-2009 |
Duncan Sands <baldrick@free.fr> |
Generalize some alias analysis logic from atomic intrinsics to any IntrWriteArgMem intrinsics.
llvm-svn: 64551
|
#
c60bd012 |
| 13-Feb-2009 |
Nick Lewycky <nicholas@mxc.ca> |
BasicAA was making the assumption that a local allocation which hadn't escaped couldn't ever be the return of call instruction. However, it's quite possible that said local allocation is itself the r
BasicAA was making the assumption that a local allocation which hadn't escaped 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
show more ...
|
#
98a3617f |
| 05-Feb-2009 |
Owen Anderson <resistor@mac.com> |
Refactor my previous change to maintain the distinction between AliasAnalysis and BasicAliasAnalysis. This involves some wider changes because it folds away some never-used methods.
llvm-svn: 63900
|
#
1caf7fef |
| 04-Feb-2009 |
Owen Anderson <resistor@mac.com> |
Finish making AliasAnalysis aware of the fact that most atomic intrinsics only dereference their arguments, and enhance BasicAA to make use of this fact when computing ModRef info.
llvm-svn: 63718
|
#
fb306c0a |
| 03-Feb-2009 |
Dan Gohman <gohman@apple.com> |
Move isIdentifiedObject and isNoAliasCall into AliasAnalysis.cpp since they are useful to analyses other than BasicAliasAnalysis.cpp. Include the full comment for isIdentifiedObject in the header fil
Move isIdentifiedObject and isNoAliasCall into AliasAnalysis.cpp since 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
show more ...
|
#
1ee0d41e |
| 30-Jan-2009 |
Dan Gohman <gohman@apple.com> |
Fix a post-RA scheduling dependency bug.
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 sta
Fix a post-RA scheduling dependency bug.
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
show more ...
|
#
e0aa0d67 |
| 18-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
BasicAliasAnalysis and FunctionAttrs were both 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 ver
BasicAliasAnalysis and FunctionAttrs were both 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
show more ...
|
#
1b94d420 |
| 18-Jan-2009 |
Gabor Greif <ggreif@gmail.com> |
add a comment
llvm-svn: 62436
|
#
dc020f9c |
| 12-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
Rename getABITypeSize to getTypePaddedSize, as suggested by Chris.
llvm-svn: 62099
|
#
2089cd09 |
| 12-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
make tblgen autogenerate the nocapture intrinsics for llvm.memcpy/memset/memmove. This allows removal of some hackish code from basicaa.
llvm-svn: 62071
|
#
8d65f369 |
| 05-Jan-2009 |
Duncan Sands <baldrick@free.fr> |
When checking if an Argument escapes, check if the argument is marked nocapture - no need to analyze the argument if the answer is already known!
llvm-svn: 61753
|
#
2abb108f |
| 19-Dec-2008 |
Nick Lewycky <nicholas@mxc.ca> |
Resubmit support for the 'nocapture' attribute.
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) wit
Resubmit support for the 'nocapture' attribute.
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
show more ...
|
#
a397baea |
| 16-Dec-2008 |
Bill Wendling <isanbard@gmail.com> |
Temporarily revert r61019, r61030, and r61040. These were breaking LLVM Release builds.
llvm-svn: 61094
|
#
e3401db1 |
| 15-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Teach basicaa to use the nocapture attribute when possible. When the intrinsics are properly marked nocapture, the fixme should be addressed.
llvm-svn: 61040
|
#
2e84a548 |
| 10-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Allow basicaa to walk through geps with identical indices in 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 allow
Allow basicaa to walk through geps with identical indices in 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
show more ...
|
#
702e46ed |
| 09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Teach BasicAA::getModRefInfo(CallSite, CallSite) some tricks based on readnone/readonly functions.
Teach memdep to look past readonly calls when analyzing deps for a readonly call. This allows eli
Teach BasicAA::getModRefInfo(CallSite, CallSite) some 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
show more ...
|
#
714ffa36 |
| 08-Dec-2008 |
Duncan Sands <baldrick@free.fr> |
Fix comment typo.
llvm-svn: 60697
|
#
2f9d8458 |
| 08-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Some minor optimizations for isObjectSmallerThan.
llvm-svn: 60687
|
#
d59572cb |
| 24-Nov-2008 |
Nick Lewycky <nicholas@mxc.ca> |
Seriously strengthen the guarantee offered by noalias on a function's return value. It must now be as if the pointer were allocated and has not escaped to the caller. Thanks to Dan Gohman for pointin
Seriously strengthen the guarantee offered by noalias on a function's return value. It must now be as if the pointer were allocated and has not escaped to the caller. Thanks to Dan Gohman for pointing out the error in the original and helping devise this definition.
llvm-svn: 59940
show more ...
|
#
f5ffcbcd |
| 24-Nov-2008 |
Nick Lewycky <nicholas@mxc.ca> |
Extend the 'noalias' attribute to function return values. This is intended to indicate functions that allocate, such as operator new, or list::insert. The actual definition is slightly less strict (f
Extend the 'noalias' attribute to function return values. This is intended to indicate functions that allocate, such as operator new, or list::insert. The actual definition is slightly less strict (for now).
No changes to the bitcode reader/writer, asm printer or verifier were needed.
llvm-svn: 59934
show more ...
|
Revision tags: llvmorg-2.4.0 |
|
#
d65a4dae |
| 01-Oct-2008 |
Duncan Sands <baldrick@free.fr> |
Factorize code: remove variants of "strip off pointer bitcasts and GEP's", and centralize the logic in Value::getUnderlyingObject. The difference with stripPointerCasts is that stripPointerCasts onl
Factorize code: remove variants of "strip off pointer bitcasts and GEP's", and centralize the logic in Value::getUnderlyingObject. The difference with stripPointerCasts is that stripPointerCasts only strips GEPs if all indices are zero, while getUnderlyingObject strips GEPs no matter what the indices are.
llvm-svn: 56922
show more ...
|