History log of /external/llvm/lib/CodeGen/StrongPHIElimination.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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/CodeGen/StrongPHIElimination.cpp
05d96f98cbd96dab7f4ea1ea4ebe4285597e7e88 22-Aug-2012 Benjamin Kramer <benny.kra@googlemail.com> Reduce duplicated hash map lookups.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
a5b51f5694b143790d7d081eef689614fbbb00b5 03-Aug-2012 Matt Beaumont-Gay <matthewbg@google.com> Silence unused variable warning in -asserts build

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
bf60aa9db5953dd99c561dfa9323b1e3293a5a85 03-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate the VNInfo::hasPHIKill() flag.

The only real user of the flag was removeCopyByCommutingDef(), and it
has been switched to LiveIntervals::hasPHIKill().

All the code changed by this patch was only concerned with computing and
propagating the flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
b18d779b35909cd5b753871f8bf2ff4f6c17ace1 27-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Eliminate the IS_PHI_DEF flag and VNInfo::setIsPHIDef().

A value number is a PHI def if and only if it begins at a block
boundary. This can be derived from the def slot, a separate flag is not
necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
b0934ab7d811e23bf530371976b8b35f3242169c 19-Feb-2012 Ahmed Charles <ace2001ac@gmail.com> Remove dead code. Improve llvm_unreachable text. Simplify some control flow.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
fb5d511c0d91b22e49b32452e8e6dea202318d80 06-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't explicitly renumber slot indices.

We have automatic local renumbering now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149920 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
3b1088a2cc15a39c7a7b8dd95a56143f1dda6863 04-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't store COPY pointers in VNInfo.

If a value is defined by a COPY, that instuction can easily and cheaply
be found by getInstructionFromIndex(VNI->def).

This reduces the size of VNInfo from 24 to 16 bytes, and improves
llc compile time by 3%.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
2debd48ca790ac01be6e12e094fdf4fdcadc8364 13-Nov-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename SlotIndexes to match how they are used.

The old naming scheme (load/use/def/store) can be traced back to an old
linear scan article, but the names don't match how slots are actually
used.

The load and store slots are not needed after the deferred spill code
insertion framework was deleted.

The use and def slots don't make any sense because we are using
half-open intervals as is customary in C code, but the names suggest
closed intervals. In reality, these slots were used to distinguish
early-clobber defs from normal defs.

The new naming scheme also has 4 slots, but the names match how the
slots are really used. This is a purely mechanical renaming, but some
of the code makes a lot more sense now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
326e491ce7f7ad61014339c36a8cd90b33af98b9 13-Oct-2011 Cameron Zwarich <zwarich@apple.com> Use an existing method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
980df169203a5f60793e758cdc5cbcad853ca9eb 12-Oct-2011 Cameron Zwarich <zwarich@apple.com> To find the exiting VN of a LiveInterval from a block, use the previous slot
rather than the previous index. If a block has a single instruction, the
previous index may be in a different basic block.

I have no clue how this used to work on all of test-suite, because now this
failure is seen quite often when trying to compile code with -strong-phi-elim.
This fixes PR10252.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141812 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
c66d36028b21077aa1715331c22347b47b4da94f 10-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Trim an unneeded header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137184 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
7a2bdde0a0eebcd2125055e0eacaca040f0b766c 15-Apr-2011 Chris Lattner <sabre@nondot.org> Fix a ton of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129558 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
1a73cedca0a83d64149ee03577991a196338a9c5 14-Feb-2011 Cameron Zwarich <zwarich@apple.com> Add some statistics to StrongPHIElimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125477 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
f78df5ebb8319eb28936937e7f53aac4afb2270b 09-Jan-2011 Cameron Zwarich <zwarich@apple.com> Eliminate some extra hash table lookups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123115 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
e272deed7b821976c4ebfe903807dff4f5e852a5 09-Jan-2011 Cameron Zwarich <zwarich@apple.com> Add an informative comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123114 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
7c8818630991855830c94c79e1035222f3749689 08-Jan-2011 Cameron Zwarich <zwarich@apple.com> Fix coding style.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
26db45818a4f1b8483ac5a904eefa43c9b120a5d 04-Jan-2011 Cameron Zwarich <zwarich@apple.com> Switch to path halving from path compression for a small speedup. This also
makes getLeader() nonrecursive.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122811 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
645b1d2f12e6637840d3b118231f60b3a587073a 04-Jan-2011 Cameron Zwarich <zwarich@apple.com> Eliminate repeated allocation of a per-BB DenseMap for a 4.6% reduction of time
spent in StrongPHIElimination on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122803 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
d16ad3e43c4dc59b3f6f8f36338a778f7c7a8701 30-Dec-2010 Cameron Zwarich <zwarich@apple.com> Use getVRegDef() instead of def_iterator. This leads to fewer defs being added
with 2-address instructions, for about a 3.5% speedup of StrongPHIElimination on
403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122635 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
1558f5ed1975495c0394d9de7acc144d0c8742da 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Instead of processing every instruction when splitting interferences, only
process those instructions that define phi sources. This is a 47% speedup of
StrongPHIElimination compile time on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
480b80a74648c9ea93b9a8986f9ca6a9de536abc 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Add text explaining an assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
438e25ccdcd8673b1ff8d54ee80a5894a29b2590 29-Dec-2010 Cameron Zwarich <zwarich@apple.com> Revert the optimization in r122596. It is correct for all current targets, but
it relies on assumptions that may not be true in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122608 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
92f0fcb6df128ab99a63986b5be00e80fc9f98c6 28-Dec-2010 Cameron Zwarich <zwarich@apple.com> Avoid iterating every operand of an instruction in StrongPHIElimination, since
we are only interested in the defs when discovering interferences.

This is a 28% speedup running StrongPHIElimination on 403.gcc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122596 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
c3ab20e62e8be9b55cce0145d02ebdd20775a53a 27-Dec-2010 Cameron Zwarich <zwarich@apple.com> Change an assertion to assert what the code actually relies upon.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122586 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
4e7f23b1b622c2527c3ccff8df3179b692dbcca6 27-Dec-2010 Cameron Zwarich <zwarich@apple.com> Land a first cut at StrongPHIElimination. There are only 5 new test failures
when running without the verifier, and I have not yet checked them to see if
the new results are still correct. There are more verifier failures, but they
all seem to be additional occurrences of verifier failures that occur with the
existing PHIElimination pass. There are a few obvious issues with the code:

1) It doesn't properly update the register equivalence classes during copy
insertion, and instead recomputes them before merging live intervals and
renaming registers. I wanted to keep this first patch simple for debugging
purposes, but it shouldn't be very hard to do this.

2) It doesn't mix the renaming and live interval merging with the copy insertion
process, which leads to a lot of virtual register churn. Virtual registers and
live intervals are created, only to later be merged into others. The code should
be smarter and only create a new virtual register if there is no existing
register in the same congruence class.

3) In one place the code uses a DenseMap per basic block, which is unnecessary
heap allocation. There should be an inline storage version of DenseMap.

I did a quick compile-time test of running llc on 403.gcc with and without
StrongPHIElimination. It is slightly slower with StrongPHIElimination, because
the small decrease in the coalescer runtime can't beat the increase in phi
elimination runtime. Perhaps fixing the above performance issues will narrow
the gap.

I also haven't yet run any tests of the quality of the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122582 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ef485d86585123b5e31a7f88aef22725ebd07e7a 24-Dec-2010 Cameron Zwarich <zwarich@apple.com> Simplify a check for implicit defs and remove a FIXME.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122537 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
47bce43229d1ccb9bdbd9f854809d588865e9648 21-Dec-2010 Cameron Zwarich <zwarich@apple.com> Incremental progress towards a new implementation of StrongPHIElimination. Most
of the problems with my last attempt were in the updating of LiveIntervals
rather than the coalescing itself. Therefore, I decided to get that right first
by essentially reimplementing the existing PHIElimination using LiveIntervals.

It works correctly, with only a few tests failing (which may not be legitimate
failures) and no new verifier failures (at least as far as I can tell, I didn't
count the number per file).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122321 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9eaf49b320e7725fbf4e24721d91a69a6d36938f 05-Dec-2010 Cameron Zwarich <zwarich@apple.com> Some cleanup before I start committing some incremental progress on
StrongPHIElimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
68be956fff5db5152f5b0ec7e94c42b14e92a3e8 03-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete the StrongPHIElimination pass, leaving only a shell.

The StrongPHIElimination pass did not work, and nobody has worked on it for two
years.

A rewrite is underway, so I am leaving this shell pass instead of deleting it
completely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120830 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
081c34b725980f995be9080eaec24cd3dfaaf065 19-Oct-2010 Owen Anderson <resistor@mac.com> Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.

Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.

I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116820 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
2ab36d350293c77fc8941ce1023e4899df7e3a82 12-Oct-2010 Owen Anderson <resistor@mac.com> Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ce665bd2e2b581ab0858d1afe359192bac96b868 08-Oct-2010 Owen Anderson <resistor@mac.com> Now with fewer extraneous semicolons!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
02dd53e1c5b941ca5f60fca1b95ebcaf9ccd1dfc 23-Aug-2010 Owen Anderson <resistor@mac.com> Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111815 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
90c579de5a383cee278acc3f7e7b9d0a656e6a35 06-Aug-2010 Owen Anderson <resistor@mac.com> Reapply r110396, with fixes to appease the Linux buildbot gods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
1f74590e9d1b9cf0f1f81a156efea73f76546e05 06-Aug-2010 Owen Anderson <resistor@mac.com> Revert r110396 to fix buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9ccaf53ada99c63737547c0235baeb8454b04e80 06-Aug-2010 Owen Anderson <resistor@mac.com> Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110396 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
1e1098c6f39590e1e74e5cb3c2a1652d8f3cb16a 11-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace copyRegToReg with COPY everywhere in lib/CodeGen except for FastISel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
15a571436da812c7cecbc3f3423ead2edff50358 26-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't track kills in VNInfo. Use interval ends instead.

The VNInfo.kills vector was almost unused except for all the code keeping it
updated. The few places using it were easily rewritten to check for interval
ends instead.

The two new methods LiveInterval::killedAt and killedInRange are replacements.

This brings us down to 3 independent data structures tracking kills.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
34dcc6fadca0a1117cdbd0e9b35c991a55b6e556 06-May-2010 Dan Gohman <gohman@apple.com> Add a DebugLoc argument to TargetInstrInfo::copyRegToReg, so that it
doesn't have to guess.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103194 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
f451cb870efcf9e0302d25ed05f4cac6bb494e42 10-Feb-2010 Dan Gohman <gohman@apple.com> Fix "the the" and similar typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
518bb53485df640d7b7e3f6b0544099020c42aa7 09-Feb-2010 Chris Lattner <sabre@nondot.org> move target-independent opcodes out of TargetInstrInfo
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
dea8fbcae580f28b3cc52120800e1a7e34b95c9f 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92596 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
6532ff889cdd671a715ea27cd7fe0e71e4418a91 18-Dec-2009 Bill Wendling <isanbard@gmail.com> Revert accidental commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91635 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
3de8249078354d25b37b40e0f10b4f88226d3dd4 18-Dec-2009 Bill Wendling <isanbard@gmail.com> Turn off critical edge splitting for landing pads. The introduction of a
non-landing pad basic block as the successor to a block that ends in an
unconditional jump will cause block folding to remove the added block as a
successor. Thus eventually removing it AND the landing pad entirely. Critical
edge splitting is an optimization, so we can safely turn it off when dealing
with landing pads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
233a60ec40b41027ff429e2f2c27fa2be762f2e9 04-Nov-2009 Lang Hames <lhames@gmail.com> The Indexes Patch.

This introduces a new pass, SlotIndexes, which is responsible for numbering
instructions for register allocation (and other clients). SlotIndexes numbering
is designed to match the existing scheme, so this patch should not cause any
changes in the generated code.

For consistency, and to avoid naming confusion, LiveIndex has been renamed
SlotIndex.

The processImplicitDefs method of the LiveIntervals analysis has been moved
into its own pass so that it can be run prior to SlotIndexes. This was
necessary to match the existing numbering scheme.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.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/CodeGen/StrongPHIElimination.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/CodeGen/StrongPHIElimination.cpp
6cc91e39c04c0c00756e7667f623f787c4851439 03-Oct-2009 Lang Hames <lhames@gmail.com> Oops. Renamed remaining MachineInstrIndex references.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
cc3b0650f1feec45d1a2890b20c05c4b325f1788 03-Oct-2009 Lang Hames <lhames@gmail.com> Renamed MachineInstrIndex to LiveIndex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83254 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9647994e097840d8ea7bd3ed7014934034f38763 09-Sep-2009 Lang Hames <lhames@gmail.com> Removed static qualifier from a few index related methods. These methods may require a LiveIntervals instance in future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81374 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
8651125d2885f74546b6e2a556082111d5b75da3 04-Sep-2009 Lang Hames <lhames@gmail.com> Replaces uses of unsigned for indexes in LiveInterval and VNInfo with
a new class, MachineInstrIndex, which hides arithmetic details from
most clients. This is a step towards allowing the register allocator
to update/insert code during allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81040 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
bbbfa99d3d18fe9f20265305e833666645ada528 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove a few DOUTs here and there.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79832 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
52c1afcaea61440950a11a4ccadac4354420d727 11-Aug-2009 Lang Hames <lhames@gmail.com> Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
845012e6d31799c7fbd1193fa1af8ee2d12e9231 01-Aug-2009 Dan Gohman <gohman@apple.com> Use setPreservesAll and setPreservesCFG in CodeGen passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77754 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ffd1326ff8dfc652a8026c3faebf55bbba7c32c7 09-Jul-2009 Lang Hames <lhames@gmail.com> Improved tracking of value number kills. VN kills are now represented
as an (index,bool) pair. The bool flag records whether the kill is a
PHI kill or not. This code will be used to enable splitting of live
intervals containing PHI-kills.

A slight change to live interval weights introduced an extra spill
into lsr-code-insertion (outside the critical sections). The test
condition has been updated to reflect this.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75097 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
857c4e01f85601cf2084adb860616256ee47c177 17-Jun-2009 Lang Hames <lhames@gmail.com> VNInfo cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
f41538d1b54f55e8900394929b50f7ce3e61125f 02-Jun-2009 Lang Hames <lhames@gmail.com> Update to in-place spilling framework. Includes live interval scaling and trivial rewriter.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72729 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
d55fccde4cc8a263f668c2f1db7fbe96fc19d4a6 12-Oct-2008 Owen Anderson <resistor@mac.com> Fix a bug in live-in detection that caused lost-copy problems to show up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57424 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
0304b87cce60f5d98bd5a505bf8bee0b10f71548 04-Oct-2008 Argyrios Kyrtzidis <akyrtzi@gmail.com> Fix compilation error on MSVC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57046 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
d735b8019b0f297d7c14b55adcd887af24d8e602 03-Oct-2008 Dan Gohman <gohman@apple.com> Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
8481ee7f521de7e5c82b4c0773e37ce8410271cd 02-Oct-2008 Owen Anderson <resistor@mac.com> Use a multimap rather than a map for holding the list of copies to insert, so we don't lose copies when two of them have
the same source. I don't know what I was thinking when I wrote this originally.
Note: There's probably a more efficient way to do this, but I need to think about it some more, and about what determinism
guarantees need to be present.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56964 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
05472ee54bea84f487c6970b741625c3ca410b01 01-Oct-2008 Owen Anderson <resistor@mac.com> Mark merged-in VNInfo's as being PHIKilled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
082d35136105fd061ed66182bd76cd96ffeda18d 26-Sep-2008 Owen Anderson <resistor@mac.com> We don't need to insert copies for implicit_def's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
f835f8407196812c76ec5c20aa6a03d1249e8baa 24-Sep-2008 Owen Anderson <resistor@mac.com> Fix off-by-one error when updating live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56567 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
fae86eddeb6453e5d27a19ba2a07a7bb4505fc4f 23-Sep-2008 Owen Anderson <resistor@mac.com> Add initial support for inserting last minute copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56485 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
e04cec0ecf19750da68e0622d52e0f37297723b4 22-Sep-2008 Owen Anderson <resistor@mac.com> Significant improvements to the logic for merging live intervals. This code can't
just use LI::MergeValueAsValue, as its behavior in the presence of overlapping ranges
isn't what StrongPHIElimination wants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56472 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ae73dc1448d25b02cabc7c64c86c64371453dda8 04-Sep-2008 Dan Gohman <gohman@apple.com> Tidy up several unbeseeming casts from pointer to intptr_t.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
a8c763b3071ae1a58ee8baeb282331245527e004 14-Aug-2008 Dan Gohman <gohman@apple.com> Use empty() instead of begin() == end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
32767955a462a493f419e00421836cf89c23ad3b 13-Aug-2008 Owen Anderson <resistor@mac.com> Get rid of unused variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54742 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
27d6681496a77aed117ec2d8bcee0d48cdf9072d 13-Aug-2008 Owen Anderson <resistor@mac.com> 1) Merge entire live intervals instead of parts of them.
2) Conditionalize temporary insertion if we don't need it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
724acf1c52fcd844637a189e7490c3069ef359f2 07-Aug-2008 Owen Anderson <resistor@mac.com> Do a dominator walk when scheduling copies, rather than a DFS on the CFG. Also, fix a few problems when creating
live intervals for temporaries created by phi elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54483 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
883771f86a111c43ce7c30085a1f4820b66f5712 07-Aug-2008 Owen Anderson <resistor@mac.com> Correct handle cases where two phis are coalesced together, and correct break up the case where two different
phis want to coalesce with the same vreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54426 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9860b71b6a23bc0ae620d7dfc621ea1ffafbf8d8 06-Aug-2008 Owen Anderson <resistor@mac.com> We don't need to try to coalesce input vregs that are the same as the output vreg.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9b49120408e6c0e10e18ce38cae7120c954fe708 06-Aug-2008 Owen Anderson <resistor@mac.com> Only trim a live interval if the register is not used after the PHI node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
71ac0be6bb8ef79b79b3b9874cb2886fbb04d2d5 05-Aug-2008 Owen Anderson <resistor@mac.com> Oops, we were already checking for dead phis. Handle this the proper way, then.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54371 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
e7b8205e6ec63502c6375077faf0887ddf776ba0 05-Aug-2008 Owen Anderson <resistor@mac.com> We don't need to update live intervals for dead PHIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54369 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
d723f722b2457dd847ece84f9cfa7cfae33f9bb0 30-Jul-2008 Owen Anderson <resistor@mac.com> Use existing LiveInterval methods to simplify live interval merging. Thanks to Evan for pointing these out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
b9fb8d1e69aa910eb6bb03d3d66e5a2e25a20cd8 30-Jul-2008 Owen Anderson <resistor@mac.com> When merging live intervals, we also need to merge in any live ranges that are inputs to two-address instructions
that themselves define a range we already care about.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
83ea1f8e19dc1fae54a3e40689ad0a76a8ff3992 29-Jul-2008 Owen Anderson <resistor@mac.com> When merging a PHI operand's live interval into the PHI's live interval, we need to merge over all liveranges in
the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54174 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
a279a896ecd1601060adcc6563488f27b12319ef 26-Jul-2008 Owen Anderson <resistor@mac.com> Fix the issues originally addressed in r54070. After thinking about it some more, I realized that the right thing to do
is to have StrongPHIElimination use its knowledge of the PHIs before they're erased to update the intervals appropriate. This is
both simpler and more accurate than the alternative, which was having LIA figure it out when it renumbered things, plus it's just
the right thing to do!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54077 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
020decc2b4a193a22314e174808269a5ea430dfe 25-Jul-2008 Owen Anderson <resistor@mac.com> In order to avoid reprocessing a register more than once, we need to add it
to the handled set so it will get filtered out in future iterations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54065 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
55c64358d1c04990cd5f50785d3e3b27447dac21 25-Jul-2008 Owen Anderson <resistor@mac.com> Remove live interval entries for an interval if we're eliminating its only VN.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
c12417edc9fe88918e09b58716bdb26bd9618239 24-Jul-2008 Owen Anderson <resistor@mac.com> Store the predecessor MBB in the PHIUnion, rather than an index, since the indices will change after renumbering.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
417dc2f5958b7233011b55bf36b20eae5a50f83f 05-Jun-2008 Owen Anderson <resistor@mac.com> Remove debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
a9efb264b02d83fab150b6869ef2d372949a1303 05-Jun-2008 Owen Anderson <resistor@mac.com> Use the newly created helper on LiveIntervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
38b425020b102716d58c0833ff9ef56bc1d750c4 04-Jun-2008 Owen Anderson <resistor@mac.com> Correctly construct live intervals for the copies we inserted into the predecessors of a block containing a PHI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51950 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
3094a4c97af4e81ff3bf9eea1997b86886dffcf2 04-Jun-2008 Owen Anderson <resistor@mac.com> We need to subtract one from this index because live ranges are open at the end.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51922 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
3947e4d142c8a3fd958e62ace0a1333fb9e5a220 30-May-2008 Owen Anderson <resistor@mac.com> Preserve the register coallescer, and update live intervals more correctly by triggering a renumbering after phi elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
6ddba2b933645d308428201e942abe1274fa5085 13-May-2008 Dan Gohman <gohman@apple.com> Change class' public PassInfo variables to by initialized with the
address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.

Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
844731a7f1909f55935e3514c9e713a62d67662e 13-May-2008 Dan Gohman <gohman@apple.com> Clean up the use of static and anonymous namespaces. This turned up
several things that were neither in an anonymous namespace nor static
but not intended to be global.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
52b1733df4bb3cafa7a81384da7e81a1fa66cea5 02-Apr-2008 Owen Anderson <resistor@mac.com> In some situations, we need to check for local interferences between the PHI
node and its inputs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49070 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
59df878391b5a10d184636fed608f6a9cb29761f 02-Apr-2008 Owen Anderson <resistor@mac.com> Correctly mark a valno that was previous defined by a PHI node as having an
unknown defining inst after PHI elimination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
78216bc9f89ee819f325f79eebdc9d6365cd80ed 01-Apr-2008 Owen Anderson <resistor@mac.com> Don't dereference MBB->end().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
bc91bd34f1d2e4fdfef691fbe9015eabdeec8071 31-Mar-2008 Owen Anderson <resistor@mac.com> Fix a major bug in the DFS calculation. Thanks for Christopher Lamb for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48973 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
c7c00361ce1457f4a033ae6246aa54d0d5bfb1d5 29-Mar-2008 Owen Anderson <resistor@mac.com> Remove some unneeded code for LiveInterval joining, and fix a bug in the Phi elimination algorithm where we were accidentally reasoning about
the source rather than the destination.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48936 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
d382f8a32de02e04db5f88e881fe11db4040be40 26-Mar-2008 Owen Anderson <resistor@mac.com> Dead PHI instructions need to be handled specially.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48811 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
e4ded8937a8fcc164b2315c9b85440230a2b84cb 25-Mar-2008 Owen Anderson <resistor@mac.com> Remove some debugging code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48803 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
403dad66604a88d896bd43a39a289c164b7e581d 25-Mar-2008 Owen Anderson <resistor@mac.com> StrongPHIElimination doesn't support swapping live intervals like the coalescer does.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48802 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9a31444ee6395b8c9b9eeb15581751f365665618 24-Mar-2008 Owen Anderson <resistor@mac.com> Remove #include<iostream>, which I was using for debugging.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48739 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
e46611e6bc41bb6e7256e03b42b4796033167b91 24-Mar-2008 Owen Anderson <resistor@mac.com> Be sure to remove intervals after we've joined them. Also, remove some duplicated code.

With this pass, StrongPHIElim can compile very simple testcases correctly. There's still a ways
to go before it's ready for prime time, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48719 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
755ebab37db73798bb0732f5c6e2ffeeea090559 17-Mar-2008 Owen Anderson <resistor@mac.com> A first attempt at updating live intervals, with code lifted from
the coalescer. This doesn't really work, but gets us farther than
before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48446 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
dfd07eab24394659ad445d6f7998fa31c1908d73 12-Mar-2008 Owen Anderson <resistor@mac.com> We also need to collect the VN IDs for the PHI instructions for later updating.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
0031671b414f3abb9f2b97a073207957749c80bc 12-Mar-2008 Owen Anderson <resistor@mac.com> When we're determining what registers to coallesce, track the VNInfo IDs for the definitions that
feed the PHI instructions. We'll need these IDs in order to update LiveIntervals properly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
eb37ecc88256a9bce6536f9172fc18ac548ac8df 10-Mar-2008 Owen Anderson <resistor@mac.com> Move StrongPHIElimination after live interval analysis. This will make things happier down the road.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48138 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
2cf36e07722d1e82250fc2d87d16b4b1be88a04e 06-Mar-2008 Gabor Greif <ggreif@gmail.com> some more spelling changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
6130f66eaae89f8878590796977678afa8448926 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor code. Remove duplicated functions that basically do the same thing as
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
97ca75e4bbab7f680564c96e6a326cd1ea267ce2 23-Jan-2008 Owen Anderson <resistor@mac.com> Fix an iterator invalidation issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
a6b1926531b78f5fa45503aebea30cdb616114b7 21-Jan-2008 Owen Anderson <resistor@mac.com> Clarify a deviation from the original algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
3b489522dff11af226f8aaef9660c10257d16d60 21-Jan-2008 Owen Anderson <resistor@mac.com> Improve a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ddd060ffcfd56ef91eb28ce76a2b0576dfe51129 10-Jan-2008 Owen Anderson <resistor@mac.com> Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the equivalent API from
MachineRegisterInfo. Once all clients are switched over, the former will be going away.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
dc4d6558e41f1b1034a4f77385d2d4fea89f88db 10-Jan-2008 Owen Anderson <resistor@mac.com> Add more comments explaining the basics of how the decision of when to rename and when to insert
copies is made.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45799 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
b199cbec2e84c46fc0883b3abca84a6adde08fea 10-Jan-2008 Owen Anderson <resistor@mac.com> Get rid of the isKillInst predicate. LiveVariables already provides this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9c2efa8a8f961a3750cec21530a2681d25b3bd49 10-Jan-2008 Owen Anderson <resistor@mac.com> Copies need to be inserted before the first terminator, not at the end of the block.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ec1213fbbba161401e22bd41005a3b1a39008807 09-Jan-2008 Owen Anderson <resistor@mac.com> Clean up StrongPHIElimination a bit, and add some more comments to the internal structures. There's
still more work to do on this front.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
864e3a3762b2155b21c09273128dd2565df00d71 09-Jan-2008 Owen Anderson <resistor@mac.com> StrongPHIElim: Now with even fewer trivial bugs!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
719fef648d8ed584fdd2b3e7c967cf0fe8c7925b 09-Jan-2008 Owen Anderson <resistor@mac.com> Fix an infinite recursion bug in InsertCopies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45774 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
cb7d949a19f8d00a019796dfc9342fe294df27c0 09-Jan-2008 Owen Anderson <resistor@mac.com> Fix some simple bugs. StrongPHIElimination now does not crash on 164.gzip.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45773 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
0c5714bb9944ed085fb5854ac4c6abf941c532ed 08-Jan-2008 Owen Anderson <resistor@mac.com> Rename registers that do not need copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45759 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
0d893b4038d11c619ef9679de8e0c62f60c73377 08-Jan-2008 Owen Anderson <resistor@mac.com> Actually insert copies now!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45738 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
0b4825c38b2e2bd2805292f708610b4ad9c7bf92 07-Jan-2008 Owen Anderson <resistor@mac.com> Oops, missed one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45719 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
9e549202a001cb416c98a75f3c6d6bd68ae4139f 07-Jan-2008 Owen Anderson <resistor@mac.com> Make some predicates static.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45718 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
84bc5427d6883f73cfeae3da640acd011d35c006 31-Dec-2007 Chris Lattner <sabre@nondot.org> Rename SSARegMap -> MachineRegisterInfo in keeping with the idea
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.

Update all the clients to match.

This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
8aa797aa51cd4ea1ec6f46f4891a6897944b75b2 31-Dec-2007 Chris Lattner <sabre@nondot.org> Add new shorter predicates for testing machine operands for various types:
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.

Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45464 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.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/CodeGen/StrongPHIElimination.cpp
f1519e836145fb243d659f5f6b4f92a93aa5de5e 24-Dec-2007 Owen Anderson <resistor@mac.com> Flesh out the Briggs implementation a little bit more, fix a few FIXMEs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45347 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
efbcebc95dc8a7936dda8ec5733b6f6d4bd62343 23-Dec-2007 Owen Anderson <resistor@mac.com> Sketch out an implementation of Briggs' copy placement algorithm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45334 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
cae8d8d4bebd0517c16145cf3bc3304e8eadad6b 22-Dec-2007 Owen Anderson <resistor@mac.com> Note what still needs doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45310 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
22c43b2988f1167a5fe8a2b067bd0e1798dbc710 22-Dec-2007 Owen Anderson <resistor@mac.com> Remove critical edge breaking. It won't be necessary as long as we are very careful when inserting copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45309 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
87a702be1a1d5f1be2e5f78bb0a22447e22c139a 16-Dec-2007 Owen Anderson <resistor@mac.com> Break local interferences in StrongPHIElimination. One step closer...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45070 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
965b4677670ad6103cc95989c4baa57bb6d01e83 16-Dec-2007 Owen Anderson <resistor@mac.com> A few more comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
62d67dd3a3384d3899ca32aebd3d19bbf8b7d326 13-Dec-2007 Owen Anderson <resistor@mac.com> Add register pairs to the list to check for local interferences.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44987 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
4ba08ecbcf7f784ec1d8ece7f062c529b668085a 13-Dec-2007 Owen Anderson <resistor@mac.com> Remove ugly and horrible code. It's not necessary for correctness, and can be added back later if it causes code quality issues.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44986 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ed2ffa25a18db3e9537bf919140f688bc415a055 12-Dec-2007 Owen Anderson <resistor@mac.com> Forgot to remove a register from the PHI-union after I'd determined that it
interfered with other registers. Seems like that might be a good thing to do. :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44902 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
d525f664c92bc285c80484015f7aaa8fc17c4cb3 11-Dec-2007 Owen Anderson <resistor@mac.com> More progress on StrongPHIElimination. Now we actually USE the DomForest!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44877 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
afc6de0015bbeb33a87faa6548c1289d649e832e 10-Dec-2007 Owen Anderson <resistor@mac.com> A little more progress on StrongPHIElimination, now that I have a better sense of
how the CodeGen machinery works.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44786 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
42f9e96e97fd42cd71e7096ab7eb9eac7a9c8b32 13-Nov-2007 Owen Anderson <resistor@mac.com> Run computeDomForest() on the set of registers that need to be tested for
interference.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
17b1418bead13b5f78764f1435fc514475123dfc 13-Nov-2007 Owen Anderson <resistor@mac.com> Preserve LiveVariables when doing critical edge splitting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44063 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
35e2dba67215045b1be2b890699788adfa939d05 12-Nov-2007 Owen Anderson <resistor@mac.com> Break critical edges coming into blocks with PHI nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44019 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
fe0c882e5a6ddf4e3c9f771485fdaa4672759539 12-Nov-2007 Owen Anderson <resistor@mac.com> As Chris and Evan pointed out, BreakCriticalMachineEdges doesn't really need
to be a pass of its own. Instead, move it out into a helper method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
14b3fb78059a7b720ac9592e1f5d827166a5b5ac 08-Nov-2007 Owen Anderson <resistor@mac.com> Take another stab at getting isLiveIn() and isLiveOut() right.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43869 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
60a877d71351855d68491eeb123835ac7833a9e4 07-Nov-2007 Owen Anderson <resistor@mac.com> Add some more of StrongPHIElim.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43805 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
8b96b9fce084640cee62d39dab8d7f882818e122 06-Nov-2007 Owen Anderson <resistor@mac.com> Add a few comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
ee49b5385b365559ce3c28e5ace7f821090df466 06-Nov-2007 Owen Anderson <resistor@mac.com> DomForest is a forest of registers, not instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43754 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
a4ad2e740ac7727229ee0b47affb2e7efae085eb 06-Nov-2007 Owen Anderson <resistor@mac.com> StrongPHIElimination requires LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
83430bce1d21c8095438ed591cb9c72b5c666a07 04-Nov-2007 Owen Anderson <resistor@mac.com> Another step of stronger PHI elimination down.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43684 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
1bd3271b16d7f9f0b69af00d8ff29ed00a29f9ef 31-Oct-2007 Duncan Sands <baldrick@free.fr> Add a newline at the end of the file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43550 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp
0bda0e8895285c3a03c8859e11f2fff69861fd9d 31-Oct-2007 Owen Anderson <resistor@mac.com> Add the skeleton of a better PHI elimination pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/StrongPHIElimination.cpp