dce4a407a24b04eebc6a376f8e62b41aaa7b071f |
|
29-May-2014 |
Stephen Hines <srhines@google.com> |
Update LLVM for 3.5 rebase (r209712). Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
36b56886974eae4f9c5ebc96befd3e7bfe5de338 |
|
24-Apr-2014 |
Stephen Hines <srhines@google.com> |
Update to LLVM 3.5a. Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0b6962f4be35aca7054ff68ef9bbbb2e03617d31 |
|
24-Aug-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
Add a function object to compare the first or second component of a std::pair. Replace instances of this scattered around the code base. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189169 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
79663c1910ebf9bda8f758388eaa3171fb9a5134 |
|
14-Aug-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Fix a really terrifying but improbable bug in mem2reg. If you have seen extremely subtle miscompilations (such as a load getting replaced with the value stored *below* the load within a basic block) related to promoting an alloca to an SSA value, there is the dim possibility that you hit this. Please let me know if you won this unfortunate lottery. The first half of mem2reg's core logic (as it is used both in the standalone mem2reg pass and in SROA) builds up a mapping from 'Instruction *' to the index of that instruction within its basic block. This allows quickly establishing which store dominate a particular load even for large basic blocks. We cache this information throughout the run of mem2reg over a function in order to amortize the cost of computing it. This is not in and of itself a strange pattern in LLVM. However, it introduces a very important constraint: absolutely no instruction can be deleted from the program without updating the mapping. Otherwise a newly allocated instruction might get the same pointer address, and then end up with a wrong index. Yes, LLVM routinely suffers from a *single threaded* variant of the ABA problem. Most places in LLVM don't find avoiding this an imposition because they don't both delete and create new instructions iteratively, but mem2reg *loves* to do this... All the time. Fortunately, the mem2reg code was really careful about updating this cache to handle this eventuallity... except when it comes to the debug declare intrinsic. Oops. The fix is to invalidate that pointer in the cache when we delete it, the same as we do when deleting alloca instructions and other instructions. I've also caused the same bug in new code while working on a fix to PR16867, so this seems to be a really unfortunate pattern. Hopefully in subsequent patches the deletion of dead instructions can be consolidated sufficiently to make it less likely that we'll see future occurences of this bug. Sorry for not having a test case, but I have literally no idea how to reliably trigger this kind of thing. It may be single-threaded, but it remains an ABA problem. It would require a really amazing number of stars to align. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188367 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6c1fa7caaefc88a5a867add402d90115823bd0eb |
|
14-Aug-2013 |
Nick Lewycky <nicholas@mxc.ca> |
Revert r187191, which broke opt -mem2reg on the testcases included in PR16867. However, opt -O2 doesn't run mem2reg directly so nobody noticed until r188146 when SROA started sending more things directly down the PromoteMemToReg path. In order to revert r187191, I also revert dependent revisions r187296, r187322 and r188146. Fixes PR16867. Does not add the testcases from that PR, but both of them should get added for both mem2reg and sroa when this revert gets unreverted. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188327 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6c3a95dab561ef9747876d14014e965f8688f55b |
|
28-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Thread DataLayout through the callers and into mem2reg. This will be useful in a subsequent patch, but causes an unfortunate amount of noise, so I pulled it out into a separate patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187322 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
33ae89911311f83b6a093a421993a29aa687a0b2 |
|
27-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Merge the removal of dead instructions and lifetime markers with the analysis of the alloca. We don't need to visit all the users twice for this. We build up a kill list during the analysis and then just process it afterward. This recovers the tiny bit of performance lost by moving to the visitor based analysis system as it removes one entire use-list walk from mem2reg. In some cases, this is now faster than mem2reg was previously. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187296 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
8d93d41027b6f71b33b8da82c69766498bb1519a |
|
26-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Re-implement the analysis of uses in mem2reg to be significantly more robust. It now uses an InstVisitor and worklist to actually walk the uses of the Alloca transitively and detect the pattern which we can directly promote: loads & stores of the whole alloca and instructions we can completely ignore. Also, with this new implementation teach both the predicate for testing whether we can promote and the promotion engine itself to use the same code so we no longer have strange divergence between the two code paths. I've added some silly test cases to demonstrate that we can handle slightly more degenerate code patterns now. See the below for why this is even interesting. Performance impact: roughly 1% regression in the performance of SROA or ScalarRepl on a large C++-ish test case where most of the allocas are basically ready for promotion. The reason is because of silly redundant work that I've left FIXMEs for and which I'll address in the next commit. I wanted to separate this commit as it changes the behavior. Once the redundant work in removing the dead uses of the alloca is fixed, this code appears to be faster than the old version. =] So why is this useful? Because the previous requirement for promotion required a *specific* visit pattern of the uses of the alloca to verify: we *had* to look for no more than 1 intervening use. The end goal is to have SROA automatically detect when an alloca is already promotable and directly hand it to the mem2reg machinery rather than trying to partition and rewrite it. This is a 25% or more performance improvement for SROA, and a significant chunk of the delta between it and ScalarRepl. To get there, we need to make mem2reg actually capable of promoting allocas which *look* promotable to SROA without have SROA do tons of work to massage the code into just the right form. This is actually the tip of the iceberg. There are tremendous potential savings we can realize here by de-duplicating work between mem2reg and SROA. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
043722f7e7860c8f5cb6c5c332f4dcb1efce472a |
|
21-Jul-2013 |
Benjamin Kramer <benny.kra@googlemail.com> |
mem2reg: Minor STL usage cleanup. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186790 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
30c016f41f6e5c2dc594c16af51cfa9369c4e0fa |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Make the mem2reg interface use an ArrayRef as it keeps a copy of these to iterate over. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186788 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d17303c47f5654f7ecae25b340cac84128add856 |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Hoist the rest of the logic for promoting single-store allocas into the helper function. This leaves both trivial cases handled entirely in helper functions and merely manages the list of allocas to process in the run method. The next step will be to handle all of the trivial promotion work prior to even creating the core class and the subsequent simplifications that enables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186784 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5dc22183f9d076cdbac4fc478f84abf58240661d |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Hoist the rest of the logic for fully promoting allocas with all uses in a single block into the helper routine. This takes advantage of the fact that we can directly replace uses prior to any store with undef to simplify matters and unconditionally promote allocas only used within one block. I've removed the special handling for the case of no stores existing. This has no semantic effect but might slow things down. I'll fix that in a later patch when I refactor this entire thing to be easier to manage the different cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f61d7e8afa01858e07bf5b3450f40239fc10d1dd |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Remove a method made dead by the prior refactoring. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186782 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f660021db499dae9ee2345020c4fd4a9dd660560 |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Hoist the two trivial promotion routines out of the big class that handles the general cases. The hope is to refactor this so that we don't end up building the entire class for the trivial cases. I also want to lift a lot of the early pre-processing in the initial segment of run() into a separate routine, and really none of it needs to happen inside the primary promotion class. These routines in particular used none of the actual state in the promotion class, so they don't really make sense as members. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d6d58ba7aafdd1f7e9e36a13766808c439270c01 |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Hoist the AllocaInfo struct to the top of the file. This struct is nicely independent of everything else, and we already needed a foward declaration here. It's simpler to just define it immediately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
61cb90f12202f07ead9d4532ee07904487cbfe6e |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Sink a typedef and comparator down to the function that actually uses them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c5b8b590ee43d05816bf94ae54c77cb6275b98e4 |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Don't allocate the DIBuilder on the heap and remove all the complexity that ensued from that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186777 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
aff50164ebf602c4ae63a14337adbc30fbb86280 |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Rename constructor parameters to follow the common member-shadowing pattern and conform to the naming conventions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
30f23a47820cf5214c6e699ef365be71f014145d |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Reformat the implementation of mem2reg with clang-format so that my subsequent changes don't introduce inconsistencies. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fa873afbdf870bcc025e77f4932364f1a2e38a7b |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Remove a DenseMapInfo specialization for std::pair -- we have one of those baked into DenseMap now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186773 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
02aea0116a0f5a5092a659d57f66cd042c212332 |
|
21-Jul-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Update mem2reg's comments to conform to the new doxygen standards. No functionality changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186772 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6227d5c690504c7ada5780c00a635b282c46e275 |
|
04-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185606 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0b8c9a80f20772c3793201ab5b251d3520b9cea3 |
|
02-Jan-2013 |
Chandler Carruth <chandlerc@gmail.com> |
Move all of the header files which are involved in modelling the LLVM IR into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f |
|
03-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Use the new script to sort the includes of every file under lib. Sooooo many of these had incorrect or strange main module includes. I have manually inspected all of these, and fixed the main module include to be the nearest plausible thing I could find. If you own or care about any of these source files, I encourage you to take some time and check that these edits were sensible. I can't have broken anything (I strictly added headers, and reordered them, never removed), but they may not be the headers you'd really like to identify as containing the API being implemented. Many forward declarations and missing includes were added to a header files to allow them to parse cleanly when included first. The main module rule does in fact have its merits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
8245a17a14e44df02c4488563d3ab50bee91c349 |
|
23-Oct-2012 |
Julien Lerouge <jlerouge@apple.com> |
Fix typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166456 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6ecdd0e8247b526521ab12124d157ca58c5de22f |
|
23-Oct-2012 |
Julien Lerouge <jlerouge@apple.com> |
Explain why DenseMap is still used here instead of MapVector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166454 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6a02bbcdae9996a984ccb2497cb89719a69413ef |
|
22-Oct-2012 |
Julien Lerouge <jlerouge@apple.com> |
Iterating over a DenseMap<std::pair<BasicBlock*, unsigned>, PHINode*> is not deterministic, replace it with a DenseMap<std::pair<unsigned, unsigned>, PHINode*> (we already have a map from BasicBlock to unsigned). <rdar://problem/12541389> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
16eeb6f5ebc978b03745177b9ac82684ab1c6932 |
|
29-Jun-2012 |
Bill Wendling <isanbard@gmail.com> |
The DIBuilder class is just a wrapper around debug info creation (a.k.a. MDNodes). The module doesn't belong in Analysis. Move it to the VMCore instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159414 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0bcbd1df7a204e1e512f1a27066d725309de1b13 |
|
28-Jun-2012 |
Bill Wendling <isanbard@gmail.com> |
Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h. The reasoning is because the DebugInfo module is simply an interface to the debug info MDNodes and has nothing to do with analysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
e5121f2e22919349350599c528aeae242b5db601 |
|
05-Mar-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Switch mem2reg to use the new hashing infrastructure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
acb6f5096f566cb9ed41226c8dd95368209cc892 |
|
21-Feb-2012 |
Chad Rosier <mcrosier@apple.com> |
Fix 80-column violation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150998 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
618c1dbd293d15ee19f61b1156ab8086ad28311a |
|
01-Dec-2011 |
Chad Rosier <mcrosier@apple.com> |
Propagate TargetLibraryInfo throughout ConstantFolding.cpp and InstructionSimplify.cpp. Other fixups as needed. Part of rdar://10500969 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fd06b3cfa184a357f5f37625f50be104c8573fc3 |
|
16-Aug-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Add comments and test for atomic load/store and mem2reg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137690 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
99e0b2a8df7e3a49c0e1edd250d17604fe2fb21c |
|
27-Jun-2011 |
Nick Lewycky <nicholas@mxc.ca> |
Move onlyUsedByLifetimeMarkers to ValueTracking so that it can be used by other passes as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
1d665c9a9fb32c3d6483fa146ba85d03b1e9d97f |
|
17-Jun-2011 |
Nick Lewycky <nicholas@mxc.ca> |
When promoting an alloca to registers discard any lifetime intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133251 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c827939046670a9800659b83e2048f1d3a79a531 |
|
24-May-2011 |
Cameron Zwarich <zwarich@apple.com> |
Make LoadAndStorePromoter preserve debug info and create llvm.dbg.values when promoting allocas to SSA variables. Fixes <rdar://problem/9479036>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
ddcdcc88631c6bd4ad43d9198b98bc9a829be036 |
|
23-Apr-2011 |
Jay Foad <jay.foad@gmail.com> |
Remove unused STL header includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
ec9186bcf975c9ffa3ec7ca97867f0ec6eb55115 |
|
21-Apr-2011 |
Jay Foad <jay.foad@gmail.com> |
PR9214: Convert Metadata API to use ArrayRef. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129932 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
3ecfc861b4365f341c5c969b40e1afccde676e6f |
|
30-Mar-2011 |
Jay Foad <jay.foad@gmail.com> |
Remove PHINode::reserveOperandSpace(). Instead, add a parameter to PHINode::Create() giving the (known or expected) number of operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5ee20680c7ebc765950983633e19fafab5235245 |
|
17-Mar-2011 |
Devang Patel <dpatel@apple.com> |
Refactor into a separate utility function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
afd0d0e8a751ff07dc5ac3f1862bb7697de31d2a |
|
24-Feb-2011 |
Devang Patel <dpatel@apple.com> |
Do not use DIFactory. Use DIBuilder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126398 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
491d8d43702a76b6d73ffbd85c368a4be51c44ae |
|
23-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Convert two std::vectors to SmallVectors for a 3.4% speedup running -scalarrepl on test-suite + SPEC2000 & SPEC2006. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
59f5319719dd66570dc48d8415936a06c67672ff |
|
18-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Convert a std::map to a DenseMap for another 1.7% speedup on -scalarrepl. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123732 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
443997de8b0eb538aac833390358f30c952f85fc |
|
18-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Make a std::vector a SmallVector<*, 32> like the other vectors in the same function. This seems to be about a 1.5% speedup of -scalarrepl on test-suite with SPEC2000 and SPEC2006. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123731 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b1686c32fc694636cbf15a59b23b2a741b65ecf4 |
|
18-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Remove outdated references to dominance frontiers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123724 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
419e8a62997987e0509efe721c1ea81ac29f09f3 |
|
17-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Roll r123609 back in with two changes that fix test failures with expensive checks enabled: 1) Use '<' to compare integers in a comparison function rather than '<='. 2) Use the uniqued set DefBlocks rather than Info.DefiningBlocks to initialize the priority queue. The speedup of scalarrepl on test-suite + SPEC2000 + SPEC2006 is a bit less, at just under 16% rather than 17%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b1086a9c6d6d5ee3070a68076f38eec841cefd58 |
|
17-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Roll out r123609 due to failures on the llvm-x86_64-linux-checks bot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123618 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
ebed6de7b10d20721f5bd30ed3730cadefed7963 |
|
17-Jan-2011 |
Cameron Zwarich <zwarich@apple.com> |
Eliminate the use of dominance frontiers in PromoteMemToReg. In addition to eliminating a potentially quadratic data structure, this also gives a 17% speedup when running -scalarrepl on test-suite + SPEC2000 + SPEC2006. My initial experiment gave a greater speedup around 25%, but I moved the dominator tree level computation from dominator tree construction to PromoteMemToReg. Since this approach to computing IDFs has a much lower overhead than the old code using precomputed DFs, it is worth looking at using this new code for the second scalarrepl pass as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
9fc5cdf77c812aaa80419036de27576d45894d0d |
|
02-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
split dom frontier handling stuff out to its own DominanceFrontier header, so that Dominators.h is *just* domtree. Also prune #includes a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b05099bf42d54838f0648569d4ae1a98dfa7da7b |
|
22-Nov-2010 |
Duncan Sands <baldrick@free.fr> |
Don't keep track of inserted phis in PromoteMemoryToRegister: the information is never used. Patch by Cameron Zwarich. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119963 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
cdbd99262286e96729007ac535cd430ecb3d38ac |
|
16-Nov-2010 |
Duncan Sands <baldrick@free.fr> |
Have a few places that want to simplify phi nodes use SimplifyInstruction rather than calling hasConstantValue. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119352 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
473fc96889ff8d0862a8fea16c4a5b9252e2d44d |
|
18-Aug-2010 |
Chris Lattner <sabre@nondot.org> |
remove some dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7bc230ec6aad867333db43636f7beda68bb628ae |
|
21-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Don't look up the "dbg" metadata kind by name. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5417a03b55e90cbd7e8ac5e8eed4ab45890af7c3 |
|
09-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
cache result of operator* git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107966 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
403a8cdda5e76ea689693de16474650b4b0df818 |
|
21-Jun-2010 |
Dan Gohman <gohman@apple.com> |
Use A.append(...) instead of A.insert(A.end(), ...) when A is a SmallVector, and other SmallVector simplifications. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106452 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
93031ac032219c2200de2df1c73e594a0496ecef |
|
05-Jun-2010 |
Devang Patel <dpatel@apple.com> |
Copy location info for current function argument from dbg.declare if respective store instruction does not have any location info. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105490 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
4251d85ae775910a254dc47a03e394de17865c2b |
|
28-May-2010 |
Devang Patel <dpatel@apple.com> |
Fix typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104914 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f7a305147132a9119fd7ef3ee4855c81f3bced00 |
|
28-May-2010 |
Devang Patel <dpatel@apple.com> |
Fix typo. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104913 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d8720f4ba3546df76d75c94a8893a385de273cc6 |
|
27-May-2010 |
Devang Patel <dpatel@apple.com> |
Do not drop location info for inlined function args. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7d9663c70b3300070298d716dba6e6f6ce2d1e3e |
|
11-May-2010 |
Douglas Gregor <dgregor@apple.com> |
Fixes for Microsoft Visual Studio 2010, from Steven Watanabe! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103457 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
e9f8f5e6004fd49f2aff4dd23db8e9b0e4454fc6 |
|
07-May-2010 |
Devang Patel <dpatel@apple.com> |
Wrap const MDNode * inside DIDescriptor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103295 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
ed66bf5125ec47a338854d5e8a556f1686fd69bb |
|
07-May-2010 |
Devang Patel <dpatel@apple.com> |
Use overloaded operators instead of DIDescriptor::getNode() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103276 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
60ad781c61815ca5b8dc2a45a102e1c8af65992f |
|
26-Mar-2010 |
Gabor Greif <ggreif@gmail.com> |
rename use_const_iterator to const_use_iterator for consistency's sake git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99564 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.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/Transforms/Utils/PromoteMemoryToRegister.cpp
|
1897ed3d37141e590781d983adbbeca937b3ccfc |
|
29-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
mem2reg erases the dbg.declare intrinsics that it converts to dbg.val intrinsics git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
3511c70d180f662c8b2b8506d9c6b45a24720098 |
|
27-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
some cleanups. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5b718e3e4d0512c5099a079b1ad59de1cde21bab |
|
27-Jan-2010 |
Chris Lattner <sabre@nondot.org> |
no need to check for null git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94648 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b7ae53f035e7f9e90bd837b546ea516c00381b51 |
|
27-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
When converting dbg.declare to dbg.value, attach promoted store's debug metadata to dbg.value git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d044612489c567b9ba35dc0f6fa0d3b12d78bc59 |
|
26-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
Switch AllocaDbgDeclares to SmallVector and don't leak DIFactory git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94567 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b9768b0731f8b9a10fd2ee6bd1699ae8c02fc78c |
|
26-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
In mem2reg, for all alloca/stores that get promoted where the alloca has an associated llvm.dbg.declare instrinsic, insert an llvm.dbg.var intrinsic before each store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94493 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
aee6a656e84956a2e3c9d7436f68a4a3cfa64fee |
|
25-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
Revert r94260 until findDbgDeclare() is made more efficient git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b6aebc2f468333f0817738aaf8670c11cc98ee3e |
|
23-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
In mem2reg, for all alloca/stores that get promoted where the alloca has an associated llvm.dbg.declare instrinsic, insert an llvm.dbg.var intrinsic before each store git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94260 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
29fa5e98863332eb808a6f5c1e29138ca6fd7f5c |
|
22-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
Keep ignoring pointer-to-pointer bitcasts git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94194 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
e31dc355b264b0956789d47534c779b943c85216 |
|
22-Jan-2010 |
Victor Hernandez <vhernandez@apple.com> |
DbgInfoIntrinsic no longer appear in an instruction's use list git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
321a813c536e2f1f2f05bbe78a7fbf64046f0557 |
|
05-Jan-2010 |
Dan Gohman <gohman@apple.com> |
Use do+while instead of while for loops which obviously have a non-zero trip count. Use SmallVector's pop_back_val(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92734 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
4bbf4ee1491637c247e195e19e3e4a8ee5ad72fa |
|
15-Dec-2009 |
Chris Lattner <sabre@nondot.org> |
Remove isPod() from DenseMapInfo, splitting it out to its own isPodLike type trait. This is a generally useful type trait for more than just DenseMap, and we really care about whether something acts like a pod, not whether it really is a pod. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0daf77e8034cfb70fbffbfa77d138b78b55af303 |
|
13-Dec-2009 |
Chandler Carruth <chandlerc@gmail.com> |
Don't leave pointers uninitialized in the default constructor. GCC complains about the potential use of these uninitialized members under certain conditions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91239 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
ce2c51b6701c06f701efa2871794b7710cb64b41 |
|
23-Nov-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Pull LLVMContext out of PromoteMemToReg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
794c15dc71061d7c3cc6028fbe64eb30d0cdbb66 |
|
02-Nov-2009 |
Chris Lattner <sabre@nondot.org> |
fix a bug exposed by moving SRoA earlier which caused a crash building kc++ git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85786 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f5a86f45e75ec744c203270ffa03659eb0a220c1 |
|
25-Oct-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove includes of Support/Compiler.h that are no longer needed after the VISIBILITY_HIDDEN removal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6726b6d75a8b679068a58cb954ba97cf9d1690ba |
|
25-Oct-2009 |
Nick Lewycky <nicholas@mxc.ca> |
Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces. Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
2b723a5e3d671197ec8f956261b95d4b57f7b0be |
|
22-Sep-2009 |
Chris Lattner <sabre@nondot.org> |
tidy up git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
bccfc24c4e8092e1ee18746dd4cee01247728faa |
|
03-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Change PHINode::hasConstantValue to have a DominatorTree argument instead of a bool argument, and to do the dominator check itself. This makes it eaiser to use when DominatorTree information is available. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80920 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7db949df789383acce98ef072f08794fdd5bd04e |
|
07-Aug-2009 |
Dan Gohman <gohman@apple.com> |
Fix a bunch of namespace pollution. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
9e9a0d5fc26878e51a58a8b57900fcbf952c2691 |
|
31-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Move more code back to 2.5 APIs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77635 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fe09b2098ac483f6d6ce6ea4ab237a9539bdb6b9 |
|
30-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Twines: Don't allow implicit conversion from integers, this is too tricky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77605 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7f93dc8345fb33652973e35cae4c3b58addf4f87 |
|
30-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Switch obvious clients to Twine instead of utostr (when they were already using a Twine, e.g., for names). - I am a little ambivalent about this; we don't want the string conversion of utostr, but using overload '+' mixed with string and integer arguments is sketchy. On the other hand, this particular usage is something of an idiom. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
e922c0201916e0b980ab3cfe91e1413e68d55647 |
|
22-Jul-2009 |
Owen Anderson <resistor@mac.com> |
Get rid of the Pass+Context magic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
07cf79ef537caff6d39145f190a28a336e629b6f |
|
07-Jul-2009 |
Owen Anderson <resistor@mac.com> |
"LLVMContext* " --> "LLVMContext *" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0a205a459884ec745df1c529396dd921f029dafd |
|
06-Jul-2009 |
Owen Anderson <resistor@mac.com> |
More LLVMContext-ification. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
e9d87f49063cb1bd213d8e9c339b9b63393cc2d9 |
|
06-May-2009 |
Dan Gohman <gohman@apple.com> |
Simplify code by using SmallVector's pop_back_val() instead of separate back() and pop_back() calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71089 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
bde6fda7292e23b2f5db77dc302338022558dcb8 |
|
16-Apr-2009 |
Eli Friedman <eli.friedman@gmail.com> |
Fix for PR3944: make mem2reg O(N) instead of O(N^2) in the number of incoming edges for a block with many predecessors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
2511abf6e79d36f679bd5ed5af94208cde579e74 |
|
06-Mar-2009 |
Dale Johannesen <dalej@apple.com> |
Tweak the check for promotable alloca's to handle debug intrinsics correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b8c564f72ef75c775ce473e7b450d5c4da933e89 |
|
17-Nov-2008 |
Devang Patel <dpatel@apple.com> |
Let AnalyzeAlloca() remove debug intrinsics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59454 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
746867c8b6ded86e450131852d0949644f54927c |
|
08-Nov-2008 |
Daniel Dunbar <daniel@zuster.org> |
Rework r58829, allowing removal of dbg info intrinsics during alloca promotion. - Eliminate uses after free and simplify tests. Devang: Please check that this is still doing what you intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58887 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
068a795b33115da0c3bf00140804ef222ec2197b |
|
07-Nov-2008 |
Bill Wendling <isanbard@gmail.com> |
BCUI + 1 doesn't work. Use next instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58830 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
180ffaef18bdd0b1b972657b949c67cf96a20a48 |
|
07-Nov-2008 |
Devang Patel <dpatel@apple.com> |
Handle (delete) dbg intrinsics while promoting alloca. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58826 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0fd77a579bbed0fa06720474f1c5b2e3cd75004f |
|
27-Oct-2008 |
Chris Lattner <sabre@nondot.org> |
Rewrite all the 'PromoteLocallyUsedAlloca[s]' logic. With the power of LargeBlockInfo, we can now dramatically simplify their implementation and speed them up at the same time. Now the code has time proportional to the number of uses of the alloca, not the size of the block. This also eliminates code that tried to batch up different allocas which are used in the same blocks, and eliminates the 'retry list' logic which was baroque and no unneccesary. In addition to being a speedup for crazy cases, this is also a nice cleanup: PromoteMemoryToRegister.cpp | 270 +++++++++++++++----------------------------- 1 file changed, 96 insertions(+), 174 deletions(-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58229 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
33210608bee7d28029febc0b835ebd0f760a7bc0 |
|
27-Oct-2008 |
Chris Lattner <sabre@nondot.org> |
Add a new LargeBlockInfo helper, which is just a wrapper around a trivial dense map. Use this in RewriteSingleStoreAlloca to avoid aggressively rescanning blocks over and over again. This fixes PR2925, speeding up mem2reg on the testcase in that bug from 4.56s to 0.02s in a debug build on my machine. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58227 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
051a950000e21935165db56695e35bade668193b |
|
06-Apr-2008 |
Gabor Greif <ggreif@gmail.com> |
API changes for class Use size reduction, wave 1. Specifically, introduction of XXX::Create methods for Users that have a potentially variable number of Uses. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6e7aeb16faddb3c5648d0f5b6aaff37f1dcfb5db |
|
13-Mar-2008 |
Nick Lewycky <nicholas@mxc.ca> |
Update -mem2reg to use succ_iterator instead of iterating across TerminatorInst successors. This makes it support nounwind. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48320 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
2663ffe7512ccd50ca246d5c8d9ee7a87b33883c |
|
05-Feb-2008 |
Chris Lattner <sabre@nondot.org> |
Make RenamePass faster by making the 'is this a new phi node' check more intelligent. This speeds up mem2reg from 5.29s to 0.79s on a synthetic testcase with tons of predecessors and phi nodes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46767 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.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/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c86b67742a3298c0a5a715b57a64f11107b8a3f2 |
|
04-Nov-2007 |
Gordon Henriksen <gordonhenriksen@mac.com> |
Finishing initial docs for all transformations in Passes.html. Also cleaned up some comments in source files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
76c1b97e4020faace8c95a127f1eab66c278fb58 |
|
17-Sep-2007 |
Chris Lattner <sabre@nondot.org> |
Merge DenseMapKeyInfo & DenseMapValueInfo into DenseMapInfo Add a new DenseMapInfo::isEqual method to allow clients to redefine the equality predicate used when probing the hash table. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
9f528e628090ee0ffca35d4577c23b6544f9a119 |
|
26-Aug-2007 |
Anton Korobeynikov <asl@math.spbu.ru> |
Don't promote volatile loads/stores. This is needed (for example) to handle setjmp/longjmp properly. This fixes PR1520. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f12f8def399c80aa283783ca406434ee2f80b49f |
|
05-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
rewrite the code used to construct pruned SSA form with the IDF method. In the old way, we computed and inserted phi nodes for the whole IDF of the definitions of the alloca, then computed which ones were dead and removed them. In the new method, we first compute the region where the value is live, and use that information to only insert phi nodes that are live. This eliminates the need to compute liveness later, and stops the algorithm from inserting a bunch of phis which it then later removes. This speeds up the testcase in PR1432 from 2.00s to 0.15s (14x) in a release build and 6.84s->0.50s (14x) in a debug build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40825 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0ec8df3d5fa526cf460d7c60c515f181de28ac95 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
Factor out a whole bunch of code into it's own method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40824 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
127ed3c9299d8315723ffd470b598867fb49c972 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
Use getNumPreds(BB) instead of computing them manually. This is a very small but measurable speedup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40823 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
1e76af30116f4554fcf02c0f95705af1504b9645 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
Change the rename pass to be "tail recursive", only adding N-1 successors to the worklist, and handling the last one with a 'tail call'. This speeds up PR1432 from 2.0578s to 2.0012s (2.8%) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40822 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
e7b653dabe83546c2c13e4595c3ed068eccb88bd |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
cache computation of #preds for a BB. This speeds up mem2reg from 2.0742->2.0522s on PR1432. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
384c7e04366b3eaa1d38d285d586bf5cf13e5fd3 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
reserve operand space for phi nodes when we insert them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6c81213b4c78ff8a31430bc8a571810df06f6e90 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
use continue to avoid nesting, no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40819 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fb312c7e449bbb8b780603bf44620be91d6a65bb |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
Promoting allocas with the 'single store' fastpath is faster than with the 'local to a block' fastpath. This speeds up PR1432 from 2.1232 to 2.0686s (2.6%) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40818 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7a5745b38ccdf2794a6f04f01a1c8115ec223ad8 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
When PromoteLocallyUsedAllocas promoted allocas, it didn't remember to increment NumLocalPromoted, and didn't actually delete the dead alloca, leading to an extra iteration of mem2reg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40817 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
59a28377152789a5144588cc20e9db30759aa46d |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
std::map -> DenseMap git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40816 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c69e4915750ac715fced8d63b9601899e8a4d0ae |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
fix a logic bug where we wouldn't promote single store allocas if the stored value was a non-instruction value. Doh. This increase the # single store allocas from 8982 to 9026, and speeds up mem2reg on the testcase in PR1432 from 2.17 to 2.13s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
4f63e76cda86b676e4f0e31fd35b812e2f8dd57f |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
When we do the single-store optimization, delete both the store and the alloca so they don't get reprocessed. This speeds up PR1432 from 2.20s to 2.17s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40812 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d0458e5d4f29ce1e9ba1def22d06b362ae2c1999 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
Three improvements: 1. Check for revisiting a block before checking domination, which is faster. 2. If the stored value isn't an instruction, we don't have to check for domination. 3. If we have a value used in the same block more than once, make sure to remove the block from the UsingBlocks vector. Not doing so forces us to go through the slow path for the alloca. The combination of these improvements increases the number of allocas on the fastpath from 8935 to 8982 on PR1432. This speeds it up from 2.90s to 2.20s (31%) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40811 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c3f6ea83302dfd8e1b6d77bb6c99ecacdd6bc375 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
switch from using a std::set to using a SmallPtrSet. This speeds up the testcase in PR1432 from 6.33s to 2.90s (2.22x) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40810 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b776a335b1a3260c27555db31f7ea0bee605de04 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
In mem2reg, when handling the single-store case, make sure to remove a using block from the list if we handle it. Not doing this caused us to not be able to promote (with the fast path) allocas which have uses (whoops). This increases the # allocas hitting this fastpath from 4042 to 8935 on the testcase in PR1432, speeding up mem2reg by 2.6x git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5dd75b4ca7e582f44da2f50362e8ab4c59972b5f |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
split rewriting of single-store allocas into its own method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40806 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
bbe104002fe7398bbde5d5ec2c2e5e324cf72305 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
refactor some code to shrink PromoteMem2Reg::run a bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
483ce14bf4746d8078d65a14f61319528e1a00f1 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
add a typedef, no other change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
63cdcaa3d6c33cc1923797259bb8e5d9d9a899b1 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
avoid an unneeded vector copy. This speeds up mem2reg on the testcase in PR1432 by 6% git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40803 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
ac4aa4be9b25ca40e131bb30c2f8e5fd6fbd2615 |
|
04-Aug-2007 |
Chris Lattner <sabre@nondot.org> |
make RenamePassWorkList a local var instead of an ivar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40802 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
326821ef12c911af1d785e305e81dc3c07e456a5 |
|
07-Jun-2007 |
Devang Patel <dpatel@apple.com> |
Use DominatorTree instead of ETForest. This allows faster immediate domiantor walk. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
68c01b3cf35bb7ed2d3a3f63053e304e092bcfdd |
|
25-Apr-2007 |
Devang Patel <dpatel@apple.com> |
Mem2Reg does not need TargetData. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36444 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
41968df51e11f581eb19c8f68a8cb2f4e8acc1c5 |
|
25-Apr-2007 |
Devang Patel <dpatel@apple.com> |
Remove unused function argument. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36441 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
cdacc498e45604f1b8034102e7d7ec5212535802 |
|
21-Apr-2007 |
Owen Anderson <resistor@mac.com> |
Fix a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36299 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
df07335b4648c4cc255343081fdf61319d90431d |
|
20-Apr-2007 |
Owen Anderson <resistor@mac.com> |
Move more passes to using ETForest instead of DominatorTree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36271 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d64d3a1d283df31625b7616982a575db4734f6e5 |
|
27-Mar-2007 |
Devang Patel <dpatel@apple.com> |
Reduce malloc/free traffic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f7543fe35af4b274acb759bb388dd35c4020850e |
|
10-Mar-2007 |
Devang Patel <dpatel@apple.com> |
Remove dead comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a5b7dc5ef8cc8ed5a07fef247328ea53c32f542c |
|
10-Mar-2007 |
Devang Patel <dpatel@apple.com> |
Avoid recursion. Use iterative algorithm for RenamePass(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35052 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
dfb22c35215521e8ae9f27863b554949558bc4c1 |
|
07-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
redesign the primary datastructure used by mem2reg to eliminate an std::map of std::vector's (ouch!). This speeds up mem2reg by 10% on 176.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33974 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d3874049a55fe1af515c4f0d8f5a4040803567cb |
|
06-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
With the last change, we no longer need both directions of mapping from BBNumbers. Instead of using a bi-directional mapping, just use a single densemap. This speeds up mem2reg on 176.gcc by 8%, from 1.3489 to 1.2485s. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33940 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a0d1548d0db3bb2893cd04f4d92c066c7d1cdf5f |
|
06-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Simplify use of DFBlocks, this makes no noticable performance difference, but paves the way to eliminate BBNumbers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33938 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6a1a28dedde99b2d939c8290d1268cb4938c8183 |
|
06-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
Switch InsertedPHINodes back to SmallPtrSet now that the SmallPtrSet::erase bug is fixed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33932 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fc7d13d898b622ae6a02c71b3a30eebd53cf202b |
|
05-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
switch a SmallPtrSet back to an std::set for now, this caused problems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c670f3da72a14d10eeca7ee88abb875b57eaa6a7 |
|
05-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
switch an std::set over to a SmallPtrSet, speeding up mem2reg 6% on 176.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33929 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c837615cf0bfef743f98bb7101f27c23f6f21ba1 |
|
05-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
switch an std::set over to SmallPtrSet, speeding up mem2reg 3.4% on 176.gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33928 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
40b6555561f083930a40c5c9e8b1023c81910402 |
|
05-Feb-2007 |
Chris Lattner <sabre@nondot.org> |
eliminate some malloc traffic, this speeds up mem2reg by 3.4%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a4f0b3a084d120cfc5b5bb06f64b222f5cb72740 |
|
27-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29911 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
9525528a7dc5462b6374d38c81ba5c07b11741fe |
|
29-Jun-2006 |
Chris Lattner <sabre@nondot.org> |
Use hidden visibility to make symbols in an anonymous namespace get dropped. This shrinks libllvmgcc.dylib another 67K git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
634c76c08c34e5fb475527a4e91927a142dd9c46 |
|
27-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Fix some nondeterminstic behavior in the mem2reg pass that (in addition to nondeterminism being bad) could cause some trivial missed optimizations (dead phi nodes being left around for later passes to clean up). With this, llvm-gcc4 now bootstraps and correctly compares. I don't know why I never tried to do it before... :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27984 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
36ba5006df1dee8bb8789ee817f169af022ae239 |
|
18-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
Implement a refinement to the mem2reg algorithm for cases where an alloca has a single def. In this case, look for uses that are dominated by the def and attempt to rewrite them to directly use the stored value. This speeds up mem2reg on these values and reduces the number of phi nodes inserted. This should address PR665. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fed40df846438356d9edd5f6bd5191cd900e3c59 |
|
18-Nov-2005 |
Chris Lattner <sabre@nondot.org> |
This needs proper dominance git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5e1b23192184aadbfbd79a31641eb3c0c0ecdc05 |
|
05-Aug-2005 |
Chris Lattner <sabre@nondot.org> |
This code can handle non-dominating instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22667 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a83ba0f5c934e2cdbb5724cab365ecc0b5aae6c6 |
|
05-Aug-2005 |
Nate Begeman <natebegeman@mac.com> |
Fix a fixme in CondPropagate.cpp by moving a PhiNode optimization into BasicBlock's removePredecessor routine. This requires shuffling around the definition and implementation of hasContantValue from Utils.h,cpp into Instructions.h,cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
00b16889ab461b7ecef1c91ade101186b7f1fce2 |
|
27-Jul-2005 |
Jeff Cohen <jeffc@jolt-lang.org> |
Eliminate all remaining tabs and trailing spaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
6cfd1ebcd3d4c3b886b6b41b49806142ceb6275a |
|
30-Jun-2005 |
Chris Lattner <sabre@nondot.org> |
Fix PR590 and Transforms/Mem2Reg/2005-06-30-ReadBeforeWrite.ll. The optimization for locally used allocas was not safe for allocas that were read before they were written. This change disables that optimization in that case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22318 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fd93908ae8b9684fe71c239e3c6cfe13ff6a2663 |
|
22-Apr-2005 |
Misha Brukman <brukman+llvm@gmail.com> |
Remove trailing whitespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5a85d9c664f0687b4fc89f3b38594b9555a9f193 |
|
30-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix test/Regression/Transforms/LICM/2004-09-14-AliasAnalysisInvalidate.llx This only fails on darwin or on X86 under valgrind. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18377 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
17e6e44298d8da4cd97ba0be66225cdad4670276 |
|
18-Oct-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Correction to allow compilation with Visual C++. Patch contributed by Morten Ofstad. Thanks Morten! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17123 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
28e792c2323a878e6a4661f043f10affc804cca2 |
|
18-Oct-2004 |
Chris Lattner <sabre@nondot.org> |
Fix a bug that occurs when the constant value is the result of an invoke. In particular, invoke ret values are only live in the normal dest of the invoke not in the unwind dest. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17108 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7e40f63428fbdf64fdea5aa84459d7b3072a9a65 |
|
17-Oct-2004 |
Chris Lattner <sabre@nondot.org> |
When inserting PHI nodes, don't insert any phi nodes that are obviously unneccesary. This allows us to delete several hundred phi nodes of the form PHI(x,x,x,undef) from 253.perlbmk and probably other programs as well. This implements Mem2Reg/UndefValuesMerge.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b20724dff4485de5381b578f840df61c4cb31867 |
|
16-Oct-2004 |
Chris Lattner <sabre@nondot.org> |
When promoting mem2reg, make uninitialized values become undef isntead of 0. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a744b77e11a375927ffe6b807b99cd91cb55e2ba |
|
19-Sep-2004 |
Chris Lattner <sabre@nondot.org> |
Remove a whole bunch of horrible hacky code that was used to promote allocas whose addresses where used by trivial phi nodes and select instructions. This is now performed by the instcombine pass, which is more powerful, is much simpler, and is faster. This allows the deletion of a bunch of code, two FIXME's and two gotos. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16406 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
afbb1ccd2f20bf85385f2c88a6b534a1be3acae1 |
|
18-Sep-2004 |
Chris Lattner <sabre@nondot.org> |
Make sure to remove the Select instruction as well git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
62e29b59f50f573d0351f0cc6a5ba29ac59d8139 |
|
15-Sep-2004 |
Chris Lattner <sabre@nondot.org> |
If given an AliasSetTracker object to update, update it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16347 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
20aa474f8fbebde588edc101b90e834df28ce4ce |
|
03-Sep-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Fixes to make LLVM compile with vc7.1. Patch contributed by Paolo Invernizzi! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
551ccae044b0ff658fe629dd67edd5ffe75d10e8 |
|
02-Sep-2004 |
Reid Spencer <rspencer@reidspencer.com> |
Changes For Bug 352 Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
47b14a4a6a455c7be169cfd312fcbe796f0ad426 |
|
29-Jul-2004 |
Misha Brukman <brukman+llvm@gmail.com> |
Fix #includes of i*.h => Instructions.h as per PR403. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
abc35bcad3011d582bad3717e14c7398c8c51282 |
|
19-Jun-2004 |
Chris Lattner <sabre@nondot.org> |
Change to use the StableBasicBlockNumbering class git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14247 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
63168d2244d754b084bc107b3a1929b8abbd4dbd |
|
19-Jun-2004 |
Chris Lattner <sabre@nondot.org> |
Do not let the numbering of PHI nodes placed in the function depend on non-deterministic things like the ordering of blocks in the dominance frontier of a BB. Unfortunately, I don't know of a better way to solve this problem than to explicitly sort the BB's in function-order before processing them. This is guaranteed to slow the pass down a bit, but is absolutely necessary to get usable diffs between two different tools executing the mem2reg or scalarrepl pass. Before this, bazillions of spurious diff failures occurred all over the place due to the different order of processing PHIs: - %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.0, uint 0, uint 0 + %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.1, uint 0, uint 0 Now, the diffs match. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14244 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
8ba725b4564a0fe8721758d78101f05a68536bdf |
|
08-Apr-2004 |
Chris Lattner <sabre@nondot.org> |
Implement ScalarRepl/select_promote.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
e47f78ed124b35dbd03df9b1471bbc3c7b88898f |
|
03-Feb-2004 |
Chris Lattner <sabre@nondot.org> |
Bunch up all locally used allocas by the block they are allocated in, and process them all as a group. This speeds up SRoA/mem2reg from 28.46s to 0.62s on the testcase from PR209. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11100 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7fecc2e5e28fa223b16280a5e434d7d0e03e9c52 |
|
03-Feb-2004 |
Chris Lattner <sabre@nondot.org> |
Handle extremely trivial cases extremely efficiently. This speeds up SRoA/mem2reg from 41.2s to 27.5s on the testcase in PR209. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
2d11f167e69c9668ff6c6b86451fb124c8af7bcc |
|
12-Jan-2004 |
Chris Lattner <sabre@nondot.org> |
Implement Transforms/ScalarRepl/phinodepromote.ll, which is an important case that the C/C++ front-end generates. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10761 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f7703df4968084c18c248c1feea9961c19a32e6a |
|
09-Jan-2004 |
Chris Lattner <sabre@nondot.org> |
Finegrainify namespacification git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10727 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d0fde30ce850b78371fd1386338350591f9ff494 |
|
11-Nov-2003 |
Brian Gaeke <gaeke@uiuc.edu> |
Put all LLVM code into the llvm namespace, as per bug 109. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b576c94c15af9a440f69d9d03c2afead7971118c |
|
20-Oct-2003 |
John Criswell <criswell@uiuc.edu> |
Added LLVM project notice to the top of every C++ source file. Header files will be on the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
3c4a34e8db5057458d7590b85e9819b7b4c4a7b8 |
|
18-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Fix PR#50 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9227 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
69091be83bfcfcf52f9d0b1faba94675826607db |
|
06-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
This changes the PromoteMemToReg function to create "pruned" SSA form, not "minimal" SSA form (in other words, it doesn't insert dead PHIs). This speeds up the mem2reg pass very significantly because it doesn't have to do a lot of frivolous work in many common cases. In the 252.eon function I have been playing with, this doesn't even insert the 120 PHI nodes that it used to which were trivially dead (in the process of promoting 356 alloca instructions overall). This speeds up the mem2reg pass from 1.2459s to 0.1284s. More significantly, the DCE pass used to take 2.4138s to remove the 120 dead PHI nodes that mem2reg constructed, now it takes 0.0134s (which is the time to scan the function and decide that there is nothing dead). So overall, on this one function, we speed things up a total of 3.5179s, which is a 24.8x speedup! :) This change is tested by the Mem2Reg/2003-10-05-DeadPHIInsertion.ll test, which now passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8884 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
43f820d1f7638656be2158efac7dd8f5b08b8b77 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Change the interface to PromoteMemToReg to also take a DominatorTree git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
24011be956e80e43d111d29cd53ca40e242e53df |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Speed up the mem2reg transform for allocas which are only read/written in a single basic block. This is amazingly common in code generated by the C/C++ front-ends. This change makes it not have to insert ANY phi nodes, whereas before it would insert a ton of dead ones which DCE would have to clean up. Thus, this fix improves compile-time performance of these trivial allocas in two ways: 1. It doesn't have to do the walking and book-keeping for renaming 2. It does not insert dead phi nodes for them which would have to subsequently be cleaned up. On my favorite testcase from 252.eon, this special case handles 305 out of 356 promoted allocas in the function. It speeds up the mem2reg pass from 7.5256s to 1.2505s. It inserts 677 fewer dead PHI nodes, which speeds up a subsequent -dce pass from 18.7524s to 2.4806s. There are still 120 trivially dead PHI nodes being inserted for variables used in multiple basic blocks, but they are not handled by this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8881 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
92e4975af4a5582c9d38faa6130be81701a308da |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
The first PHI node may be null, scan for the first non-null one git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8865 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
3c881cb4ce4adc1765378360ba6383bdd64287f3 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
The VersionNumbers vector is only used during PHI placement. Turn it into an argument, allowing us to get rid of the vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8864 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
afa060ea3ff93eb99bafd41e593707cee3b9afa3 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
* Update file header comment *** Revamp the code which handled unreachable code in the function. Now the code is much more efficient for high-degree basic blocks, such as those that occur in the 252.eon SPEC benchmark. For the interested, the time to promote a SINGLE alloca in _ZN7mrScene4ReadERSi function used to be > 3.5s. Now it is < .075s. The function has a LOT of allocas in it, so it appeared to be infinite looping, this should make it much nicer. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8863 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
521c16aadd56503320f61ec0a78ca7fda130ee8f |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Simplify the loop a bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8862 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
92581c24a3b9c4ec2c31ae1985eb5980c5f5c86f |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
There is no need for separate WriteSets and PhiNodeBlocks lists. It is just a work-list of value definitions. This allows elimination of the explicit 'iterative' step of the algorithm, and also reuses temporary memory better. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
036f1e7478ed7b104fe4a5b895377796a20b9222 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
The PhiNodes 2D vector is only used during PHI node placement. It doesn't need to be an instance variable! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8860 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
9e38fbf57feef1e6680c0aed64b1d919b4e01626 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
* Document instance vars better * Fuse two parallel loops * Use a more specific type for AllocaLookup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
9157f041abcd0d3bf55dd09bfe85238b6626cf19 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
Two small cleanups/speedups: * Do not insert a new entry into NewPhiNodes during the rename pass if there are no PHIs in a block. * Do not compute WriteSets in parallel git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8858 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0fa157127f1e58d0acfa6fbd687617629e6ebf43 |
|
05-Oct-2003 |
Chris Lattner <sabre@nondot.org> |
* Minor cleanups * Eliminate the KillList instance variable, instead, just delete loads and stores as they are "renamed", and delete allocas when they are done * Make the 'visited' set an instance variable to avoid passing it on the stack. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8857 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5560c9d49ccae132cabf1155f18aa0480dce3eda |
|
18-Aug-2003 |
Misha Brukman <brukman+llvm@gmail.com> |
Spell `necessary' correctly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c8789cb40b81d032b79e02023e025d3ca7711365 |
|
25-Apr-2003 |
Chris Lattner <sabre@nondot.org> |
Fix bug: mem2reg/2003-04-24-MultipleIdenticalSuccessors.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
ad80a46caacef8b4073df3fc10e0c58ebbee4ec7 |
|
24-Apr-2003 |
Chris Lattner <sabre@nondot.org> |
Fix iterator invalidation problem git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5895 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
085c801dee6869e657981750e723fe5cd1482c55 |
|
21-Apr-2003 |
Chris Lattner <sabre@nondot.org> |
Fix bug where use still existed in dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5824 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
393689afa92c2ae3ccf7d40841f2dde3fc7f9784 |
|
18-Apr-2003 |
Chris Lattner <sabre@nondot.org> |
Fix bug: Mem2reg/2003-04-18-DeadBlockProblem.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5810 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d4bd3eba5d42356823730fe34418a563a2a2ffd9 |
|
10-Apr-2003 |
Chris Lattner <sabre@nondot.org> |
* Fix bug: Mem2Reg/2003-04-10-DFNotFound.ll * Make Mem2Reg assign version numbers now for renamed variables instead of .mem2reg suffixes. This produces what people think of as SSA. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5771 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
fb743a937f6856e3ab1f8ed599677038750a550e |
|
03-Mar-2003 |
Chris Lattner <sabre@nondot.org> |
Change the mem2reg interface to accept a TargetData argument git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5685 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d99bf49a53d170112c0241a4393ab374666b04bd |
|
23-Feb-2003 |
Chris Lattner <sabre@nondot.org> |
Split mem2reg promotion into two parts: a function which does the work, and a pass which wraps the function. This allows other passes to use the functionality git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
cc139de15a24d576fd98ef4599558016c86b64d6 |
|
22-Feb-2003 |
Chris Lattner <sabre@nondot.org> |
Clean up std namespace references git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5608 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
cb2610ea037a17115ef3a01a6bdaab4e3cfdca27 |
|
21-Oct-2002 |
Chris Lattner <sabre@nondot.org> |
- Rename AnalysisUsage::preservesAll to getPreservesAll & preservesCFG to setPreservesCFG to be less confusing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a92f696b74a99325026ebbdbffd2a44317e0c10b |
|
02-Oct-2002 |
Chris Lattner <sabre@nondot.org> |
Updates to work with recent Statistic's changes: * Renamed StatisticReporter.h/cpp to Statistic.h/cpp * Broke constructor to take two const char * arguments instead of one, so that indendation can be taken care of automatically. * Sort the list by pass name when printing * Make sure to print all statistics as a group, instead of randomly when the statistics dtors are called. * Updated ProgrammersManual with new semantics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
112e97dbee144fd8e55401f1a785301a9c6c0806 |
|
24-Sep-2002 |
Chris Lattner <sabre@nondot.org> |
- Fix bug: Mem2Reg/2002-05-01-ShouldNotPromoteThisAlloca.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3917 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
1d608abbc07bbc7c78c20da6b305ef14c6c30e8e |
|
11-Sep-2002 |
Chris Lattner <sabre@nondot.org> |
Clean up code due to auto-insert constructors git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3665 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
cc63f1c67456f41b25e8ccb8c1dce72067ddbadf |
|
23-Aug-2002 |
Chris Lattner <sabre@nondot.org> |
Eliminated the MemAccessInst class, folding contents into GEP class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3487 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5f0eb8da62308126d5b61e3eee5bee75b9dc5194 |
|
08-Aug-2002 |
Chris Lattner <sabre@nondot.org> |
- Cleaned up the interface to AnalysisUsage to take analysis class names instead of ::ID's. - Pass::getAnalysis<> now no longer takes an optional argument git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3265 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a6275ccdf5e1aa208afde56c498e2b13e16442f0 |
|
26-Jul-2002 |
Chris Lattner <sabre@nondot.org> |
* Add support for different "PassType's" * Add new RegisterOpt/RegisterAnalysis templates for registering passes that are to show up in opt or analyze * Register Analyses now * Change optimizations to use RegisterOpt instead of RegisterPass * Add support for different "PassType's" * Add new RegisterOpt/RegisterAnalysis templates for registering passes that are to show up in opt or analyze * Register Analyses now * Change optimizations to use RegisterOpt instead of RegisterPass * Remove getPassName implementations from various subclasses git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3113 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f629309f74cf1a64aa7fd1cd5784fd7db9a8f59e |
|
23-Jul-2002 |
Chris Lattner <sabre@nondot.org> |
*** empty log message *** git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
7e70829632f82de15db187845666aaca6e04b792 |
|
25-Jun-2002 |
Chris Lattner <sabre@nondot.org> |
MEGAPATCH checkin. For details, See: docs/2002-06-25-MegaPatchInfo.txt git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
3dec1f272219ee1f8e1499929cdf53f5bc3c2272 |
|
10-May-2002 |
Chris Lattner <sabre@nondot.org> |
Add support for printing out statistics information when -stats is added to the command line git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
022103b3f33febb7e54b8fdf2c9bc461eea78cba |
|
07-May-2002 |
Chris Lattner <sabre@nondot.org> |
Merge all individual .h files into a single Scalar.h file git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
68d024dde4b88830e94e6807aa277116b90ddae7 |
|
01-May-2002 |
Chris Lattner <sabre@nondot.org> |
Fixed bug: test/Regression/Transforms/Mem2Reg/2002-05-01-ShouldNotPromoteThisAlloca.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
72a1d4e12657620ea1dd5a2fdb7570da81f5079c |
|
29-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
changes because iMemory.h no longer #includes DerivedTypes.h This only requires Type.h anyway git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2405 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
c6f3ae5c66c8e0dab6a2bd9601d0e253ef9ba794 |
|
29-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Eliminate duplicate or unneccesary #include's git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
96c466b06ab0c830b07329c1b16037f585ccbe40 |
|
29-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Add new optional getPassName() virtual function that a Pass can override to make debugging output a lot nicer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
97e52e43361e77963145b95a576db11b4d14d309 |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Tighten up the AnalysisUsage of lots of passes, primarily to correctly indicate whether or not they invalidate the CFGA git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2386 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
31bcdb822fe9133b1973de51519d34e5813a6184 |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Split ConstantVals.h into Constant.h and Constants.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2378 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b9ddce65c281f023780d2b6578e7ed6d2913a2cb |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Eliminate the PromoteInstance class, incorporating it into the PromotePass class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0adb9f95eaceda29c2de42fbe7a32cbc2f875a0a |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Eliminate visited, CurrentValue, and WriteSets as instance variables of PromoteInstance. Make them local variables that are passed around as appropriate. Especially in the case of CurrentValue, this makes the code simpler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2374 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
5b5df1747feac197fd839c956952fd4d79c58e79 |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
* Fix bug: test/Regression/Transforms/Mem2Reg/2002-03-28-UninitializedVal.ll * Minor cleanup that was missed in last patch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
9f4eb01dd4cdf267f0b5aac40e78e262890b6aa5 |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
This huge changeset is a strictly cleanup change Bugfixes will come in the next revision so that the diff is obvious. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2372 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
1b7f7dc4b45a900fae2e9b062d588a995935727a |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Eliminate the cfg namespace, moving LoopInfo, Dominators, Interval* classes to the global namespace git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2370 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
a298d27808ecb8ffb574d6e50f56601db2ec5fda |
|
28-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Change the Dominator info and LoopInfo classes to keep track of BasicBlock's, not const BasicBlocks git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2337 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
f57b845547302d24ecb6a9e79d7bc386f761a6c9 |
|
27-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
* Rename MethodPass class to FunctionPass - Rename runOnMethod to runOnFunction * Transform getAnalysisUsageInfo into getAnalysisUsage - Method is now const - It now takes one AnalysisUsage object to fill in instead of 3 vectors to fill in - Pass's now specify which other passes they _preserve_ not which ones they modify (be conservative!) - A pass can specify that it preserves all analyses (because it never modifies the underlying program) * s/Method/Function/g in other random places as well git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2333 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
42a412711c000d175d992dd1b85cfd04fd345e5b |
|
09-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Add #includes to make up for #includes pruned out of header files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2207 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
237e6d10f24863cf48821b601b4164794e89d847 |
|
09-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
s/Method/Function Remove extraneous #includes of llvm/Assembly/Writer git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2178 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
2fbfdcffd3e0cf41422aaa6c526c37cb02b81341 |
|
07-Apr-2002 |
Chris Lattner <sabre@nondot.org> |
Change references to the Method class to be references to the Function class. The Method class is obsolete (renamed) and all references to it are being converted over to Function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
b1be061a76b47fe3f87596afb59674cc0c88a9b4 |
|
28-Mar-2002 |
Cameron Buschardt <buschard@uiuc.edu> |
* Move classes around * rename constructor function * Move stuff into anonymous namespaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2007 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
98a37c2b9c9c7f2791e0a8abda33b9a2eb36ad8e |
|
28-Mar-2002 |
Cameron Buschardt <buschard@uiuc.edu> |
Implemented promote mem->reg pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2005 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
4fb71ba29d052eb89a3078089d189ec477eb5b72 |
|
25-Feb-2002 |
Chris Lattner <sabre@nondot.org> |
Namespaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
0af83c6ed278ada0c7fc49e5445d639ecf558801 |
|
12-Feb-2002 |
Chris Lattner <sabre@nondot.org> |
Add neccesary #include git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1742 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
71b9411b8c90cfb479ab7d641ba81fbe379f33df |
|
12-Feb-2002 |
Chris Lattner <sabre@nondot.org> |
I forgot to provide dominance frontier information. Now it's available. Also add more comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|
d3db02248264b3ede56753cbb28df9d4ae45a1dd |
|
12-Feb-2002 |
Chris Lattner <sabre@nondot.org> |
Initial checkin of new memory -> register promotion pass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1739 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
|