History log of /external/llvm/include/llvm/CodeGen/SlotIndexes.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
c0173e6f9f0de4497cd9b52b4f2269a57846f2ac 30-Jul-2013 Andrew Trick <atrick@apple.com> Down-scale slot index distance to save bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187438 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
c0c9205811a6957ab04ebe4a0fc84f3563b0c9da 30-Jul-2013 Andrew Trick <atrick@apple.com> whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187437 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
453f4f01302f00651aae2fc7658f6e23a2beadb0 15-May-2013 David Blaikie <dblaikie@gmail.com> Use only explicit bool conversion operators

BitVector/SmallBitVector::reference::operator bool remain implicit since
they model more exactly a bool, rather than something else that can be
boolean tested.

The most common (non-buggy) case are where such objects are used as
return expressions in bool-returning functions or as boolean function
arguments. In those cases I've used (& added if necessary) a named
function to provide the equivalent (or sometimes negative, depending on
convenient wording) test.

One behavior change (YAMLParser) was made, though no test case is
included as I'm not sure how to reach that code path. Essentially any
comparison of llvm::yaml::document_iterators would be invalid if neither
iterator was at the end.

This helped uncover a couple of bugs in Clang - test cases provided for
those in a separate commit along with similar changes to `operator bool`
instances in Clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181868 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
64362272b6bcbc6ea72784d08fa86045877a3c15 19-Apr-2013 Lang Hames <lhames@gmail.com> Add support for index resources (for a SlotIndex) to be relinquished.

When the SlotIndexes pass was introduced it was intended to support insertion
of code during register allocation. Removal of code was a minor consideration
(and raised the question of what to do about dangling SlotIndex objects pointing
to the erased index), so I opted to keep all indexes around indefinitely and
simply null out those that weren't being used.

Nowadays people are moving more code around (e.g. via HandleMove), which means
more zombie indexes. I want to start killing off indexes when we're done with
them to reclaim the resources they use up.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179834 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
768ed8b8c3281d6519d3f4740f6c7aa469bd1ac8 08-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> No really, don't use end().

Clearly, this function is never actually called with the last
instruction in the function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176708 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
e77b6ceb02b07659092b969fb4a96b56c52375ad 08-Mar-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid creating a SlotIndex from the end() iterator.

No test case, spotted by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176705 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
349cf349987a65be89078913e34126898bcdd138 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Add SlotIndexes::repairIndexesInRange(), which repairs SlotIndexes after adding
and removing instructions. The implementation seems more complicated than it
needs to be, but I couldn't find something simpler that dealt with all of the
corner cases.

Also add a call to repairIndexesInRange() from repairIntervalsInRange().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
5954fc60500d1c393a69b1de5ca1b99686fbe216 20-Feb-2013 Cameron Zwarich <zwarich@apple.com> Make SlotIndex::getEntry() return unsigned to match IndexListEntry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175600 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
1fc88933e6ffbbb2b876cf67210f1a238f2af16d 12-Feb-2013 Cameron Zwarich <zwarich@apple.com> Renumber SlotIndexes locally when a new block is inserted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174937 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
4e08e35e9606eaf8cc2fee942f78fd40b53650b2 11-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix some problems with the updating of SlotIndexes after adding a new MBB. In
particular, holes were being left between two blocks after splitting an edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174868 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
f5844a75154e73a2302767eeecf3b3401e157bb3 11-Feb-2013 Cameron Zwarich <zwarich@apple.com> Fix the unused but nearly correct method SlotIndexes::insertMBBInMaps() and add
support for updating SlotIndexes to MachineBasicBlock::SplitCriticalEdge(). This
calls renumberIndexes() every time; it should be improved to only renumber
locally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174851 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
edf315cd71334d5a7af31f4b882235d03b06f24d 27-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Provide a common half-open interval map info implementation, and just
re-use that for SlotIndexes. This way other users who want half-open
semantics can share the implementation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171158 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
255f89faee13dc491cb64fbeae3c763e7e2ea4e6 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort the #include lines for the include/... tree with the script.

AKA: Recompile *ALL* the source code!

This one went much better. No manual edits here. I spot-checked for
silliness and grep-checked for really broken edits and everything seemed
good. It all still compiles. Yell if you see something that looks goofy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169133 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
c8e41c591741b3da1077f7000274ad040bef8002 23-Jul-2012 Sylvestre Ledru <sylvestre@debian.org> Fix a typo (the the => the)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160621 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
39c2a3d219021c14a4dd2552cc0b277fd0e3f702 05-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Remove dead infrastructure for building DenseMaps with a SlotIndex as
the key -- they are now stored in an IntervalMap.

I noticed this while looking into PR12652.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
d9b0b025612992a0b724eeca8bdf10b1d7a5c355 02-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix typos found by http://github.com/lyda/misspell-check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
a0b0219a9e13ecd193eee604ab22ffc74b516b02 25-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove more dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155566 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
0b5ad0b9d902620b81268add3f554d73a6d92fc1 21-Apr-2012 Benjamin Kramer <benny.kra@googlemail.com> Remove unused PointerLikeTypeTraits for IndexListEntry.

It set NumLowBitAvailable = 3 which may not be true on all platforms. We only
ever use 2 bits (the default) so this assumption can be safely removed

Should fix PR12612.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155288 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
d2bfce15d4dd065760cfe70c0bf7958e190fa757 17-Apr-2012 Francois Pichet <pichet2000@gmail.com> Unbreak the MSVC build, that next() thing again.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154916 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
613dfb219c167717576b2383ee57573f4d8f53cf 17-Apr-2012 Lang Hames <lhames@gmail.com> SlotIndexes used to store the index list in a crufty custom linked-list. I can't
for the life of me remember why I wrote it this way, but I can't see any good
reason for it now. This patch replaces the custom linked list with an ilist.

This change should preserve the existing numberings exactly, so no generated code
should change (if it does, file a bug!).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
741981adf3a2bc0c6652c9c4ec846250950f3e68 01-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move getBundleStart() into MachineInstrBundle.h.

This allows the function to be inlined, and makes it suitable for use in
getInstructionIndex().

Also provide a const version. C++ is great for touch typing practice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151782 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
b62fbc5e469f532fd1747a3c24115fb1d0ba792f 29-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Instructions inside a bundle have the same number as the bundle itself.

SlotIndexes are not assigned to instructions inside bundles, but it is
still valid to look up the index of those instructions.

The reverse getInstructionFromIndex() will return the first instruction
in the bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151672 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
ac597ecfbc0b519ffcbf5f4160262a2c39f59fe6 15-Feb-2012 Lang Hames <lhames@gmail.com> Add a check to make sure we don't assign slot indexes for instructions inside bundles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150564 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
c4a2715a548cc150064db162bd18bee1f10cb300 04-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Drop ZeroIndex and InvalidIndex.

They are not used any more. Simply use SlotIndex() to get an invalid
index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149727 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
2aad2f6e601328d15033944ea51ad6f66a7f3c0a 11-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Detect when a value is undefined on an edge to a landing pad.

Consider this code:

int h() {
int x;
try {
x = f();
g();
} catch (...) {
return x+1;
}
return x;
}

The variable x is undefined on the first edge to the landing pad, but it
has the f() return value on the second edge to the landing pad.

SplitAnalysis::getLastSplitPoint() would assume that the return value
from f() was live into the landing pad when f() throws, which is of
course impossible.

Detect these cases, and treat them as if the landing pad wasn't there.
This allows spill code to be inserted after the function call to f().

<rdar://problem/10664933>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147912 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
da69f3b357097e75fbf9a5a2bbe1e7273d4b4271 04-Jan-2012 Benjamin Kramer <benny.kra@googlemail.com> Simplify more DenseMap.find users.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147550 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
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/include/llvm/CodeGen/SlotIndexes.h
5fa301bfa9a318de177cbf19ff925f10a742695f 29-Sep-2011 Nick Lewycky <nicholas@mxc.ca> Fix typo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
b4ddedce599183362b0f0333922c2fe0e163a129 15-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract parts of RAGreedy::splitAroundRegion as SplitKit methods.

This gets rid of some of the gory splitting details in RAGreedy and
makes them available to future SplitKit clients.

Slightly generalize the functionality to support multi-way splitting.
Specifically, SplitEditor::splitLiveThroughBlock() supports switching
between different register intervals in a block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135307 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
79142427a030baad468c90c54b66853e084507d3 02-May-2011 Chandler Carruth <chandlerc@gmail.com> Remove an unused variable in NDEBUG (found with -Wunused-variable).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130688 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
8e33095cd45b8be6b8dba9be8b2e72164494a7fe 02-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a SlotIndexes::insertMachineInstrInMaps to insert the instruction after any null indexes.

This makes a difference if a live interval is referring to a deleted
instruction. It can be important to insert an instruction before or after a
deleted instruction to avoid interference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130686 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
3d32202748f3ce3de31e48a183130d94e767e97c 11-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Skip a binary search when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
a2948ef5accab638371615f539ea9f9ec5ff5d03 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use std::unique instead of a SmallPtrSet to ensure unique instructions in UseSlots.

This allows us to always keep the smaller slot for an instruction which is what
we want when a register has early clobber defines.

Drop the UsingInstrs set and the UsingBlocks map. They are no longer needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128886 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
6c8afd728eb02742ce320ecd39bcf3774d8423b7 04-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Stop caching basic block index ranges now that SlotIndexes can keep up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
a122eaaee22750c4f92c33672e149eb2f0c538cb 02-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Use basic block numbers as indexes when mapping slot index ranges.

This is more compact and faster than using DenseMap.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
979869c28e5bc68e2d4d546c7019525177f1d399 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Renumber slot indexes locally when possible.

Initially, slot indexes are quad-spaced. There is room for inserting up to 3
new instructions between the original instructions.

When we run out of indexes between two instructions, renumber locally using
double-spaced indexes. The original quad-spacing means that we catch up quickly,
and we only have to renumber a handful of instructions to get a monotonic
sequence. This is much faster than renumbering the whole function as we did
before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127023 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
bee41501fae5414070a2797e853da15ea29b92a8 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Symbolize the default instruction distance.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127013 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
beb9a1f9fd1b660809929bf136eb2d897638d4c1 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Deferred SlotIndex renumbering was a good idea but never used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127008 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
f37712f48642bcca04c77083c0579e7fe8d4d916 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Represent sentinel slot indexes with a null pointer.

This is much faster than using a pointer to a ManagedStatic object accessed with
a function call. The greedy register allocator is 5% faster overall just from
the SlotIndex default constructor savings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
a97ff8a027259b1b9e4dbdb5b6f01cc2195a6948 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Avoid comparing invalid slot indexes, and assert that it doesn't happen.

The SlotIndex created by the default construction does not represent a position
in the function, and it doesn't make sense to compare it to other indexes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126924 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
acf9f48c5e5fa2ce381d566aefc6285653ab2b5c 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Optimize SlotIndex equality tests.

IndexListEntries have unique indexes, so it is not necessary to dereference
pointers to them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126923 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
a5f1a900df66178608d728708e0753015681d4c7 12-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Assert if anybody tries to put a slot index on a DBG_VALUE instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123323 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
e69b4ab82924359ca3d85215fb42aee2495de2f8 15-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add SlotIndexes::getMBBRange() to get the range of a basic block in a single
lookup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
0613516b16466a92c68d60734801221506c85e86 02-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement the first half of LiveDebugVariables.

Scan the MachineFunction for DBG_VALUE instructions, and replace them with a
data structure similar to LiveIntervals. The live range of a DBG_VALUE is
determined by propagating it down the dominator tree until a new DBG_VALUE is
found. When a DBG_VALUE lives in a register, its live range is confined to the
live range of the register's value.

LiveDebugVariables runs before coalescing, so DBG_VALUEs are not artificially
extended when registers are joined.

The missing half will recreate DBG_VALUE instructions from the intervals when
register allocation is complete.

The pass is disabled by default. It can be enabled with the temporary command
line option -live-debug-variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120636 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
1e8e72d72a71ec3fb6c81bd35a34261f34436900 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Insert two blank SlotIndexes between basic blocks instead of just one.

This is the first small step towards using closed intervals for liveness instead
of the half-open intervals we're using now.

We want to be able to distinguish between a SlotIndex that represents a variable
being live-out of a basic block, and an index representing a variable live-in to
its successor.

That requires two separate indexes between blocks. One for live-outs and one for
live-ins.

With this change, getMBBEndIdx(MBB).getPrevSlot() becomes stable so it stays
greater than any instructions inserted at the end of MBB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118747 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
01f98abe3ebaaa1640b16aac951ed85deaa97862 11-Nov-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Delete unused function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
16c3b647eb100fe404ee65f106d563ddef6c74b7 30-Oct-2010 Chris Lattner <sabre@nondot.org> Rename alignof -> alignOf to avoid irritating C++'0x compilers,
PR8423, patch by nobled.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117774 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
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/include/llvm/CodeGen/SlotIndexes.h
011e5910719265ba5d41e8af2290e55c5eb50526 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove SlotIndex::PHI_BIT. It is no longer used by anything.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
1803b37bad85cca19a15c0040979719240f48626 25-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Terminator gaps were unused. Might as well delete them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
dfa28b157dd066eed4db9d2256f55c23b88df637 11-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix a FIXME. The SlotIndex::Slot enum should be private.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110826 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
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/include/llvm/CodeGen/SlotIndexes.h
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/include/llvm/CodeGen/SlotIndexes.h
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/include/llvm/CodeGen/SlotIndexes.h
54cc2efb4e6ba3022ec297746b14a129d97fc07b 19-Jul-2010 Lang Hames <lhames@gmail.com> Render MachineFunctions to HTML pages, with options to render register
pressure estimates and liveness alongside.

Still experimental.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108698 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
dfbc29a5a2197ff88c56448dd57fd4a4fcf16a1f 09-Jul-2010 Lang Hames <lhames@gmail.com> Added a support for inserting new MBBs into the numbering.

Unlike insertMachineInstrInMaps this does not guarantee live intervals will
remain correct. The caller will need to manually update intervals to account
for the changes made to the CFG.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
ec8c3e8cccdadfdf8957c3ff8e7cace38897113c 02-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle unindexed instructions in SlotIndices.

SlotIndexes::insertMachineInstrInMaps would crash when trying to insert an
instruction imediately after an unmapped debug value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107504 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
1ca6531e2e8e1b3a4f6c48888568450ecf614004 08-Apr-2010 Chris Lattner <sabre@nondot.org> remove some unneeded errorhandling stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100703 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
dd0fbda3e32797b8fc0812fa886aff222d741f37 02-Apr-2010 Chris Lattner <sabre@nondot.org> include densemap.h explicitly and rearrange #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100216 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
e0710472c84e61acf085f101abb4213c6cb1f545 09-Feb-2010 Lang Hames <lhames@gmail.com> Changed the definition of an "invalid" slot to include the empty & tombstone values, but not zero.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
74ab5eeffbd70f2387338e3ee8195be9f73e6dd8 22-Dec-2009 Lang Hames <lhames@gmail.com> Changed slot index ranges for MachineBasicBlocks to be exclusive of endpoint.
This fixes an in-place update bug where code inserted at the end of basic blocks may not be covered by existing intervals which were live across the entire block. It is also consistent with the way ranges are specified for live intervals.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
0d9c12539ae7cc555582e40df339d880f44cb955 20-Dec-2009 Lang Hames <lhames@gmail.com> Fixed use of phi param in SlotIndex constructors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91790 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
729a8acc9f2f4bd0751da20d0e85a8c02bdc5375 15-Dec-2009 Chris Lattner <sabre@nondot.org> Lang verified that SlotIndex is "pod like" even though it isn't a pod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
4bbf4ee1491637c247e195e19e3e4a8ee5ad72fa 15-Dec-2009 Chris Lattner <sabre@nondot.org> Remove isPod() from DenseMapInfo, splitting it out to its own
isPodLike type trait. This is a generally useful type trait for
more than just DenseMap, and we really care about whether something
acts like a pod, not whether it really is a pod.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
ff1b61f2d3b6bb91d374698a3a97167ec54e1712 17-Nov-2009 Lang Hames <lhames@gmail.com> Fixed call to wrong constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89059 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
b3661585c0f87b6045f0d65b5cac16921ae27086 14-Nov-2009 Lang Hames <lhames@gmail.com> Added an API to the SlotIndexes pass to allow new instructions to be inserted into the numbering.

PreAllocSplitting is now using this API to insert code.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88725 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
16dcaf59960d699735a57b1623092d561c18a165 08-Nov-2009 Lang Hames <lhames@gmail.com> Moved some ManagedStatics out of the SlotIndexes header.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86446 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
d71153577f41e3fed279599253dfaf38ca4243d5 08-Nov-2009 Daniel Dunbar <daniel@zuster.org> Fix class -> struct tag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86416 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
d6ef7fac1a020c58ec61cad2325e5f6afd0bbee6 07-Nov-2009 Lang Hames <lhames@gmail.com> Update some globals to use ManagedStatic.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86342 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
090780be1c94163ad7cb9368fdb1b23714b2518e 05-Nov-2009 Lang Hames <lhames@gmail.com> Tidied some ugliness in the SlotIndex default constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86097 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
a0e7b027609251609b60475e1026730a11d1e15f 05-Nov-2009 Lang Hames <lhames@gmail.com> Removed an assert which was causing significant slowdowns in debug builds.
This assert was very conservative to begin with (the error condition is well
covered by tests elsewhere in the code) so we won't miss much by removing it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
0368e500eb7f5f03313e1a7af5b8fa48465c0560 04-Nov-2009 Lang Hames <lhames@gmail.com> Handle empty/tombstone keys for LiveIndex more cleanly. Check for index sanity when constructing index list entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86049 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
11d0088ec243c54bb6143db2071d87e4f84f98ac 04-Nov-2009 Lang Hames <lhames@gmail.com> Another spurious friend declaration removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
f3a521f86a17b09c5d4e42f34afe3cf212b8fc1e 04-Nov-2009 Lang Hames <lhames@gmail.com> Removed an unnecessary friend declaration and some crufty comments from IndexListEntry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/SlotIndexes.h
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/include/llvm/CodeGen/SlotIndexes.h