History log of /external/llvm/lib/CodeGen/LiveVariables.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b45e4deb102d47602f5b941da7f412ecc9a867e9 05-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove special-casing of return blocks for liveness.

Now that return value registers are return instruction uses, there is no
need for special treatment of return blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174416 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/CodeGen/LiveVariables.cpp
fb9ebbf236974beac31705eaeb9f50ab585af6ab 15-Oct-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch most getReservedRegs() clients to the MRI equivalent.

Using the cached bit vector in MRI avoids comstantly allocating and
recomputing the reserved register bit vector.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165983 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
b720be6a50f4e1b3280d2b029ee38dda14577525 12-Sep-2012 Manman Ren <mren@apple.com> Release build: guard dump functions with
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"

No functional change. Update r163339.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163653 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
11b450589978a39e59b77cd074dcda9d5697f174 09-Sep-2012 Benjamin Kramer <benny.kra@googlemail.com> LiveVariables: Compute a set of defs and kills to speed up updating LV during critical edge splitting.

Previously we checked if the register is def'd in a block via the def/use list a
nd walked the list of kills to check if the register is killed in a block. Both
of these checks can be made much cheaper by walking the block first and
recording all defs and kills.

This reduces the compile time of the test case from PR13651 from 40s to 15s at
-O2. The compile time is still dominated by LV updating but now the main culprit
is SparseBitVector's slowness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163478 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
77e300e8f0b8db8eec448cae9c87d7c5bfad9757 06-Sep-2012 Manman Ren <mren@apple.com> Release build: guard dump functions with "ifndef NDEBUG"

No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163339 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
7806c0778f22552ebe6711f3dc43887dc6097bfc 23-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach LiveVariables to handle <undef> operands.

It's simple: Don't treat <undef> operands as uses, and don't assume a
virtual register has a defining instruction unless a real use has been
seen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
396618b43a85e12d290a90b181c6af5d7c0c5f11 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch all register list clients to the new MC*Iterator interface.

No functional change intended.

Sorry for the churn. The iterator classes are supposed to help avoid
giant commits like this one in the future. The TableGen-produced
register lists are getting quite large, and it may be necessary to
change the table representation.

This makes it possible to do so without changing all clients (again).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157854 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
16d6eae08209251a31dae638908c79bd39620c91 01-Apr-2012 Lang Hames <lhames@gmail.com> Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153846 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
9ab3dbe617af06627fed2455c93ab9dc6b459951 10-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Assert on SSA errors in LiveVariables.

All uses of a virtual register must be dominated by its def.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152449 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
9ebfbf8b9fd5f982e0db9293808bd32168615ba9 05-Mar-2012 Craig Topper <craig.topper@gmail.com> Convert more GenRegisterInfo tables from unsigned to uint16_t to reduce static data size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8dd26253f54247e77e5accfdd70e7b4bf27b39c2 10-Feb-2012 Andrew Trick <atrick@apple.com> RegAlloc superpass: includes phi elimination, coalescing, and scheduling.

Creates a configurable regalloc pipeline.

Ensure specific llc options do what they say and nothing more: -reglloc=... has no effect other than selecting the allocator pass itself. This patch introduces a new umbrella flag, "-optimize-regalloc", to enable/disable the optimizing regalloc "superpass". This allows for example testing coalscing and scheduling under -O0 or vice-versa.

When a CodeGen pass requires the MachineFunction to have a particular property, we need to explicitly define that property so it can be directly queried rather than naming a specific Pass. For example, to check for SSA, use MRI->isSSA, not addRequired<PHIElimination>.

CodeGen transformation passes are never "required" as an analysis

ProcessImplicitDefs does not require LiveVariables.

We have a plan to massively simplify some of the early passes within the regalloc superpass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8247e0dca6759d9a22ac4c5cf305fac052b285ac 03-Feb-2012 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
7423db2dcf3434e74456e379751459f0d579da46 21-Jan-2012 Evan Cheng <evan.cheng@apple.com> Fix an obvious typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148622 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8c47ad8c4708286bda9362f8089f84a3d7e41056 21-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register masks in LiveVariables.

A register mask operand kills any live physreg that isn't preserved.
Unlike an implicit-def operand, the clobbered physregs are never live
afterwards.

This means LiveVariables has to track a much smaller number of live
physregs, and it should spend much less time in addRegisterDead().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
4888d5e98c7ae1fed28e41d75a65ddf70b25b03d 20-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete an unused member variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148594 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
bfe8afaaec03795fe6c78daa9817e54c186a699d 14-Jan-2012 Evan Cheng <evan.cheng@apple.com> After r147827 and r147902, it's now possible for unallocatable registers to be
live across BBs before register allocation. This miscompiled 197.parser
when a cmp + b are optimized to a cbnz instruction even though the CPSR def
is live-in a successor.
cbnz r6, LBB89_12
...
LBB89_12:
ble LBB89_1

The fix consists of two parts. 1) Teach LiveVariables that some unallocatable
registers might be liveouts so don't mark their last use as kill if they are.
2) ARM constantpool island pass shouldn't form cbz / cbnz if the conditional
branch does not kill CPSR.

rdar://10676853


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
5a96b3dad2f634c9081c8b2b6c2575441dc5a2bd 07-Dec-2011 Evan Cheng <evan.cheng@apple.com> Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
7c2a4a30e0e16762c75adacebd05ec9fcbccf16b 06-Dec-2011 Evan Cheng <evan.cheng@apple.com> First chunk of MachineInstr bundle support.
1. Added opcode BUNDLE
2. Taught MachineInstr class to deal with bundled MIs
3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
4. Taught MachineBasicBlock methods about bundled MIs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
1f6a329f79b3568d379142f921f59c4143ddaa14 12-Aug-2011 Duncan Sands <baldrick@free.fr> Silence a bunch (but not all) "variable written but not read" warnings
when building with assertions disabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f337fb2fa8be9100f469650f1e32e8474525672f 08-Mar-2011 Benjamin Kramer <benny.kra@googlemail.com> Reduce vector reallocations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127254 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
b421c566f512ed0ec87851866d335e9086c3f8be 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use an IndexedMap for LiveVariables::VirtRegInfo.

Provide MRI::getNumVirtRegs() and TRI::index2VirtReg() functions to allow
iteration over virtual registers without depending on the representation of
virtual register numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/LiveVariables.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/LiveVariables.cpp
5ba3e4d75d37d4cb145ebd01c2b0b2fec0db27c0 16-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
d13db2c59cc94162d6cf0a04187d408bfef6d4a7 22-Jul-2010 Owen Anderson <resistor@mac.com> Fix batch of converting RegisterPass<> to INTIALIZE_PASS().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109045 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
98cdfc779df1d8d9a0071103af13f43ba65504c2 14-Jun-2010 Chris Lattner <sabre@nondot.org> fix a -Wbool-conversions warning from clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105942 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
88004c25c795dae031d22e5560cc4a0f98594e7c 05-Jun-2010 Dale Johannesen <dalej@apple.com> Fix some liveout handling related to tail calls, see comments.
I don't think this ever resulted in problems on x86, but it
would on ARM.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105509 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
81bf03eb5cd68243eabb52505105aa5f4a831bf3 13-Apr-2010 Dan Gohman <gohman@apple.com> Eliminate MachineBasicBlock::const_livein_iterator and make
MachineBasicBlock::livein_iterator a const_iterator, because
clients shouldn't ever be using the iterator interface to
mutate the livein set.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101147 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
d05e8055362be52fc33dcc685ba2ae5c722506b5 26-Mar-2010 Evan Cheng <evan.cheng@apple.com> LiveVariables should clear kill / dead markers first. This allows us to remove a hack in the scheduler.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
53e000bac319a25f7c13ec8b7b413418fba5ef20 05-Mar-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Better handling of dead super registers in LiveVariables. We used to do this:

CALL ... %RAX<imp-def>
... [not using %RAX]
%EAX = ..., %RAX<imp-use, kill>
RET %EAX<imp-use,kill>

Now we do this:

CALL ... %RAX<imp-def, dead>
... [not using %RAX]
%EAX = ...
RET %EAX<imp-use,kill>

By not artificially keeping %RAX alive, we lower register pressure a bit.

The correct number of instructions for 2008-08-05-SpillerBug.ll is obviously
55, anybody can see that. Sheesh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97838 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
dcfe5f30b5e262971f601a65bebcc0367fef56c5 23-Feb-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Keep track of phi join registers explicitly in LiveVariables.

Previously, LiveIntervalAnalysis would infer phi joins by looking for multiply
defined registers. That doesn't work if the phi join is implicitly defined in
all but one of the predecessors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/LiveVariables.cpp
d94998f52574eacef148bd856de701af2c594b03 09-Feb-2010 Dale Johannesen <dalej@apple.com> Skip DEBUG_VALUE in some places where it was affecting codegen.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
e7078aed24d81c0b4bacb41385ea0237d1c0caf0 07-Jan-2010 Benjamin Kramer <benny.kra@googlemail.com> Remove dead variable.


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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92532 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8f72235a77e7ac262471936ea0ad2a3467d18871 01-Dec-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Move PHIElimination::isLiveOut method to LiveVariables.

We want LiveVariables clients to use methods rather than accessing the
getVarInfo data structure directly. That way it will be possible to change the
LiveVariables representation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90240 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a4025df42d2393da7041cd11e48a3d44b0ae2bb1 01-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5614: parts of a physical register def may be killed the rest.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90180 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
323d8c3ed72c9e440c2079e8c1954af69357c7cf 21-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Be more clever about calculating live variables through new basic blocks.

When splitting a critical edge, the registers live through the edge are:

- Used in a PHI instruction, or
- Live out from the predecessor, and
- Live in to the successor.

This allows the coalescer to eliminate even more phi joins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89530 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
236490d870c2734203ecf26c8f104d0b3283e69e 13-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5410: LiveVariables lost subreg def:

D0<def,dead> = ...
...
= S0<use, kill>
S0<def> = ...
...
D0<def> =

The first D0 def is correctly marked dead, however, livevariables should have
added an implicit def of S0 or we end up with a use without a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88690 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
3e20475feebca3bfb29375ac7f3e5acbeb2a95c8 11-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix liveness calculation when splitting critical edges during PHI elimination.

- Edges are split before any phis are eliminated, so the code is SSA.

- Create a proper IR BasicBlock for the split edges.

- LiveVariables::addNewBlock now has same syntax as
MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
set rather than successor live-in set.

This feature still causes some miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86867 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f235f13931835b3335f3f2ff2d3060381b93626c 10-Nov-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach PHIElimination to split critical edges when -split-phi-edges is enabled.

Critical edges leading to a PHI node are split when the PHI source variable is
live out from the predecessor block. This help the coalescer eliminate more
PHI joins.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a2f80471345960c971825a053d22ec886a2ab514 15-Oct-2009 Evan Cheng <evan.cheng@apple.com> When LiveVariables is adding implicit-def to model "partial dead", add the earlyclobber marker if the superreg def has it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84153 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
ad934b821c78d39e73a213c62cd57288f8605a0c 24-Sep-2009 Evan Cheng <evan.cheng@apple.com> Clean up LiveVariables and change how it deals with partial updates and kills. This also eliminate the horrible check which scan forward to the end of the basic block. It should be faster and more accurate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82676 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
296925dc169b45e7535abdccc8dc143a8bec7f0a 23-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024. LiveVariables physical register defs should *commit* only after all
of the defs are processed.
Also fix a implicit_def propagation bug: a implicit_def of a physical register
should be applied to uses of the sub-registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
60c7df2c9311fc35ab02f1600419e91d55d5b133 22-Sep-2009 Evan Cheng <evan.cheng@apple.com> Fix PR5024. LiveVariables::FindLastPartialDef should return a set of sub-registers that were defined by the last partial def, not just a single sub-register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82535 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
dbe89cd2f019c23f41fe6471b8bfe0b45cc1c1ce 24-Aug-2009 Chris Lattner <sabre@nondot.org> remove the last uses of Config/alloca.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79873 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
705e07f578e2b3af47ddab610feb4e7f2d3063a5 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove various std::ostream version of printing methods from
MachineInstr and MachineOperand. This required eliminating a
bunch of stuff that was using DOUT, I hope that bill doesn't
mind me stealing his fun. ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
ad2afc2a421a0e41603d5eee412d4d8c77e9bc1c 31-Jul-2009 Dan Gohman <gohman@apple.com> Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsage
shouldn't do AU.setPreservesCFG(), because even though CodeGen passes
don't modify the LLVM IR CFG, they may modify the MachineFunction CFG,
and passes like MachineLoop are registered with isCFGOnly set to true.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77691 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
c5b19b21d84814d19692a6bbea11fbd135f4b094 31-Jul-2009 Daniel Dunbar <daniel@zuster.org> Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and many
failures when building assorted projects with clang.

--- Reverse-merging r77654 into '.':
U include/llvm/CodeGen/Passes.h
U include/llvm/CodeGen/MachineFunctionPass.h
U include/llvm/CodeGen/MachineFunction.h
U include/llvm/CodeGen/LazyLiveness.h
U include/llvm/CodeGen/SelectionDAGISel.h
D include/llvm/CodeGen/MachineFunctionAnalysis.h
U include/llvm/Function.h
U lib/Target/CellSPU/SPUISelDAGToDAG.cpp
U lib/Target/PowerPC/PPCISelDAGToDAG.cpp
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/MachineVerifier.cpp
U lib/CodeGen/MachineFunction.cpp
U lib/CodeGen/PrologEpilogInserter.cpp
U lib/CodeGen/MachineLoopInfo.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
D lib/CodeGen/MachineFunctionAnalysis.cpp
D lib/CodeGen/MachineFunctionPass.cpp
U lib/CodeGen/LiveVariables.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
933c762371fe8cc6e2ef5d00d6866f4924852fed 31-Jul-2009 Dan Gohman <gohman@apple.com> Manage MachineFunctions with an analysis Pass instead of the Annotable
mechanism. To support this, make MachineFunctionPass a little more
complete.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77654 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
2c4d96dfe9c309cc6b206c7d2cf03fe9fbd8aa93 06-Jul-2009 Evan Cheng <evan.cheng@apple.com> Avoid adding a duplicate def. This fixes PR4478.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74857 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
694f6c81e885818840d374c855cd0c91ed3f2f15 20-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix PR4419: handle defs of partial uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73816 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
95299c194d4f852d17554779117c4125c3fae73d 03-Jun-2009 Evan Cheng <evan.cheng@apple.com> If there is a def of a super-register followed by a use of a sub-register, do *not* add an implicit def of the sub-register. e.g.
EAX = ..., AX<imp-def>
...
= AX

This creates a double-def. Apparently this used to be necessary but is no longer needed.

Thanks to Anton for pointing this out. Anton, I cannot create a test case without your uncommitted ARM patches. Please check in a test case for me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
493a3d015cbb2bcc18d9293a4dec3b35c7493818 26-May-2009 Jeffrey Yasskin <jyasskin@google.com> LiveVariables::VarInfo contains an AliveBlocks BitVector, which has as many
entries as there are basic blocks in the function. LiveVariables::getVarInfo
creates a VarInfo struct for every register in the function, leading to
quadratic space use. This patch changes the BitVector to a SparseBitVector,
which doesn't help the worst-case memory use but does reduce the actual use in
very long functions with short-lived variables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72426 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
aed4a430f4f6cc0e3ff06d458e68e5d195bbed7c 26-May-2009 Evan Cheng <evan.cheng@apple.com> Eliminate VarInfo::UsedBlocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a894ae130b6e69a367aa691eec7e96973a20e901 20-Jan-2009 Evan Cheng <evan.cheng@apple.com> Fix PR3243: a LiveVariables bug. When HandlePhysRegKill is checking whether the last reference is also the last def (i.e. dead def), it should also check if last reference is the current machine instruction being processed. This can happen when it is processing a physical register use and setting the current machine instruction as sub-register's last ref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
59500c8f9a76b3386329b6f837255c16f4e8b61b 21-Nov-2008 Devang Patel <dpatel@apple.com> Silence unused variable warnings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
4a829ecc54cdcb0192550639556a18728af5119c 13-Nov-2008 Dan Gohman <gohman@apple.com> Use find_first/find_next to iterate through all the set bits in a
BitVector, instead of manually testing each bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59246 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/LiveVariables.cpp
3bdf5fe71ad2d48d81d013b16181766bde295f58 21-Sep-2008 Dan Gohman <gohman@apple.com> Factor out code into HandleVirtRegDef, for consistency with
Handle{Virt,Phys}Reg{Def,Use}. Remove a redundant check
for register zero, and redundant checks for isPhysicalRegister.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56412 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
bbf55832831482a73fa59fcd1746f9272e82a144 15-Aug-2008 Owen Anderson <resistor@mac.com> Use SmallSet instead of std::set to save allocations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54810 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
bd3ba461eb5578a81ba09ff7bd7eb271d1130196 05-Aug-2008 Owen Anderson <resistor@mac.com> - Fix SelectionDAG to generate correct CFGs.
- Add a basic machine-level dead block eliminator.

These two have to go together, since many other parts of the code generator are unable to handle the unreachable blocks otherwise created.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54333 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
9f1c8317a4676945b4961ddb9827ef2412551620 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
5b9f60bc22582e80b081d4277a47d8b7fa14e3f4 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> Use std::replace instead of std::find and push_back.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53063 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
be04dc1413bdab0c8687a8086792af6cfd7540c0 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Add LiveVariables::replaceKillInstruction. This does a subset of instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers.
- CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
bffdf66b8050b45188cb265f27e81c41277ab0ca 27-Jun-2008 Owen Anderson <resistor@mac.com> Use a SmallSet when we can to reduce memory allocations.
This speeds up a particular testcase from 0.0302s to 0.0222s in LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52819 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
48b0b882c75f4f05000c53bc29e52096e1e51be3 26-Jun-2008 Dan Gohman <gohman@apple.com> Fix the text in an assert string.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
ebcba612b537f45a033ccd9a60bee0c45e2e2ded 24-Jun-2008 Bill Wendling <isanbard@gmail.com> This situation can occur:

,------.
| |
| v
| t2 = phi ... t1 ...
| |
| v
| t1 = ...
| ... = ... t1 ...
| |
`------'

where there is a use in a PHI node that's a predecessor to the defining
block. We don't want to mark all predecessors as having the value "alive" in
this case. Also, the assert was too restrictive and didn't handle this case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52655 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
0d4bdde3270a8ed182a685a580031d6d5d743164 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Rewrite LiveVariable liveness computation. The new implementation is much simplified. It eliminated the nasty recursive routines and removed the partial def / use bookkeeping. There is also potential for performance improvement by replacing the conservative handling of partial physical register definitions. The code is currently disabled until live interval analysis is taught of the name scheme.

This patch also fixed a couple of nasty corner cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49784 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
ea1d9cdc4e4f4e4570acddb7c4a63f703b110dad 02-Apr-2008 Evan Cheng <evan.cheng@apple.com> Now that I am told MachineRegisterInfo also tracks physical register uses / defs, I can do away with the horribleness I introduced a while back. It's impossible to detect if there is any use of a physical register below an instruction (and before any def of the register) with some cheap book keeping.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49105 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
94202018c51d662c793a77a5e8239f3a35e11e60 19-Mar-2008 Evan Cheng <evan.cheng@apple.com> Fix live variables issues:
1. If part of a register is re-defined, an implicit kill and an implicit def are added to denote read / mod / write. However, this should only be necessary if the register is actually read later. This is a performance issue.
2. If a sub-register is being defined, and it doesn't have a previous use, do not add a implicit kill to the last use of a super-register:
= EAX, AX<imp-use,kill>
...
AX =
In this case, EAX is live but AX is killed, this is wrong and will cause the coalescer to do bad things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48521 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/LiveVariables.cpp
1d5e8196c02ade7d2253165e99436ce415de9fda 21-Feb-2008 Bill Wendling <isanbard@gmail.com> Clear PhysRegPartUse for the sub register as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47453 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
c927cc8731724a91733781c816b89d234c265d8c 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Remove one of the fixmes that I put in there. From Evan:

No need to go up more levels. A def of a register also sets its sub-registers
(so if PhysRegInfo[SuperReg] is NULL, it means SuperReg's super registers are
not previously defined).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
55574c2ceab1b7c4dd1cc47d2fb328bc3728d29c 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Improve some comments explaining the "handle kills" stuff better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
fe8276cec27332f590186a78b7d0091ba4a9dbac 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Fix comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
6d794746b7ae1ed531f08c04dd29d79c13b35075 20-Feb-2008 Bill Wendling <isanbard@gmail.com> Added some comments and reformatted others. No functionality change.

Added two "FIXMEs" for code that looks dubious to me (but I could be
wrong).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
420cdebbcb95f3881ab3518fd3bb670837669e43 20-Feb-2008 Bill Wendling <isanbard@gmail.com> More constification of things. More comments added. No functionality
changes. (Sorry for any formatting changes that creeped in.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47362 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
90a3868fe5702caaa56082cde2edb6521de73e01 20-Feb-2008 Bill Wendling <isanbard@gmail.com> No functionality change:

- Constified some MachineOperand values.
- Added/Modified some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47358 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
6f0d024a534af18d9e60b3ea757376cd8a3a980e 10-Feb-2008 Dan Gohman <gohman@apple.com> Rename MRegisterInfo to TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
bb4151bd1f292df8f505671e502d01f0b10afa0f 05-Feb-2008 Evan Cheng <evan.cheng@apple.com> If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
b487e7215c4f70f3d98f8fbc0a11eb119afc1f37 24-Jan-2008 Owen Anderson <resistor@mac.com> Move some functionality for adding flags to MachineInstr's into methods on MachineInstr rather than LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46295 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
40a627ddf87fe8e5fe057fba405cc0893cf14e70 15-Jan-2008 Owen Anderson <resistor@mac.com> Move some calls to getVRegDef higher in the callgraph, so they don't get executed as frequently in performance sensitive code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46027 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
7047dd4d227b5fb2e5ae0cb2e7d5de1d0098ad60 15-Jan-2008 Owen Anderson <resistor@mac.com> Remove DefInst from LiveVariables::VarInfo. Use the facilities on MachineRegisterInfo instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
749c6f6b5ed301c84aac562e414486549d7b98eb 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
349c4952009525b27383e2120a6b3c998f39bd09 07-Jan-2008 Chris Lattner <sabre@nondot.org> Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/LiveVariables.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/LiveVariables.cpp
f73823000e2d5d6e1cf65bdf5a107297e18d35fb 30-Dec-2007 Chris Lattner <sabre@nondot.org> More cleanups for MachineOperand:
- Eliminate the static "print" method for operands, moving it
into MachineOperand::print.
- Change various set* methods for register flags to take a bool
for the value to set it to. Remove unset* methods.
- Group methods more logically by operand flavor in MachineOperand.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8019f41c0b7fda031d494e3900eada7d4e494772 30-Dec-2007 Chris Lattner <sabre@nondot.org> Start using the simplified methods for adding operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/LiveVariables.cpp
81a038218171860ee4c382849c647d3dc841fe8b 17-Nov-2007 Evan Cheng <evan.cheng@apple.com> Live interval splitting:

When a live interval is being spilled, rather than creating short, non-spillable
intervals for every def / use, split the interval at BB boundaries. That is, for
every BB where the live interval is defined or used, create a new interval that
covers all the defs and uses in the BB.

This is designed to eliminate one common problem: multiple reloads of the same
value in a single basic block. Note, it does *not* decrease the number of spills
since no copies are inserted so the split intervals are *connected* through
spill and reloads (or rematerialization). The newly created intervals can be
spilled again, in that case, since it does not span multiple basic blocks, it's
spilled in the usual manner. However, it can reuse the same stack slot as the
previously split interval.

This is currently controlled by -split-intervals-at-bb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44198 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a018540807775703d630e9c92f9d8013d545599e 08-Nov-2007 Owen Anderson <resistor@mac.com> Bring UsedBlocks back. StrongPHIElimination needs this information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43866 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
5942efb0e5f49fb772e340c251502cc0a7ff157e 05-Nov-2007 Evan Cheng <evan.cheng@apple.com> Handle cases where a register and one of its super-register are both marked as
defined on the same instruction. This fixes PR1767.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43699 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
92dfe2001e96f6e2b6d327e8816f38033f88b295 14-Sep-2007 Dan Gohman <gohman@apple.com> Remove isReg, isImm, and isMBB, and change all their users to use
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
0d8d31674f3cc95f5bba1174a0e8d54d5b9c210a 13-Sep-2007 Evan Cheng <evan.cheng@apple.com> Fixed a typo that's causing a missing kill marker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
6d6d352ed9bf69f06d8084b76042d7e9b3980cb5 12-Sep-2007 Evan Cheng <evan.cheng@apple.com> Sometimes a MI can define a register as well as defining a super-register at the
same time. Do not mark the "smaller" def as dead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41871 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
21b3bf06508e8a9af86276099e6845961c883a62 01-Aug-2007 Evan Cheng <evan.cheng@apple.com> Bugs: missing partial uses and redundant partial defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40688 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
c674a924d4ed62e857bf788d7e0c76c89239b903 21-Jul-2007 Dan Gohman <gohman@apple.com> Don't assume that only Uses can be kills. Defs are marked as kills initially
when there are no uses. This fixes a dangling-pointer bug, where pointers to
deleted instructions were not removed from kills lists. More info here:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-July/009749.html


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f99002c14303fe3f58f854bb77f9bcfbe7656b64 17-Jul-2007 Evan Cheng <evan.cheng@apple.com> Dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39979 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
041040717db7dafe31155615fcb43d214ac88aa4 27-Jun-2007 Evan Cheng <evan.cheng@apple.com> Replace std::set with SmallPtrSet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
4efe74129f7483bc8c48d68f095d632b974c353d 26-Jun-2007 Evan Cheng <evan.cheng@apple.com> Properly handle kills of a physical register which has sub-registers that are read by later instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37739 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8b966d9fd0995fbc897ca06ff3b15e8178c0d0a3 14-May-2007 Evan Cheng <evan.cheng@apple.com> When marking a register as being implicitly defined, make sure to clear its partial use info as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37046 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
56184904cd9a348920de0c3b391d42b691091137 08-May-2007 Evan Cheng <evan.cheng@apple.com> Eliminate MarkVirtRegAliveInBlock recursion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
1997473cf72957d0e70322e2fe6fe2ab141c58a6 03-May-2007 Devang Patel <dpatel@apple.com> Drop 'const'


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36662 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
3e15bf33e024b9df9e89351a165acfdb1dde51ed 02-May-2007 Devang Patel <dpatel@apple.com> Use 'static const char' instead of 'static const int'.
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36652 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
794fd75c67a2cdc128d67342c6d88a504d186896 01-May-2007 Devang Patel <dpatel@apple.com> Do not use typeinfo to identify pass in pass manager.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
faa510726f4b40aa4495e60e4d341c6467e3fb01 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Rename findRegisterUseOperand to findRegisterUseOperandIdx to avoid confusion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36483 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8e29b2192b498342682f9d79881c00248e3a5c0a 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Minor bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36473 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
05350288a6bc22a294ff7625f244731ef7125f8a 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Be careful when to add implicit kill / dead operands. Don't add them during / post reg-allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36458 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
ade31f9f07537502f68850d771678bfbef003c7e 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36449 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
e96f50142e8d12a2e12c3329bffb372e09731dd2 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Data structure change to improve compile time (especially in debug mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36447 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
24a3cc4c83e5edb25fadf7b8979a26b4451795c6 25-Apr-2007 Evan Cheng <evan.cheng@apple.com> Fix for PR1306.
- A register def / use now implicitly affects sub-register liveness but does
not affect liveness information of super-registers.
- Def of a larger register (if followed by a use later) is treated as
read/mod/write of a smaller register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f44c72817e3a7f517ad796705effb8d59e6a6dfa 18-Apr-2007 Evan Cheng <evan.cheng@apple.com> VarInfo::UsedBlocks is no longer used. Remove.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
38b7ca6651643f1f98e1f7b0e7f8a3499883804b 17-Apr-2007 Evan Cheng <evan.cheng@apple.com> Keep track of number of uses within the function per virtual register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36214 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
c6a2410d58916b8a8a1b26f2448b903d12e77f2f 17-Mar-2007 Evan Cheng <evan.cheng@apple.com> Track the BB's where each virtual register is used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
e2ee99620fa6e428292737349d8e28bbcdcdaa0b 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> If a virtual register is already marked alive in this block, that means it is
alive in one of the successor block. Do not add it to the kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f0e3bb13337f59c7f158e4af5aa9a11a2e76fa9d 09-Mar-2007 Evan Cheng <evan.cheng@apple.com> Avoid variable shadowing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35039 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
b371f457b0ea4a652a9f526ba4375c80ae542252 19-Feb-2007 Evan Cheng <evan.cheng@apple.com> Re-apply my liveintervalanalysis changes. Now with PR1207 fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34428 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a284cbf667e11660840dc7bae3ee9eeaa3c7cbd2 19-Feb-2007 Reid Spencer <rspencer@reidspencer.com> For PR1207:
Revert patches that caused the problem. Evan, please investigate and reapply
when you've discovered the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
e15764f28f10f86ad88c4391bb5619191609f6b4 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> - Use MRegister::regsOverlap().
- Allow LiveVariables to track liveness of more registers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34379 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
0c9f92e1ff64ee56724eae444a0442b02f83d0a8 13-Feb-2007 Evan Cheng <evan.cheng@apple.com> Allow any MachineBasicBlock (not just the entry block) to have live-in physical
registers. Make sure liveinterval analysis is correctly creating live ranges
for them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
bcd2498f4f1682dbdc41452add5b9bc72cbd6b3f 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Removed more <iostream> includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32321 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a6c4c1eb90413986519c46f70222539dee39ffe9 15-Nov-2006 Evan Cheng <evan.cheng@apple.com> Do away with kill / dead maps. Move kill / dead info onto MI's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31759 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
438f7bc67cf235ccee7e6f7ac7f4ae2186eb8020 10-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add implicit def / use operands to MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31633 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
3ed469ccd7b028a030b550d84b7336d146f5d8fa 02-Nov-2006 Reid Spencer <rspencer@reidspencer.com> For PR786:
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f7da4e939f02678cbe56cae666506da3b1a5e100 03-Oct-2006 Bill Wendling <isanbard@gmail.com> Fix for PR929. The PHI nodes were being gone through for each instruction
in a successor block for every block...resulting in some O(N^k) algorithm
which wasn't very good for performance. Calculating this information up
front and keeping it in a map made it much faster.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
d8f44e07b89e651b2f0e3b0d680a775f44e667da 05-Sep-2006 Chris Lattner <sabre@nondot.org> Only call isUse/isDef on register operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30118 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
7a3abdc63c0cc4e5d5411c3add0e909c6ac49e79 03-Sep-2006 Chris Lattner <sabre@nondot.org> Move two methods out of line, make them work when the record for a machine
instruction includes physregs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
5d8925c7c506a54ebdfb0bc93437ec9f602eaaa0 28-Aug-2006 Chris Lattner <sabre@nondot.org> Eliminate RegisterAnalysis. RegisterPass now does all that is necessary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29921 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
cd4317efcf334be10d9a98008a1445d6e12a7712 21-Jul-2006 Jim Laskey <jlaskey@mac.com> Eliminate data relocations by using NULL instead of global empty list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
4efeab208cf0fe7ae2f68bcdd1264a8fdb18826c 04-May-2006 Chris Lattner <sabre@nondot.org> Remove a bunch more dead V9 specific stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
dacceef2666d37eb984c6f5e0a84cdabab8dfffc 04-Jan-2006 Chris Lattner <sabre@nondot.org> Add a LiveVariables::VarInfo::dump method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25080 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
ac28fbd0436dd8b2bc0c071ba150b60bbfca67f3 21-Nov-2005 Chris Lattner <sabre@nondot.org> Add section switching to common code generator code. Add a couple of
asserts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24445 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
657b4d1ac6a64d8751ed8c53d662201dab4438e1 24-Aug-2005 Chris Lattner <sabre@nondot.org> Implement LiveVariables.h change


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
44b94c2185f4c1b826ec6003d25370cf2efac219 24-Aug-2005 Chris Lattner <sabre@nondot.org> adjust to new live variables interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22992 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
712ad0c36dcfacb30620c793a6ffe4e80bd5d569 13-May-2005 Chris Lattner <sabre@nondot.org> allow a virtual register to be associated with live-in values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
edf128a7fa90f2b0b7ee24741a04a7ae1ecd6f7e 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Remove trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21420 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
d493b34d31ddb37b2e2f0b24e00c4597cb1dcfd6 09-Apr-2005 Chris Lattner <sabre@nondot.org> Consider the livein/out set for a function, allowing targets to not have to
use ugly imp_def/imp_uses for arguments and return values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21180 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
2a6e163edc2f5c81ad1f4c527c354b1a727676b7 19-Jan-2005 Chris Lattner <sabre@nondot.org> Just in case, handle something that is both a use and a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
d45be36965470710eb18662fc716243ea384bf2f 19-Jan-2005 Chris Lattner <sabre@nondot.org> When an instruction moves, make sure to update the VarInfo::Kills list as
well as all of teh other stuff in livevar. This fixes the compiler crash
on fourinarow last night.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
6fcd8d848dc722537c32b91daea59f50b78a4eba 25-Oct-2004 Chris Lattner <sabre@nondot.org> Do not use variable sized arrays in C++, they are non-portable. Patch
contributed by Morten Ofstad


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/CodeGen/LiveVariables.cpp
2e58a410896ffbee3d856b113c3718bc4a5462e8 02-Sep-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Give a better assertion if we see a use before a def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
81bc6e377e06c358747f59bce781aba25c60fb56 29-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove dead code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16077 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
22a2f6d5b05631a21b62e3e103aa1b9469ad0c5c 27-Aug-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Use newly added API in MRegisterInfo and don't expose the allocatable
register set anymore. Its users now use the MRegisterInfo API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
74de8b1b26b12fda3364382946e519a2e37b6709 19-Jul-2004 Chris Lattner <sabre@nondot.org> There is no need to store the MBB along with the MI any more, we can now
ask instructions for their parent.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14998 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
472405e0dc05f6fb8c09af00713ff893fff25b94 19-Jul-2004 Chris Lattner <sabre@nondot.org> Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
73d4adfb1e5d6c0ce834b331e6099b14d3341dd7 19-Jul-2004 Chris Lattner <sabre@nondot.org> Remove the DefBlock element of VarInfo. DefBlock is always DefInst->getParent()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14996 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
9fb6cf1d82617994cd6dad33ecd45c1e913534aa 09-Jul-2004 Chris Lattner <sabre@nondot.org> Add checks to ensure that there are no unreachable blocks in the function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8490f9c92e354fd9cd242bae89b24e6c59e5c794 01-Jul-2004 Chris Lattner <sabre@nondot.org> Now that MachineFunction/MachineBasicBlock keep a mapping of blocks to ID #'s
use them instead of a local LiveVariables numbering


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
8ba9771549bcff6109ad45ff3944a1b6c3c54b46 01-Jul-2004 Chris Lattner <sabre@nondot.org> Start using MBB numbers directly instead of going through the live variables
map.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14518 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a5287a63762fbf0976e333fb7787ec135fdc2061 01-Jul-2004 Chris Lattner <sabre@nondot.org> Instead of building a private numbering of MBB's use brg's nifty auto-numbering.
Also convert df_iterator -> df_ext_iterator for subsequent stuff I'm doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14517 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
09ba906cf55b165550aecefbd6286939be84b8d1 24-Jun-2004 Misha Brukman <brukman+llvm@gmail.com> Convert tabs to spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
9bcdcd17c7219dbc68de2f11ca2de86471c8c390 02-Jun-2004 Chris Lattner <sabre@nondot.org> Adjust to new TargetMachine interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
6d3848df7e1f2d773ed7ae1a225944810d8510ad 10-May-2004 Chris Lattner <sabre@nondot.org> Patch to fix PR337. Make sure to mark all aliased physical registers as used
when we see a read of a register. This is important in cases like:

AL = ...
AH = ...

= AX

The read of AX must make both the AL and AH defs live until the use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13444 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f25fb4bc640340c60793a3e2bbf2510dea0e15f4 01-May-2004 Chris Lattner <sabre@nondot.org> Stop LiveVariables from using BasicBlocks as part of the mapping, instead
use MachineBasicBlocks. To do this, we traverse the Machine CFG instead of
the LLVM CFG, which is also *MUCH* more efficient by having fewer levels of
indirections and mappings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13301 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a8db01ac8353f00b519211e6e9e7d53feb1b2923 31-Mar-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Correctly update LiveVariables when an instruction changes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12561 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
92bc3bc11c2d439264b1cf9e7fc5bc79f4215a54 29-Feb-2004 Chris Lattner <sabre@nondot.org> Add an assert


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
71e353ed3530a5da48c3dd3257c410f6c4ce2e3e 26-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Uncomment assertions that register# != 0 on calls to
MRegisterInfo::is{Physical,Virtual}Register. Apply appropriate fixes
to relevant files.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11882 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
a96478d7d6b2aee1aecad4af23506167ec16752c 19-Feb-2004 Chris Lattner <sabre@nondot.org> Fix an iterator invalidation problem. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
5ed001b6afe2225343ec79f58645a9aaf35c1fd2 19-Feb-2004 Chris Lattner <sabre@nondot.org> Add method to update livevar when an instruction moves


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11625 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
859a18b5833f3566799313ecba8db4916500485b 15-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Make dense maps keyed on physical registers smallerusing
MRegisterInfo::getNumRegs() instead of
MRegisterInfo::FirstVirtualRegister.

Also use MRegisterInfo::is{Physical,Virtual}Register where
appropriate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11477 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
c0b9dc5be79f009d260edb5cd5e1d8346587aaa2 12-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Change MachineBasicBlock's vector of MachineInstr pointers into an
ilist of MachineInstr objects. This allows constant time removal and
insertion of MachineInstr instances from anywhere in each
MachineBasicBlock. It also allows for constant time splicing of
MachineInstrs into or out of MachineBasicBlocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11340 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
61b08f193a6e84db44d3032a822e324ebb42a584 10-Feb-2004 Chris Lattner <sabre@nondot.org> Add #include


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11285 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
1cbe4d0ad0888e50858cca83cf2a0d3083709513 10-Feb-2004 Chris Lattner <sabre@nondot.org> Do not use MachineOperand::isVirtualRegister either!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
3d878d80d67452865e286069ceefe918c0f65acb 10-Feb-2004 Chris Lattner <sabre@nondot.org> Eliminate users of MachineOperand::isPhysicalRegister


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
499487742ec4299852f7ae8962acebf7bc2a22a4 09-Feb-2004 Chris Lattner <sabre@nondot.org> Ugh, perform an optimization that GCC should be able to do itself. This
speeds up livevar from .48/.32s -> .45/.31s in LLC on perlbmk


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
96aef893383a6ffcc6d6955c5d969f0fd57831c2 09-Feb-2004 Chris Lattner <sabre@nondot.org> Only do stuff for the REAL number of physical registers we have, not 1024.
This speeds up live variables a lot, from .60/.39s -> .47/.26s in LLC, for
the first/second pass respectively.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11216 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
ef09c63e7ba5dd5410655f71d35eb7245893b1f1 31-Jan-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification, use new MRegisterInfo::isVirtualRegister
method


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11037 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
49a5aaacef127970f91648ac468de1cd2b6f462f 30-Jan-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification
Implement LiveVariables::getIndexMachineBasicBlock


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11018 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
c55640f0194511d2c44f4d8bea099e373199ae9d 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove unneeded check (with the recent change in live variables a use
of a physical register is always dominated by a def).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
19b6486d3891c8a02a301aa1b44348a420772fcf 13-Jan-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Correctly compute live variable information for physical registers
when an implicitely defined register is later used by an alias. For example:

call foo
%reg1024 = mov %AL

The call implicitely defines EAX but only AL is used. Before this fix
no information was available on AL. Now EAX and all its aliases except
AL get defined and die at the call instruction whereas AL lives to be
killed by the assignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
4d7af65903cbc858464362e70a6adf499982ec8a 14-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change interface of MachineOperand as follows:

a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse()
b) add isUse(), isDef()
c) rename opHiBits32() to isHiBits32(),
opLoBits32() to isLoBits32(),
opHiBits64() to isHiBits64(),
opLoBits64() to isLoBits64().

This results to much more readable code, for example compare
"op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used
very often in the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
efe995a4063dd3f414f60c6ee2f4704dbb0fad34 13-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Remove unecessary if statements when looping on ImplicitDefs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10444 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.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/CodeGen/LiveVariables.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/CodeGen/LiveVariables.cpp
73ff5120eb8b8c0ccbfed8a17f1024c67a75f319 08-Oct-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefs
and TargetInstrDescriptor::ImplicitUses to always point to a null
terminated array and never be null. So there is no need to check for
pointer validity when iterating over those sets. Code that looked
like:

if (const unsigned* AS = TID.ImplicitDefs) {
for (int i = 0; AS[i]; ++i) {
// use AS[i]
}
}

was changed to:

for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) {
// use *AS
}


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8960 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
5f2180c53330502eb2f0f5bf3f21a838ad800906 27-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> (1) Added special register class containing (for now) %fsr.
Fixed spilling of %fcc[0-3] which are part of %fsr.

(2) Moved some machine-independent reg-class code to class TargetRegInfo
from SparcReg{Class,}Info.

(3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly()
and related functions and flags. Fixed several bugs where only
"isDef" was being checked, not "isDefAndUse".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6341 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
fb2cb69dc55c1e1d7754186cd1c8a9d543f54bdd 12-May-2003 Chris Lattner <sabre@nondot.org> * Keep the BBMap around as long as the pass is live
* Change getVarInfo to take real virtual register numbers and offset them
itself. This has caused me so much grief, it's not even funny.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6115 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
5cdfbad72d76864325260f134d58294c290a4886 07-May-2003 Chris Lattner <sabre@nondot.org> Add a vector to keep track of which registers are allocatable. Remove FIXMEs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6015 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
dff780f0466d824e775dd748d9880f0389be7260 06-May-2003 Chris Lattner <sabre@nondot.org> Re-add gross hack, it's still necessary. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6012 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
82a4d207aaa18f2df6649ec747ec0d10edf0e1dc 06-May-2003 Chris Lattner <sabre@nondot.org> Remove hideously nasty hack


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6011 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
f98358efc7be57d1984c11ba2b3b02d92b530030 01-May-2003 Chris Lattner <sabre@nondot.org> Minor cleanup


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5976 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
3501feab811c86c9659248a4875fc31a3165f84d 14-Jan-2003 Chris Lattner <sabre@nondot.org> Rename MachineInstrInfo -> TargetInstrInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5272 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/LiveVariables.cpp
bc40e898e153c9b81f246a7971eaac7b14446c49 13-Jan-2003 Chris Lattner <sabre@nondot.org> New files


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