History log of /external/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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