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
|