b414142036012dd9432c4e8c5fef09d4d49fcc22 |
|
14-Oct-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Enhance the memdep interface so that users can tell the difference between a dependency which cannot be calculated and a path reaching the entry point of the function. This patch introduces isNonFuncLocal, which replaces isUnknown in some cases. Patch by Xiaoyi Guo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141896 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
667ccf231b57857ea9e36f1d93bd895242d58284 |
|
15-Aug-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Misc analysis passes that need to be aware of atomic load/store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137650 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
db125cfaf57cc83e7dd7453de2d509bc8efd0e5e |
|
18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
land David Blaikie's patch to de-constify Type, with a few tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
992205ac71e214562beffd1e84716f0f7ccb3bd9 |
|
16-Jun-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Add a limit to the number of instructions memdep will scan in a single block. This prevents (at least in some cases) O(N^2) runtime in passes like DSE. The limit in this patch is probably too high, but it is enough to stop DSE from going completely insane on a testcase I have (which has a single block with around 50,000 non-aliasing stores in it). rdar://9471075 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
a990e071f2f29ba326b97a4288207a2c406c5b66 |
|
15-Jun-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Add "unknown" results for memdep, which mean "I don't know whether a dependence for the given instruction exists in the given block". This cleans up all the existing hacks in memdep which represent this concept by returning clobber with various unrelated instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
a3351a0e5db0b5b2c53920f2f15d3e862fecfad3 |
|
04-Jun-2011 |
Dan Gohman <gohman@apple.com> |
Disable the main feature of 130180, the elimination of loads that are redundant with partially-aliasing loads. When computing what portion of a clobbering load value is needed, it doesn't consider phi-translation which may have occurred between the clobbing load and the redundant load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7c6a5a2c397bb3759ed5df80a2ff9a4fdf17675a |
|
02-Jun-2011 |
Eli Friedman <eli.friedman@gmail.com> |
When marking a block as being unanalyzable, use "Clobber" on the terminator instead of the first instruction in the block. This is a bit of a hack; "Clobber" isn't really the right marking in the first place. memdep doesn't really have any way of properly expressing "unanalyzable" at the moment. Using it on the terminator is much less ambiguous than using it on an arbitrary instruction, though. In the given testcase, the "Clobber" was pointing to a load, and GVN was incorrectly assuming that meant that the "Clobber" load overlapped the load being analyzed (when they are actually unrelated). The included testcase tests both this commit and r132434. Part two of rdar://9429882. (r132434 was mislabeled.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132442 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
fc09797426894602355d248edb174676ec7fd560 |
|
02-Jun-2011 |
Eli Friedman <eli.friedman@gmail.com> |
In MemoryDependenceAnalysis::getNonLocalPointerDepFromBB, if a given block is is deemed unanalyzable (and we execute one of the "goto PredTranslationFailure" statements), make sure we don't put information about the predecessors of that block into the returned data structures; this can lead to, among other things, extraneous results (which will confuse passes using memdep). Fixes an assert in GVN compiling ruby. Part of rdar://problem/9521954 . Testcase coming up soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
e1edb17bc3c606dd2e9c4e1b55da8e13817e5e09 |
|
17-May-2011 |
Owen Anderson <resistor@mac.com> |
@llvm.lifetime.begin acts as a load, not @llvm.lifetime.end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131437 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4034e14985af013f71f7884fa275415a3be27778 |
|
28-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
teach GVN to widen integer loads when they are overaligned, when doing an wider load would allow elimination of subsequent loads, and when the wider load is still a native integer type. This eliminates a ton of loads on various benchmarks involving struct fields, though it is somewhat hobbled by clang not being very aggressive about field alignment. This is yet another step along the way towards resolving PR6627. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130390 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
cb5fd743a95898ddefd75b6d104f5e91c0d50b23 |
|
27-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
Enhance memdep to return clobber relation between noalias loads when an earlier load could be widened to encompass a later load. For example, if we see: X = load i8* P, align 4 Y = load i8* (P+3), align 1 and we have a 32-bit native integer type, we can widen the former load to i32 which then makes the second load redundant. GVN can't actually do anything with this load/load relation yet, so this isn't testable, but it is the next step to resolving PR6627, and a fairly general class of "merge neighboring loads" missed optimizations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d5c7f7cb5e15a7382cd163cb191db898510226c8 |
|
26-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
use AA::isMustAlias to simplify some calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
130131ea7871c8774e79116f5c845fff37f143c5 |
|
26-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
remove support for llvm.invariant.end from memdep. It is a work-in-progress that is not progressing, and it has issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130247 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1f821512fc1441480b3355305e0da5267073fe1c |
|
26-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
Enhance MemDep: When alias analysis returns a partial alias result, return it as a clobber. This allows GVN to do smart things. Enhance GVN to be smart about the case when a small load is clobbered by a larger overlapping load. In this case, forward the value. This allows us to compile stuff like this: int test(void *P) { int tmp = *(unsigned int*)P; return tmp+*((unsigned char*)P+1); } into: _test: ## @test movl (%rdi), %ecx movzbl %ch, %eax addl %ecx, %eax ret which has one load. We already handled the case where the smaller load was from a must-aliased base pointer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130180 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
bd1801b5553c8be3960255a92738464e0010b6f6 |
|
24-Jan-2011 |
Dan Gohman <gohman@apple.com> |
Give GetUnderlyingObject a TargetData, to keep it in sync with BasicAA's DecomposeGEPExpression, which recently began using a TargetData. This fixes PR8968, though the testcase is awkward to reduce. Also, update several off GetUnderlyingObject's users which happen to have a TargetData handy to pass it in. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f7624bc6dd57d5b4deea7c336c3e3aec67f38c9b |
|
11-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert r123207: "Turn on memdep's verifyRemoved() in an attempt to smoke out the cause of our gcc bootstrap miscompare." It didn't. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123215 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
121704d738f9de8aaf04b144dcf493130fbfee3d |
|
11-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Turn on memdep's verifyRemoved() in an attempt to smoke out the cause of our gcc bootstrap miscompare. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123207 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8e68c3873549ca31533e2e3e40dda3a43cb79566 |
|
23-Dec-2010 |
Jeffrey Yasskin <jyasskin@google.com> |
Change all self assignments X=X to (void)X, so that we can turn on a new gcc warning that complains on self-assignments and self-initializations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122458 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5034dd318a9dfa0dc45a3ac01e58e60f2aa2498d |
|
15-Dec-2010 |
Dan Gohman <gohman@apple.com> |
Move Value::getUnderlyingObject to be a standalone function so that it can live in Analysis instead of VMCore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
2cd195291722ad0153125a6c032c96e361d8c48e |
|
13-Dec-2010 |
Dan Gohman <gohman@apple.com> |
Update memdep to handle PartialAlias as MayAlias. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121723 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
12bf43bc4f86602a5677d5e1662cb4e40562351b |
|
30-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
strength reduce this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120381 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
dd061b28548434579e8547aa7aed83f78741ae6f |
|
21-Nov-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Initialize MemDep's TD member so buildbots don't trip over an uninitialized pointer (TD is passed to PHITransAddr). I wonder why this didn't explode earlier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f6f1f062cc8029aa75ca7d0e99fbc1e0b453d07e |
|
21-Nov-2010 |
Chris Lattner <sabre@nondot.org> |
implement PR8576, deleting dead stores with intervening may-alias stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6d8eb156e6be727570b300bac7712f745a318c7d |
|
11-Nov-2010 |
Dan Gohman <gohman@apple.com> |
Add helper functions for computing the Location of load, store, and vaarg instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118845 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8a66a202f6c110273a7570b77e0b8bcb660fd92f |
|
11-Nov-2010 |
Dan Gohman <gohman@apple.com> |
It's not necessary to clear out the Size and TBAATag at each of these points. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
ec9b4ac914e91791c580148cf8068c82d4b2cb91 |
|
11-Nov-2010 |
Dan Gohman <gohman@apple.com> |
Set NonLocalDepInfo's Size field to UnknownSize when invalidating it, so that it doesn't appear to be a known size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118748 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
2365f08c7dfd039ef325d8cb4621b40fc5bd605f |
|
10-Nov-2010 |
Dan Gohman <gohman@apple.com> |
When clearing a non-local pointer dependency cache entry, clear the reverse map too. This fixes seflhost build errors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118729 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
533c2ad360eaaab2a0a25dab5a99255256b84814 |
|
10-Nov-2010 |
Dan Gohman <gohman@apple.com> |
Factor out the code for computing an AliasAnalysis::Location for a given instruction into a helper function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118723 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
733c54da1e5432d9d64f88ea960121fa7a16076a |
|
10-Nov-2010 |
Dan Gohman <gohman@apple.com> |
Fully invalidate cached results when a prior query's size or type is insufficient for, or incompatible with, the current query. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
075fb5d68fcb55d26e44c48f07dfdbbfa21ccb2a |
|
10-Nov-2010 |
Dan Gohman <gohman@apple.com> |
Enhance GVN to do more precise alias queries for non-local memory references. For example, this allows gvn to eliminate the load in this example: void foo(int n, int* p, int *q) { p[0] = 0; p[1] = 1; if (n) { *q = p[0]; } } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
cd5c123a1d8723dbd5d493210c0a56890bffe409 |
|
29-Oct-2010 |
Dan Gohman <gohman@apple.com> |
Teach memdep to use pointsToConstantMemory to determine that loads from constant memory don't alias any stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117636 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
081c34b725980f995be9080eaec24cd3dfaaf065 |
|
19-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
2ab36d350293c77fc8941ce1023e4899df7e3a82 |
|
12-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Begin adding static dependence information to passes, which will allow us to perform initialization without static constructors AND without explicit initialization by the client. For the moment, passes are required to initialize both their (potential) dependencies and any passes they preserve. I hope to be able to relax the latter requirement in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
ce665bd2e2b581ab0858d1afe359192bac96b868 |
|
08-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Now with fewer extraneous semicolons! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
c1ac0d7623f4f2047b4ab86bd5a60a9e19432b38 |
|
22-Sep-2010 |
Dan Gohman <gohman@apple.com> |
Teach memdep about TBAA tags. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114588 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
09981982f13085d5e7fd5fb8f87b4a626d770c5f |
|
06-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
cleanup some of the lifetime/invariant marker stuff, add a big fixme. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
c5a5cf26fd4ea1050e8ed18b7c8b02b3f7f16d19 |
|
06-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
speed up -gvn 3.4% on the testcase in PR7023 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
90c579de5a383cee278acc3f7e7b9d0a656e6a35 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Reapply r110396, with fixes to appease the Linux buildbot gods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1f74590e9d1b9cf0f1f81a156efea73f76546e05 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Revert r110396 to fix buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9ccaf53ada99c63737547c0235baeb8454b04e80 |
|
06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static ID member as the sole unique type identifier. Clean up APIs related to this change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5fa417c7904f7394d4e6dcb86e366c86867bcb5a |
|
06-Aug-2010 |
Dan Gohman <gohman@apple.com> |
Fix memdep's code for reasoning about dependences between two calls. A Ref response from getModRefInfo is not useful here. Instead, check for identical calls only in the NoModRef case. Reapply r110270, and strengthen it to compensate for the memdep changes. When both calls are readonly, there is no dependence between them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110382 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
847a84efd23a2c7d90429b82f6e0f19d1f913d9a |
|
03-Aug-2010 |
Dan Gohman <gohman@apple.com> |
Add a convenient form of AliasAnalysis::alias for the case where the sizes are unknown. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110090 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
b344a346f1431bc942f96d0e0b8b87ee8f1b0475 |
|
28-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
reintroduce original (asserting) semantics of CallSite(Instruction *II) add instead a CallSite(Value* V) constructor that is consistent with ImmutableCallSize and use that one in client code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109553 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
622b7cf147f9231a1d6e3aac81a2dd1b6047b26c |
|
28-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
recommit simplification (originally r109504, backed out in r109508) now that problem in CallSiteBase is fixed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109547 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
49d0bca86c5e97613703f32e401cefd5745a8fce |
|
27-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r109504, breaks the bots git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109508 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
c0d4aed6f755a273b4e3bb61114f31b5b6c8fee8 |
|
27-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
simplify git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109504 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d13db2c59cc94162d6cf0a04187d408bfef6d4a7 |
|
22-Jul-2010 |
Owen Anderson <resistor@mac.com> |
Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8ff72b534436a1f4f221ddb21cf0d22c5b09769c |
|
24-Jun-2010 |
Gabor Greif <ggreif@gmail.com> |
use the new isFreeCall API and ArgOperand accessors git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106692 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
fe60104ac97f3a8736dcfbfdf9547c7b7cc7b951 |
|
22-Jun-2010 |
Dan Gohman <gohman@apple.com> |
Use pre-increment instead of post-increment when the result is not used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
551754c4958086cc6910da7c950f2875e212f5cf |
|
17-Apr-2010 |
Eric Christopher <echristo@apple.com> |
Revert 101465, it broke internal OpenGL testing. Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4ec2258ffb495d7ce00177e447740ef1123a27db |
|
16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101434 with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101465 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
607a7ab3da72a2eb53553a520507cbb8068dd1d8 |
|
16-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101423 and r101397, they break llvm-gcc self-host on darwin10 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
2ff961f66816daab8bbc58a19025161d969821c2 |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
reapply r101364, which has been backed out in r101368 with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9ee17208115482441953127615231c59a2f4d052 |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
back out r101364, as it trips the linux nightlybot on some clang C++ tests git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
165dac08d1bb8428b32a5f39cdd3dbee2888987f |
|
15-Apr-2010 |
Gabor Greif <ggreif@gmail.com> |
rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6d8f2ca646bc283c31f48b6816d5194c836dfec6 |
|
24-Feb-2010 |
Daniel Dunbar <daniel@zuster.org> |
Reapply r97010, the speculative revert failed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97036 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8c0c99016b4348bf9cc294a0f2dd60a219d4506c |
|
24-Feb-2010 |
Daniel Dunbar <daniel@zuster.org> |
Speculatively revert r97010, "Add an argument to PHITranslateValue to specify the DominatorTree. ...", in hopes of restoring poor old PPC bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97027 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9d2ed8e632b71914b2a668932f4f49b87c3ca0b1 |
|
24-Feb-2010 |
Bob Wilson <bob.wilson@apple.com> |
Add an argument to PHITranslateValue to specify the DominatorTree. If this argument is non-null, pass it along to PHITranslateSubExpr so that it can prefer using existing values that dominate the PredBB, instead of just blindly picking the first equivalent value that it finds on a uselist. Also when the DominatorTree is specified, have PHITranslateValue filter out any result that does not dominate the PredBB. This is basically just refactoring the check that used to be in GetAvailablePHITranslatedSubExpr and also in GVN. Despite my initial expectations, this change does not affect the results of GVN for any testcases that I could find, but it should help compile time. Before this change, if PHITranslateSubExpr picked a value that does not dominate, PHITranslateWithInsertion would then insert a new value, which GVN would later determine to be redundant and would replace. By picking a good value to begin with, we save GVN the extra work of inserting and then replacing a new value. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
484d4a30c055eef3101d01a7a468db3413dd20d3 |
|
16-Feb-2010 |
Bob Wilson <bob.wilson@apple.com> |
Split critical edges as needed for load PRE. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96378 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1df9859c40492511b8aa4321eb76496005d3b75b |
|
16-Feb-2010 |
Duncan Sands <baldrick@free.fr> |
There are two ways of checking for a given type, for example isa<PointerType>(T) and T->isPointerTy(). Convert most instances of the first form to the second form. Requested by Chris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0ee443d169786017d151034b8bd34225bc144c98 |
|
22-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
The phi translated pointer can be computed when returning a partially cached result instead of stored. This reduces memdep memory usage, and also eliminates a bunch of weakvh's. This speeds up gvn on gcc.c-torture/20001226-1.c from 23.9s to 8.45s (2.8x) on a different machine than earlier. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9b96ecaffa38a21eaca81c51153475152f44d8a7 |
|
22-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
avoid calling extractMallocCall when it's obvious we don't have a call. This speeds up memdep ~1.5% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91869 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f648125be9385a0d4abfd5e77ea3dd40694c4c07 |
|
19-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
fix an overly conservative caching issue that caused memdep to cache a pointer as being unavailable due to phi trans in the wrong place. This would cause later queries to fail even when they didn't involve phi trans. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91787 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
dad451cb7c6b94b3af40f59271e24357616a05a9 |
|
09-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
enhance NonLocalDepEntry to keep the per-block phi translated address of the query. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
e18b97121c286eeff5efe89150b093bf1b7b7bfc |
|
09-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
change NonLocalDepEntry from being a typedef for an std::pair to be its own small class. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
05e15f8897bd949f9d4bce073d53ed3256c71e2b |
|
09-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
Switch GVN and memdep to use PHITransAddr, which correctly handles 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90926 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
93d3311d1f0169c456b6176a69b45d79533c75e2 |
|
05-Dec-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Fix indentation in switch statement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90650 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0fea11a8055d179655b9d862f0b2acb93a728114 |
|
02-Dec-2009 |
Benjamin Kramer <benny.kra@googlemail.com> |
Silence compiler warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90319 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9ff5a23186f8761d9e5b4b5adf6fae9ce7d63860 |
|
02-Dec-2009 |
Owen Anderson <resistor@mac.com> |
Cleanup/remove some parts of the lifetime region handling code in memdep and GVN, per Chris' comments. Adjust testcases to match. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90304 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1e8de49fe729db17f267a35c89eb6b4ae90e834f |
|
01-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
rename some variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1ffb70f21d109c01f81e34feb5e134ea1bcaf551 |
|
01-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
tidy git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
855d9da596062b5742a27d9d96c38528120f391b |
|
01-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
fix 255.vortex again, third time's the charm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f58e86d762ac469df7c7267a54cf556badc56031 |
|
30-Nov-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Revert r90107, fixing test/Transforms/GVN/2009-11-29-ReverseMap.ll and the llvm-gcc build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
366429b400c9ec41fbba7c24ed7d0a100e421136 |
|
30-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
reapply r90093 with an addition of keeping the forward and reverse nonlocal memdep maps in synch, this should fix 255.vortex. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
ae3d24880de538cc4a607c896ead6197f18f222c |
|
29-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
revert this patch for now, it causes failures of: LLVM::Transforms/GVN/2009-02-17-LoadPRECrash.ll LLVM::Transforms/GVN/2009-06-17-InvalidPRE.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90096 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1903d97c2c5ab2e67ffc7f5d6d817266d51a676d |
|
29-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
Fix a really nasty caching bug I introduced in memdep. An entry 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
2eac9493fc68f9df248f1a615413be1d2016b4d6 |
|
29-Nov-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Detabify. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90085 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d801c10de6cd1760f0994452c0e78156782d9fca |
|
28-Nov-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Teach memdep to look for memory use intrinsics during dependency queries. Fixes PR5574. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
dd696052f0e4ecc973d105be19cf1b4b72f9a0c4 |
|
28-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
Enhance InsertPHITranslatedPointer to be able to return a list of newly inserted instructions. No functionality change until someone starts using it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90039 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
af7a28939eb72258fef61398b53b4f3a24c1541f |
|
28-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
enable code to handle un-phi-translatable cases more aggressively: 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90037 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6f7b210b2577fbc9247a9fc5223655390008ae89 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
Rework InsertPHITranslatedPointer to handle the recursive case, this fixes PR5630 and sets the stage for the next phase of goodness (testcase pending). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90019 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5141421e38a6b4113177ef30cfd52de58ec9dced |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
recursively phi translate bitcast operands too, for consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
11c6bab704a0f82f59dcb2f409f7d6ac3b1821f1 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
add support for recursive phi translation and phi 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9763487bd50bd9927c8bbdcc84e4f7d59b8d9cdf |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
add comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
e95035aea481f70a6ea9183a7e133f8e9a98e073 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
reduce nesting, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90001 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
616613d7a4ddc7cefce53b2bfe3fdcdec6b032c2 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
teach GVN's load PRE to insert computations of the address in predecessors where it is not available. It's unclear how to get this inserted computation into GVN's scalar availability sets, Owen, help? :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
62deff066c5ee4474be80ed2d95aca010e237343 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
Fix phi translation in load PRE to agree with the phi translation done by memdep, and reenable gep translation again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89992 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
b99be5beac847a92a56af21131da56a94b194bf2 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
redisable this, my bootstrap worked because it wasn't an optimized build, whoops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89991 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
cca130bb66a927b82fd030d60d1e8048898d1624 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
try again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
518c988ae99273c06e12d0e581cc06806fa72ed2 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
this is causing buildbot failures, disable for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
e19e4baf3b4f145fad122de7e6a02ed3a68bc082 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
teach phi translation of GEPs to simplify geps like 'gep x, 0'. 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89981 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
304076268a342b2b15e1af2e678d101af3165f4c |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
teach memdep to do trivial PHI translation of GEPs. More to come. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
cc3d0eb483d17154fe00f68726c097546b7c9352 |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
Teach memdep to phi translate bitcasts. This allows us to compile 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
dc59311c5c1fef7788f58096c6f417df2b5b72df |
|
27-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
factor some code out into some helper functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f27f115ef5d62b9dccfb0201da0008a8b8914cd3 |
|
22-Nov-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove dead code. While there, also turn a few 'T* ' into 'T *' to match the rest of the file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89577 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
b62f792e78df12a43029352eb4c7cde9d456c67e |
|
28-Oct-2009 |
Owen Anderson <resistor@mac.com> |
Treat lifetime begin/end markers as allocations/frees respectively for the purposes for GVN/DSE. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85383 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
a85a66423d966bf6210daf9587dba7ec1ff8d64e |
|
28-Oct-2009 |
Owen Anderson <resistor@mac.com> |
Be more careful about invariance reasoning on "store" queries. Stores still need to depend on Ref and ModRef calls within the invariant region. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4bc737c5ef120e27834b92a86939331f370ba49c |
|
28-Oct-2009 |
Owen Anderson <resistor@mac.com> |
Add trivial support for the invariance intrinsics to memdep. This logic is purely local for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85378 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f006b183e2d2bebcf6968d1dd7350397c95b0325 |
|
27-Oct-2009 |
Victor Hernandez <vhernandez@apple.com> |
Rename MallocFreeHelper as MemoryBuiltins git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85286 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f2becca90b832cc02345fba063b9b439b2be33ad |
|
27-Oct-2009 |
Victor Hernandez <vhernandez@apple.com> |
Rename MallocHelper as MallocFreeHelper, since it now also identifies calls to free() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
046e78ce55a7c3d82b7b6758d2d77f2d99f970bf |
|
27-Oct-2009 |
Victor Hernandez <vhernandez@apple.com> |
Remove FreeInst. Remove LowerAllocations pass. Update some more passes to treate free calls just like they were treating FreeInst. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85176 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
66284e063a1e46500acae48bdc0e4a00652021d1 |
|
24-Oct-2009 |
Victor Hernandez <vhernandez@apple.com> |
Auto-upgrade free instructions to calls to the builtin free function. 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84987 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7b929dad59785f62a66f7c58615082f98441e95e |
|
23-Oct-2009 |
Victor Hernandez <vhernandez@apple.com> |
Remove AllocationInst. Since MallocInst went away, AllocaInst is the only subclass of AllocationInst, so it no longer is necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84969 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5c78736f85579aa6de38cba2742ea13ff9f79e70 |
|
13-Oct-2009 |
Victor Hernandez <vhernandez@apple.com> |
Memory dependence analysis was incorrectly stopping to scan for stores to a pointer at bitcast uses of a malloc call. It should continue scanning until the malloc call, and this patch fixes that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83931 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
66364346e01601b3bcc97c707c030595ff6b60ec |
|
21-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
Revert r82404, it is causing a bootstrap miscompile. This is very very scary, as it indicates a lurking bug. yay. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
386251341fb6d7e08b9cd8e87e90dee5512ea9bf |
|
20-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
improve memdep to eliminate bitcasts (and aliases, and noop geps) early for the stated reasons: this allows it to find more equivalences and depend less on code layout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82404 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
46e8312fb733338e9af4db3757a1a8beddeae15a |
|
18-Sep-2009 |
Victor Hernandez <vhernandez@apple.com> |
Enhance analysis passes so that they apply the same analysis to malloc calls as to MallocInst. Reviewed by Eli Friedman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82281 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f581213bfb3c35c4cf6a2ec85f15ad27bf1bc95d |
|
31-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Make TargetData optional in MemoryDependenceAnalysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77727 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
cc726599ae7d44ad962696f523eb91675d338b96 |
|
31-Jul-2009 |
Dan Gohman <gohman@apple.com> |
Remove an unnecessary header. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
a2f55dd388e1fb33b553a5862bca0fe4bd4b781e |
|
13-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
factor the 'optimized sort' code out into a static helper function and use it from one more place. Patch by Jakub Staszak! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75478 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6fbc1969e94cb00c82ab84e1dfe243e7388d3b1b |
|
13-Jul-2009 |
Chris Lattner <sabre@nondot.org> |
Move the re-sort of invalidated NonLocalPointerDeps cache earlier 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75476 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
ab9cf1282baf559771183304ffc9959882e17ebb |
|
25-May-2009 |
Chris Lattner <sabre@nondot.org> |
make memdep use the getModRefInfo method for stores instead of the low-level alias() method, allowing it to reason more aggressively about pointers into constant memory. PR4189 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72403 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6a0dcc10778468b1556474aa43d4a86a14ab15d7 |
|
29-Mar-2009 |
Chris Lattner <sabre@nondot.org> |
now that you can put a PointerIntPair in a SmallPtrSet, remove some hackish workarounds from memdep git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67971 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
497cb6fd4c9505f49842edd3f754f967b5fd9401 |
|
11-Mar-2009 |
Dale Johannesen <dalej@apple.com> |
Debug intriniscs should be skipped when looking for a dependency, not terminate the search. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66709 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f6cec85a4b40094fc8fd5182d88cd01e92f12444 |
|
09-Mar-2009 |
Owen Anderson <resistor@mac.com> |
Ignore debug intrinsics when computing dependences. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7157228a58fe0025488130548680cf645e14f068 |
|
06-Mar-2009 |
Zhou Sheng <zhousheng00@gmail.com> |
Remove this as dbginfo intrinsics has been defined as IntrNoMem. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9b89f0de1220f0932c6a8b5c0a5c7f45176d3c24 |
|
05-Mar-2009 |
Zhou Sheng <zhousheng00@gmail.com> |
Ignore the debug info intrinsics when looking for dependency through basic block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
95900f2dda0d573b927a54910386130b779a48ff |
|
23-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
fix two more cases where we could let the NLPDI cache get unsorted. With this, sqlite3 now passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62839 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4433a09b9fbe0de4483d3d49c0462e2b9a839851 |
|
23-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Unconditionally reset 'cache' to zero, even if we don't need to resort it. This avoids using a dangling pointer. Reset NumSortedEntries after restoring Cache to avoid extraneous sorts. This fixes the reduced sqlite3 testcase, but apparently not the whole app. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62838 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
b54bfc2636111f74b0d33b62f0c6d30130164cfb |
|
23-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
a minor tweak to my previous patch, handle the invalidation case when there are multiple iterations of the loop. This fixes PR3375. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62822 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
12a7db383090dd21b1f8488be330a274cffaff3c |
|
22-Jan-2009 |
Chris Lattner <sabre@nondot.org> |
Fix PR3358, a really nasty bug where recursive phi translated analyses could be run without the caches properly sorted. This can fix all sorts of weirdness. Many thanks to Bill for coming up with the 'issorted' verification idea. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f478951b0eeed2f8a9e39254f65458c9325dab91 |
|
16-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
fix PR3217: fully cached queries need to be verified against the visited set before they are used. If used, their blocks need to be added to the visited set so that subsequent queries don't use conflicting pointer values in the cache result blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61080 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
3af23f8aba9ac28fe5a8646f57c2c307a35c1e4d |
|
15-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
if we have a phi translation failure of the start block, return *just* a clobber of the start block, not other random stuff as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9e59c64c14cfe55e7cc9086c6bff8cfeecac361e |
|
15-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Implement initial support for PHI translation in memdep. This means that memdep keeps track of how PHIs affect the pointer in dep queries, which allows it to eliminate the load in cases like rle-phi-translate.ll, which basically end up being: BB1: X = load P br BB3 BB2: Y = load Q br BB3 BB3: R = phi [P] [Q] load R turning "load R" into a phi of X/Y. In addition to additional exposed opportunities, this makes memdep safe in many cases that it wasn't before (which is required for load PRE) and also makes it substantially more efficient. For example, consider: bb1: // has many predecessors. P = some_operator() load P In this example, previously memdep would scan all the predecessors of BB1 to see if they had something that would mustalias P. In some cases (e.g. test/Transforms/GVN/rle-must-alias.ll) it would actually find them and end up eliminating something. In many other cases though, it would scan and not find anything useful. MemDep now stops at a block if the pointer is defined in that block and cannot be phi translated to predecessors. This causes it to miss the (rare) cases like rle-must-alias.ll, but makes it faster by not scanning tons of stuff that is unlikely to be useful. For example, this speeds up GVN as a whole from 3.928s to 2.448s (60%)!. IMO, scalar GVN should be enhanced to simplify the rle-must-alias pointer base anyway, which would allow the loads to be eliminated. In the future, this should be enhanced to phi translate through geps and bitcasts as well (as indicated by FIXMEs) making memdep even more powerful. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7050f3d5ecf3f4f16f31df16e58d2d064b02624d |
|
10-Dec-2008 |
Duncan Sands <baldrick@free.fr> |
Don't dereference the end() iterator. This was causing a bunch of failures when running "make ENABLE_EXPENSIVE_CHECKS=1 check". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5a45bf1b48cd3d23faa3dfc27b8866bb536c4b9e |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
loosen up an assertion that isn't valid when called from invalidateCachedPointerInfo. Thanks to Bill for sending me a testcase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
bc99be10b815e0bfc5102bd5746e9a80feebf6f4 |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Teach GVN to invalidate some memdep information when it does an RAUW of a pointer. This allows is to catch more equivalencies. For example, the type_lists_compatible_p function used to require two iterations of the gvn pass (!) to delete its 18 redundant loads because the first pass would CSE all the addressing computation cruft, which would unblock the second memdep/gvn passes from recognizing them. This change allows memdep/gvn to catch all 18 when run just once on the function (as is typical :) instead of just 3. On all of 403.gcc, this bumps up the # reundandancies found from: 63 gvn - Number of instructions PRE'd 153991 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted to: 63 gvn - Number of instructions PRE'd 154137 gvn - Number of instructions deleted 50185 gvn - Number of loads deleted +120 loads deleted isn't bad. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
20d6f0982ad33818cfa141f80157ac13e36d5550 |
|
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 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
3579e44bf33ed34f8b498834bfb40e407082bf31 |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Fix a fixme: allow memdep to see past read-only calls when doing load dependence queries. This allows GVN to eliminate a few more instructions on 403.gcc: 152598 gvn - Number of instructions deleted 49240 gvn - Number of loads deleted after: 153986 gvn - Number of instructions deleted 50069 gvn - Number of loads deleted git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60786 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1559b3625be7b80bee6b066af4b91b9d10dfb5fa |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
rename getNonLocalDependency -> getNonLocalCallDependency, and remove pointer stuff from it, simplifying the code a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9f1e12a2f281bc16770999caf15489dd7285824f |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
fix typos gabor noticed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60754 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6563371bad878cb9737970fea6162044a0370df8 |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
restructure the top level non-local ptr dep query to handle the first block of a query specially. This makes the "complete query caching" subsystem more effective, avoiding predecessor queries. This speeds up GVN another 4%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60752 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9863c3f507913f17de0fd707e27fde9dc35f6ca6 |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
rename getNonLocalPointerDepInternal -> getNonLocalPointerDepFromBB and split its inner loop out into a new GetNonLocalInfoForBlock function. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
ba4dacc8752f1af5ca7a153cfeae4d6e4f78ba8f |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
if we have two elements, insert both, don't use std::sort. This speeds up the new GVN by another 3% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60747 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1aeadacdadc8c44821300fea01445a2fb39e0420 |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
If we're only adding one new element to 'Cache', insert it into its known position instead of using a full sort. This speeds up GVN by ~4% with the new memdep stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
511b36c00f3fbe80770e0bbbfe8ed2f266148d65 |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
convert a couple other places that use pred_iterator to use the caching pred iterator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4012fdda13710d21b415a79475adc2bbb6628527 |
|
09-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
use hte new pred cache to speed up the new non-local memdep queries. This speeds up GVN using the new queries (not yet checked in) by just over 10%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
11dcd8d38de031c34380fd6ab7a0daacdefb263a |
|
08-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
add another level of caching for non-local pointer queries, keeping track of whether the CachedNonLocalPointerInfo for a block is specific to a block. If so, just return it without any pred scanning. This is good for a 6% speedup on GVN (when it uses this lookup method, which it doesn't right now). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
3f7eb5b795f933aecf0e0f1fea646c516f6dc1c5 |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
add an assert. the cast<> below would catch this but a message is more useful. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0655f73ef7e423a7802f2056b473a1f1caa3996d |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
factor some code better. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60673 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d44745d24175079f0675c6199ab9929d19edd1aa |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
factor some code, fixing some fixme's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6290f5cac23399201f8785e5ca8b305e42a1342c |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
add support for caching pointer dependence queries. Nothing uses this yet so it "can't" break anything. That said, it does appear to work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60654 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9a193fd8ae630478123938e12b56f84c5b2227b9 |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Some internal refactoring to make it easier to cache results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60650 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7ebcf0324668b7c6ba48832d5d8df95689a8d837 |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Introduce a new MemDep::getNonLocalPointerDependency method. This will eventually take over load/store dep queries from getNonLocalDependency. For now it works fine, but is incredibly slow because it does no caching. Lets not switch GVN to use it until that is fixed :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
e79be944c8ced0a0cb80ede8cb9f97e4fdc6778f |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
push the "pointer case" up the analysis stack a bit. This causes duplication of logic (in 2 places) to determine what pointer a load/store touches. This will be addressed in a future commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60648 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d8dd934d16d1190881d45b065daec4a1ba82133f |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
make clients have to know how to call getCallSiteDependencyFrom instead of making getDependencyFrom do it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
106c6ca7b0d1ffc28c832edd6f697bf4de55dbcd |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
rename some variables for consistency git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60644 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
fbc72e3e610dbc511736696e0e3ccc03dbcae142 |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
I love how using out of scope variables is not an error with GCC, no really I do. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8ef57c5faf77890828ac439482420646b2a0beb8 |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Rename getCallSiteDependency -> getCallSiteDependencyFrom to emphasize the scanning and make it more similar to getDependencyFrom git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60642 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
745291a6ce841f30a8a9e536071bd1b4cf540c55 |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
a memdep query on a volatile load/store will always return clobber with the current implementation. Instead of returning a "precise clobber" just return a fuzzy one. This doesn't matter to any clients anyway and should speed up analysis time very very slightly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60641 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
84b9a56d11c119d2eadbc2ff4d56d33c25a07460 |
|
07-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
remove the ability to get memdep info for vaarg. I don't think the original impl was correct and noone actually makes the query anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60639 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
b51deb929ca95ce62e622b0475a05d83f26ab04d |
|
05-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Make a few major changes to memdep and its clients: 1. Merge the 'None' result into 'Normal', making loads and stores return their dependencies on allocations as Normal. 2. Split the 'Normal' result into 'Clobber' and 'Def' to distinguish between the cases when memdep knows the value is produced from when we just know if may be changed. 3. Move some of the logic for determining whether readonly calls are CSEs into memdep instead of it being in GVN. This still leaves verification that the arguments are hte same to GVN to let it know about value equivalences in different contexts. 4. Change memdep's call/call dependency analysis to use getModRefInfo(CallSite,CallSite) instead of doing something very weak. This only really matters for things like DSA, but someday maybe we'll have some other decent context sensitive analyses :) 5. This reimplements the guts of memdep to handle the new results. 6. This simplifies GVN significantly: a) readonly call CSE is slightly simpler b) I eliminated the "getDependencyFrom" chaining for load elimination and load CSE doesn't have to worry about volatile (they are always clobbers) anymore. c) GVN no longer does any 'lastLoad' caching, leaving it to memdep. 7. The logic in DSE is simplified a bit and sped up. A potentially unsafe case was eliminated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60607 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6951381995f24dc9c7bbcacefd5a1315784f66f3 |
|
05-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Make it illegal to call getDependency* on non-memory instructions like binary operators. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60600 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
bf145d6e2ba01f5099ccaa1b58ed3619406928a0 |
|
01-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Reimplement the non-local dependency data structure in terms of a sorted vector instead of a densemap. This shrinks the memory usage of this thing substantially (the high water mark) as well as making operations like scanning it faster. This speeds up memdep slightly, gvn goes from 3.9376 to 3.9118s on 403.gcc This also splits out the statistics for the cached non-local case to differentiate between the dirty and clean cached case. Here's the stats for 403.gcc: 6153 memdep - Number of dirty cached non-local responses 169336 memdep - Number of fully cached non-local responses 162428 memdep - Number of uncached non-local responses yay for caching :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60313 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
fd3dcbea06f934572a3ba02821b1485eb7a073aa |
|
01-Dec-2008 |
Chris Lattner <sabre@nondot.org> |
Eliminate the DepResultTy abstraction. It is now completely redundant with MemDepResult, and MemDepResult has a nicer interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60308 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d777d405cdda8d418ba8e8818e5c1272dfd999a0 |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Cache TargetData/AliasAnalysis in the pass instead of calling getAnalysis<>. getAnalysis<> is apparently extremely expensive. Doing this speeds up GVN on 403.gcc by 16%! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60304 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4a69bade2385022ca776edc22150f3b750cdf23c |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Two changes: Make getDependency remove QueryInst for a dirty record's ReverseLocalDeps when we update it. This fixes a regression test failure from my last commit. Second, for each non-local cached information structure, keep a bit that indicates whether it is dirty or not. This saves us a scan over the whole thing in the common case when it isn't dirty. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60274 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
25f4b2b7a3f1f2bbaf954257e7834ba29a6ede7c |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
introduce a typedef, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60272 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f68f310386c8e1772a3e6eba01f09590678a8f96 |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Change NonLocalDeps to be a densemap of pointers to densemap instead of containing them by value. This increases the density (!) of NonLocalDeps as well as making the reallocation case faster. This speeds up gvn on 403.gcc by 2% and makes room for future improvements. I'm not super thrilled with having to explicitly manage the new/delete of the map, but it is necesary for the next change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
cfbb634225007b2eddfbfcbf2adff2291b9c03bd |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
calls never depend on allocations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60268 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
237a8287454389a5b940e18c1efb2201fc443208 |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Fix a fixme by making memdep's handling of allocations more logical. If we see that a load depends on the allocation of its memory with no intervening stores, we now return a 'None' depedency instead of "Normal". This tweaks GVN to do its optimization with the new result. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60267 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
73ec3cdd7140aee6d2b9ac32bc2298254ff48c97 |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
implement a fixme by introducing a new getDependencyFromInternal method that returns its result as a DepResultTy instead of as a MemDepResult. This reduces conversion back and forth. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60266 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
37d041c25f6cac462efef0d614a67ef657aad11a |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Move the getNonLocalDependency method to a more logical place in the file, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0e0a5b690ca772a9002d8e8d21edac5f011bc7e8 |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
REmove an old fixme, resolve another fixme by adding liberal comments about what this class does. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60264 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
125ce362693350ebe713b58c92a9c0ced26680ea |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
remove a bit of incorrect code that tried to be tricky about speeding up dependencies. The basic situation was this: consider if we had: store1 ... store2 ... store3 Where memdep thinks that store3 depends on store2 and store2 depends on store1. The problem happens when we delete store2: The code in question was updating dep info for store3 to be store1. This is a spiffy optimization, but is not safe at all, because aliasing isn't transitive. This bug isn't exposed today with DSE because DSE will only zap store2 if it is identifical to store 3, and in this case, it is safe to update it to depend on store1. However, memcpyopt is not so fortunate, which is presumably why the "dropInstruction" code used to exist. Since this doesn't actually provide a speedup in practice, just rip the code out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4f8c18c7c757875cfa45383e7cf33d65d2c4d564 |
|
30-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Eliminate the dropInstruction method, which is not needed any more. Fix a subtle iterator invalidation bug I introduced in the last commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0ec48ddef20deaa061152d86645972122beef605 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
implement some fixme's: when deleting an instruction with an entry in the nonlocal deps map, don't reset entries referencing that instruction to [dirty, null], instead, set them to [dirty,next] where next is the instruction after the deleted one. Use this information in the non-local deps code to avoid rescanning entire blocks. This speeds up GVN slightly by avoiding pointless work. On 403.gcc this makes GVN 1.5% faster. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
396a4a55e535728e2023aa331401c1a2b782cb9a |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Change MemDep::getNonLocalDependency to return its results as a smallvector instead of a DenseMap. This speeds up GVN by 5% on 403.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
729b23758ab990a7bd07ceb5ac6af04c32f40a76 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
move MemoryDependenceAnalysis::verifyRemoved to the end of the file, no functionality/code change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60254 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
86b29ef64a36c8779ef7855b3c4b95744eb2f08b |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
reimplement getNonLocalDependency with a simpler worklist formulation that is faster and doesn't require nonLazyHelper. Much less code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60253 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8c4652790e04515f34cf920b0783d6ec4161a313 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
rename some maps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60242 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
00314b3d84252555e45ca147521bbfb0e8cc86d6 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
rename some variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60241 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
a161ab06d9e194bbc048b04998e64a8f8a14e49c |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
eliminate a bunch of code in favor of using AliasAnalysis::getModRefInfo. Put a some code back to handle buggy behavior that GVN expects: it wants loads to depend on each other, and accesses to depend on their allocations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
25a081439f2c48a384c69ba8ad5e9ae005f4cf10 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
simplify some code and rename some variables. Reduce nesting. Use getTypeStoreSize instead of ABITypeSize for in-memory size in a couple places. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5391a1d8046396fb4dd005b1910973789f5427f4 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Split getDependency into getDependency and getDependencyFrom, the former does caching, the later doesn't. This dramatically simplifies the logic in getDependency and getDependencyFrom. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60234 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7f52422a3c821c1deb7171808ffcf83386970791 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Now that DepType is private, we can start cleaning up some of its uses: Document the Dirty value more precisely, use it for the uninitialized DepResultTy value. Change reverse mappings to be from an instruction* instead of DepResultTy, and stop tracking other forms. This makes it more clear that we only care about the instruction cases. Eliminate a DepResultTy,bool pair by using Dirty in the local case as well, shrinking the map and simplifying the code. This speeds up GVN by ~3% on 403.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60232 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4c724006256032e827177afeae04ea62436796e7 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Introduce and use a new MemDepResult class to hold the results of a memdep query. This makes it crystal clear what cases can escape from MemDep that the clients have to handle. This also gives the clients a nice simplified interface to it that is easy to poke at. This patch also makes DepResultTy and MemoryDependenceAnalysis::DepType private, yay. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60231 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
39f372e23e49cecb8db2eb7120eb331173e50c74 |
|
29-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Reimplement the internal abstraction used by MemDep in terms of a pointer/int pair instead of a manually bitmangled pointer. This forces clients to think a little more about checking the appropriate pieces and will be useful for internal implementation improvements later. I'm not particularly happy with this. After going through this I don't think that the clients of memdep should be exposed to the internal type at all. I'll fix this in a subsequent commit. This has no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60230 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d3d12ecadd1eb859c4b30b6582e31901a45d6626 |
|
28-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Fix PR3141 by ensuring that MemoryDependenceAnalysis::removeInstruction properly updates the reverse dependency map when it installs updated dependencies for instructions that depend on the removed instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60222 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
baad8881f1d87b50053edc862248dc6cb15af81b |
|
28-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
more cleanups for MemoryDependenceAnalysis::removeInstruction, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5f589dc77f459d169495ab1e0e03de3740a3b290 |
|
28-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
random cleanups, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0e575f428cf0691760fb8f51a616bdb911b85d4f |
|
28-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
Run verifyRemoved from removeInstruction when -debug is specified. This shows the root problem behind PR3141. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60216 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8b589fa135d873e683b29ed0918638a79272f5d2 |
|
28-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
rename "ping" to "verifyRemoved". I don't know why 'ping' what chosen, but it doesn't make any sense at all. Also make the method const, private, and fit in 80 cols while we're at it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60215 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
57d4012f657eedeae66e29e03228c56498608ee7 |
|
28-Nov-2008 |
Chris Lattner <sabre@nondot.org> |
remove mysterious escaped newlines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60211 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
af8bc26449249682699bbd7d107a5708fe0413a3 |
|
11-Sep-2008 |
Duncan Sands <baldrick@free.fr> |
Fix comment typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56116 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d4310a5d41cc13f109890f5efbb19e084fecb27a |
|
28-Jul-2008 |
Owen Anderson <resistor@mac.com> |
Fix a subtle bug when removing instructions from memdep. In very specific circumstances we could end up remapping a dependee to the same instruction that we're trying to remove. Handle this properly by just falling back to a conservative solution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54132 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f2aa160b357c98d8c37b69ea9775aa3e097d1319 |
|
02-Jul-2008 |
Owen Anderson <resistor@mac.com> |
A better fix for PR2503 that doesn't pessimize GVN in the presence of unreachable blocks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
c4b871c650d4030031545a5a2d07ecaa48c80a9c |
|
01-Jul-2008 |
Owen Anderson <resistor@mac.com> |
Properly handle cases where a predecessor of the block being queried on is unreachable. This fixes PR2503, though we should also fix other passes not to emit this kind of code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6bd15ce03f27047909da227f923e36249bf8182b |
|
01-Jun-2008 |
Owen Anderson <resistor@mac.com> |
Remember to update the reverse non-local cache when cleaning up dirty entries. This fixes PR2397. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51846 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
d8f34fa3d616a99e90ac9111fdc60b7b4ec0aae9 |
|
01-Jun-2008 |
Owen Anderson <resistor@mac.com> |
Make ping more aggressive in finding nonlocal caching errors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51845 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
ff5a535378f700bf5e48ef17ad74eac21669b78d |
|
13-May-2008 |
Owen Anderson <resistor@mac.com> |
Fix memdep's handling of invokes when finding the dependency of another call instruction. This fixes some Ada miscompiles reported in PR2324. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
844731a7f1909f55935e3514c9e713a62d67662e |
|
13-May-2008 |
Dan Gohman <gohman@apple.com> |
Clean up the use of static and anonymous namespaces. This turned up several things that were neither in an anonymous namespace nor static but not intended to be global. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4a3f6c88820a204f80ca0fa3f1f2fe09ca10b02f |
|
06-May-2008 |
Dan Gohman <gohman@apple.com> |
Make several variable declarations static. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
241f65321efc6ad84ed875cd9494df8ca1cff309 |
|
17-Apr-2008 |
Owen Anderson <resistor@mac.com> |
Make GVN able to remove unnecessary calls to read-only functions again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49842 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
c04575f494395412275389efbe152c8ed6129030 |
|
11-Apr-2008 |
Dan Gohman <gohman@apple.com> |
Fix a typo in a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49504 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
f062f10231590919d9d78ee2f7d3cb29f1c09e66 |
|
11-Apr-2008 |
Owen Anderson <resistor@mac.com> |
Fix for PR2190. Memdep's non-local caching was checking dirtied blocks in the wrong order. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49499 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6faaef57b003be4af1594731d95b2a0112a23749 |
|
01-Apr-2008 |
Dan Gohman <gohman@apple.com> |
Set blockBegin to point to the beginning of the block, not the end. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48999 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4f4c28f75f74fe557efb63feaf5f4f8bf639dcd5 |
|
20-Mar-2008 |
Devang Patel <dpatel@apple.com> |
Restore isCFGOnly property of various analysis passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
c758209153ca0f6da6737f25ada269c573fba456 |
|
19-Mar-2008 |
Devang Patel <dpatel@apple.com> |
PassInfo keep tracks whether a pass is an analysis pass or not. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48554 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
30b4bd4d1099764db4f1e1a955b7f7cc9dafdd97 |
|
12-Feb-2008 |
Owen Anderson <resistor@mac.com> |
Re-apply the patch to improve the optimizations of memcpy's, with several bugs fixed. This now passes PPC bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
63aa160b27935433208c34080e0458ce287030bb |
|
06-Feb-2008 |
Tanya Lattner <tonic@nondot.org> |
Throttle the non-local dependence analysis for basic blocks with more than 50 predecessors. Added command line option to play with this threshold. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46790 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
a8701a6c62158b2b84cc24ed2149e4107d03409a |
|
05-Feb-2008 |
Owen Anderson <resistor@mac.com> |
Fix an obscure read-after-free bug that Duncan found. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46738 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9a8ff8cd0fe792c7cb894217640f90d2bc1af26e |
|
30-Jan-2008 |
Owen Anderson <resistor@mac.com> |
Fix an issue where, under very specific circumstances, memdep could end up dereferencing the end of one of its internal maps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46541 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4ee451de366474b9c228b4e5fa573795a715216d |
|
29-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Remove attribution from file headers, per discussion on llvmdev. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5fc4abac3db46b6e6b3824163c0f1252c1ab0ebb |
|
08-Dec-2007 |
Owen Anderson <resistor@mac.com> |
Fix several cache coherence bugs in MemDep/GVN that were found. Also add some (disabled) debugging code to make such problems easier to diagnose in the future, written by Duncan Sands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
dff6710717b159f089c76a07eda074eb6347eb92 |
|
01-Dec-2007 |
Duncan Sands <baldrick@free.fr> |
Integrate the readonly/readnone logic more deeply into alias analysis. This meant updating the API which now has versions of the getModRefBehavior, doesNotAccessMemory and onlyReadsMemory methods which take a callsite parameter. These should be used unless the callsite is not known, since in general they can do a better job than the versions that take a function. Also, users should no longer call the version of getModRefBehavior that takes both a function and a callsite. To reduce the chance of misuse it is now protected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
97d4e51df1dabc43978ce6f33f6e5276d7ee297f |
|
26-Nov-2007 |
Owen Anderson <resistor@mac.com> |
Fix a silly bug that Nicholas noticed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44324 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
00a6d1448d27b5140b911caf2eca9585abdae5c8 |
|
26-Nov-2007 |
Owen Anderson <resistor@mac.com> |
Allow GVN to eliminate read-only function calls when it can detect that they are redundant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44323 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
514ab348fddcdffa8367685dc608b2f8d5de986d |
|
01-Nov-2007 |
Duncan Sands <baldrick@free.fr> |
Executive summary: getTypeSize -> getTypeStoreSize / getABITypeSize. The meaning of getTypeSize was not clear - clarifying it is important now that we have x86 long double and arbitrary precision integers. The issue with long double is that it requires 80 bits, and this is not a multiple of its alignment. This gives a primitive type for which getTypeSize differed from getABITypeSize. For arbitrary precision integers it is even worse: there is the minimum number of bits needed to hold the type (eg: 36 for an i36), the maximum number of bits that will be overwriten when storing the type (40 bits for i36) and the ABI size (i.e. the storage size rounded up to a multiple of the alignment; 64 bits for i36). This patch removes getTypeSize (not really - it is still there but deprecated to allow for a gradual transition). Instead there is: (1) getTypeSizeInBits - a number of bits that suffices to hold all values of the type. For a primitive type, this is the minimum number of bits. For an i36 this is 36 bits. For x86 long double it is 80. This corresponds to gcc's TYPE_PRECISION. (2) getTypeStoreSizeInBits - the maximum number of bits that is written when storing the type (or read when reading it). For an i36 this is 40 bits, for an x86 long double it is 80 bits. This is the size alias analysis is interested in (getTypeStoreSize returns the number of bytes). There doesn't seem to be anything corresponding to this in gcc. (3) getABITypeSizeInBits - this is getTypeStoreSizeInBits rounded up to a multiple of the alignment. For an i36 this is 64, for an x86 long double this is 96 or 128 depending on the OS. This is the spacing between consecutive elements when you form an array out of this type (getABITypeSize returns the number of bytes). This is TYPE_SIZE in gcc. Since successive elements in a SequentialType (arrays, pointers and vectors) need to be aligned, the spacing between them will be given by getABITypeSize. This means that the size of an array is the length times the getABITypeSize. It also means that GEP computations need to use getABITypeSize when computing offsets. Furthermore, if an alloca allocates several elements at once then these too need to be aligned, so the size of the alloca has to be the number of elements multiplied by getABITypeSize. Logically speaking this doesn't have to be the case when allocating just one element, but it is simpler to also use getABITypeSize in this case. So alloca's and mallocs should use getABITypeSize. Finally, since gcc's only notion of size is that given by getABITypeSize, if you want to output assembler etc the same as gcc then getABITypeSize is the size you want. Since a store will overwrite no more than getTypeStoreSize bytes, and a read will read no more than that many bytes, this is the notion of size appropriate for alias analysis calculations. In this patch I have corrected all type size uses except some of those in ScalarReplAggregates, lib/Codegen, lib/Target (the hard cases). I will get around to auditing these too at some point, but I could do with some help. Finally, I made one change which I think wise but others might consider pointless and suboptimal: in an unpacked struct the amount of space allocated for a field is now given by the ABI size rather than getTypeStoreSize. I did this because every other place that reserves memory for a type (eg: alloca) now uses getABITypeSize, and I didn't want to make an exception for unpacked structs, i.e. I did it to make things more uniform. This only effects structs containing long doubles and arbitrary precision integers. If someone wants to pack these types more tightly they can always use a packed struct. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
ce4d88aa644647a21f75f86cd26476fa3f23b396 |
|
21-Sep-2007 |
Owen Anderson <resistor@mac.com> |
Add partial caching of non-local memory dependence queries. This provides a modest speedup for GVN. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
742f9b66822cb03af0cf7b94436e9d0288565591 |
|
19-Sep-2007 |
Owen Anderson <resistor@mac.com> |
Add a flag to mark a dirty cache entry. This is not yet used, but will eventually help non-local memdep caching. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0a890e2fb524124ecb9b0899e4daacd32bf9a44b |
|
11-Sep-2007 |
Owen Anderson <resistor@mac.com> |
Fix a typo in memdep, which was causing PR1648. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41833 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7fad7e3db87c80f18a449c44394ee32c4e2af136 |
|
09-Sep-2007 |
Owen Anderson <resistor@mac.com> |
Remove an un-needed dependence query. This improves compile time marginally on 401.bzip2. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41792 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4d13de4e3bfc5121207efd01e1b31caa6bb4e40b |
|
16-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Cache non-local memory dependence analysis. This is a significant compile time performance win in most cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9528f11481e6840a10442733f1dc45c04b79d596 |
|
09-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Make NonLocal and None const in the right way. :-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
642a9e3436dfe2afcaee6fb734d02c006d32ba3a |
|
09-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Add more comments to memdep. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
80b1f09693dd849620330da76b445fa0b3873dd1 |
|
09-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Make memdep fit in 80 cols. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40950 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8cad423d94fd7e30d84742311c454016f36e3ee3 |
|
08-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Change the None and NonLocal markers in memdep to be const. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
dbbe816757700e44018144f392d8e6f13971ba86 |
|
07-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Clean up a bunch of caching stuff in memdep. This reduces the time to run GVN on 403.gcc from ~15s to ~10s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8f3531579812089b4094fcd53ca8dbe5bec53ca0 |
|
07-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Improve the accuracy of memdep for determining the dependencies of loads. This brings GVN to parity with GCSE+LoadVN. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40882 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1c2763d3fe8b70d9b85cb84bbce311ee4b86c9e1 |
|
02-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Fix a bug that was causing several miscompilations on SPEC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
9066020993695a690c1f979f9cac4e14d325e237 |
|
02-Aug-2007 |
Owen Anderson <resistor@mac.com> |
Make non-local memdep not be recursive, and fix a bug on 403.gcc that this exposed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40692 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
df464195fe049d5ea921e2e37f4f833c2ea4e3ec |
|
31-Jul-2007 |
David Greene <greened@obbligato.org> |
Fix GLIBCXX_DEBUG error owing to dereference of end iterator. There's no guarantee that an instruction returned by getDependency exists in the maps. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
45c8388e2a94502ded17dc493fe3fb10b04ce439 |
|
30-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Use more caching when computing non-local dependence. This makes bzip2 not use up the entire 32-bit address space. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40596 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
a377a24771eed5c4672556afb2c28e80af026d7b |
|
26-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Fix a bug introduced in my last commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
45537917eec15e5c3ef75c0ee2bf8963b02f3a54 |
|
26-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Fix a couple more bugs in the phi construction by pulling in code that does almost the same things from LCSSA. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40540 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
3dfcf33cf897b04c95e252bbd645e9930f608701 |
|
25-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Fix a bug in non-local memdep that was causing an infinite loop on 175.vpr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40495 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
0cd320362e91852c8f7f2c8c4841498aab7f92fa |
|
25-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Add basic support for performing whole-function RLE. Note: This has not yet been thoroughly tested. Use at your own risk. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40489 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
4beedbd0063a8ba6f97db02c3c94707d8ab45b50 |
|
24-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Add initial support for non-local memory dependence analysis. NOTE: This has only been cursorily tested. Expected improvements soon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40476 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
521a20207ca5ed8fbe3f8a0537a286478277fb3f |
|
20-Jul-2007 |
Owen Anderson <resistor@mac.com> |
When removing instructions from the analysis, be sure to check the confirmed flag when determining what to do with dependencies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40079 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
faac518ce0ae88a19f26b9aa9d34f6bf86ecb8c4 |
|
16-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Add support for walking up memory def chains, which enables finding many more dead stores on 400.perlbench. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39929 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
1cb960a4bb97336be1339fd5bc2eb28f125f099a |
|
12-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Let MemoryDependenceAnalysis take care of updating AliasAnalysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39769 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
8e85048d7b004fb1bafd23df109cd91e4ffd5278 |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Calculate the size of a array allocation correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
202da14fe00fbafa8540baba433147a8eb526814 |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Fix a crasher when finding the dependency of a call. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38510 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
776ee1fb338b65defc5cb0c85b20a4fc5122a633 |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Make this pass registration static as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38509 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
06b6e82f79a30e0cc16c736875069f0f64cc400a |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Handle vaarg instructions correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38504 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
e314eb3255299a995088323384d317be52e743f9 |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Volatile loads and stores depend on each other. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
5f323207971da23e2f78dd61d383e9d506fd9d6c |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Add support for finding the dependencies of call and invoke instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38497 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
7a616a101225ea33d72f6931b205aa27e1cf919c |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Fix the build, and fix the handling of pointer sizes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38494 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
6b278fc7860c1e0e5cf72340e43f78a87159be4c |
|
10-Jul-2007 |
Owen Anderson <resistor@mac.com> |
Fix a bunch of things from Chris' feedback git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|
78e02f78ce68274163e1e63be59abd17aaaf6cbf |
|
07-Jul-2007 |
Owen Anderson <resistor@mac.com> |
A first stab at memory dependence analysis. This is an interface on top of alias analysis, adding caching and lazy computation of queries. This will be used in planned improvements to memory access optimizations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
|