9e639e8fd95488cb4c8ef2f7f3a41919acb29ac4 |
|
11-Jul-2013 |
Craig Topper <craig.topper@gmail.com> |
Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e38afe1e335084134f7830ba6f2208e2ddde59b4 |
|
24-Apr-2013 |
Andrew Trick <atrick@apple.com> |
MI Sched: eliminate local vreg copies. For now, we just reschedule instructions that use the copied vregs and let regalloc elliminate it. I would really like to eliminate the copies on-the-fly during scheduling, but we need a complete implementation of repairIntervalsInRange() first. The general strategy is for the register coalescer to eliminate as many global copies as possible and shrink live ranges to be extended-basic-block local. The coalescer should not have to worry about resolving local copies (e.g. it shouldn't attemp to reorder instructions). The scheduler is a much better place to deal with local interference. The coalescer side of this equation needs work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180193 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
d983d4c6ed5ef69ca2d2e07350cc346245f35b87 |
|
20-Feb-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use LiveRangeUpdater instead of mergeIntervalRanges. Performance is the same, but LiveRangeUpdater has a more flexible interface. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1a41f32546019340f27a6f3854f3a73163a25dfe |
|
20-Feb-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add a LiveRangeUpdater class. Adding new segments to large LiveIntervals can be expensive because the LiveRange objects after the insertion point may need to be moved left or right. This can cause quadratic behavior when adding a large number of segments to a live range. The LiveRangeUpdater class allows the LIveInterval to be in a temporary invalid state while segments are being added. It maintains an internal gap in the LiveInterval when it is shrinking, and it has a spill area for new segments when the LiveInterval is growing. The behavior is similar to the existing mergeIntervalRanges() function, except it allocates less memory for the spill area, and the algorithm is turned inside out so the loop is driven by the clients. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175644 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
2319a2397990c6ae638b79efd43f88135db66d7b |
|
20-Feb-2013 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add a default constructor for LiveRange. It is useful to be able to create temporary LiveRange object whose members are filled in later. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175639 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
60af0f25616d8f228f1c5aa6ad79426fcc46baaa |
|
20-Feb-2013 |
Cameron Zwarich <zwarich@apple.com> |
Modify LiveInterval::addRange() to match the comment about what it returns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175602 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.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/LiveInterval.h
|
001d3dc976d7cda8a3dd8c7fd4020b0b96033f4e |
|
17-Sep-2012 |
Craig Topper <craig.topper@gmail.com> |
Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
2131eb48875c7059eb04f0a324321e1e15e6597e |
|
16-Sep-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix problem when using LiveRangeQuery with block entries. A value that is live in to a basic block should be returned by valueIn() in LiveRangeQuery(getMBBStartIdx(MBB)), unless it is a PHI-def which should be returned by valueDefined() instead. Current code isn't using this functionality. Future code will. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
9ae03fa69f6bc19acd8043414160320c1da0c3da |
|
15-Sep-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Make LiveRangeQuery work for PHIDefs as well. If a PHI value happens to be live out from the layout predecessor of its def block, the def slot index will be in the middle of the segment: %vreg11 = [192r,240B:0)[352r,416B:2)[416B,496r:1) 0@192r 1@480B-phi %2@352r A LiveRangeQuery for 480 should return NULL from valueIn() since the PHI value is defined at the block entry, not live in to the block. No test case, future code depends on this functionality. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163971 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
01b50ca5b397128d43167d617ba849d4a83282f1 |
|
12-Sep-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Delete dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
45c5c57179e8b4938042431f8e12c9bfad67b3c8 |
|
06-Sep-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Allow overlaps between virtreg and physreg live ranges. The RegisterCoalescer understands overlapping live ranges where one register is defined as a copy of the other. With this change, register allocators using LiveRegMatrix can do the same, at least for copies between physical and virtual registers. When a physreg is defined by a copy from a virtreg, allow those live ranges to overlap: %CL<def> = COPY %vreg11:sub_8bit; GR32_ABCD:%vreg11 %vreg13<def,tied1> = SAR32rCL %vreg13<tied0>, %CL<imp-use,kill> We can assign %vreg11 to %ECX, overlapping the live range of %CL. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b2beac2b9671f7d9773329d62c2821c8ac449ac5 |
|
03-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Completely eliminate VNInfo flags. The 'unused' state of a value number can be represented as an invalid def SlotIndex. This also exposed code that shouldn't have been looking at unused value VNInfos. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161258 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
bf60aa9db5953dd99c561dfa9323b1e3293a5a85 |
|
03-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Eliminate the VNInfo::hasPHIKill() flag. The only real user of the flag was removeCopyByCommutingDef(), and it has been switched to LiveIntervals::hasPHIKill(). All the code changed by this patch was only concerned with computing and propagating the flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b18d779b35909cd5b753871f8bf2ff4f6c17ace1 |
|
27-Jul-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Eliminate the IS_PHI_DEF flag and VNInfo::setIsPHIDef(). A value number is a PHI def if and only if it begins at a block boundary. This can be derived from the def slot, a separate flag is not necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4e996de58cfad27033165d8feb8f296b8cbe20ca |
|
11-Jul-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Teach the LiveInterval::join function to use the fast merge algorithm, generalizing its implementation sufficiently to support this value number scenario as well. This cuts out another significant performance hit in large functions (over 10k basic blocks, etc), especially those with "natural" CFG structures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e585e75612ef5fd32e2bb2c9f635496791a20f8b |
|
10-Jul-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Add an efficient merge operation to LiveInterval and use it to avoid quadratic behavior when performing pathological merges. Fixes the core element of PR12652. There is only one user of addRangeFrom left: join. I'm hoping to refactor further in a future patch and have join use this merge operation as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
261b6330896736f674bdb2dd4556a0483f3cfe8d |
|
10-Jul-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Teach LiveIntervals how to verify themselves and start using it in some of the trick merge routines. This adds a layer of testing that was necessary when implementing more efficient (and complex) merge logic for this datastructure. No functionality changed here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159981 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b77ec7d26405125fa5685370af5f17fcc9edbecd |
|
06-Jun-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Simplify LiveInterval::print(). Don't print out the register number and spill weight, making the TRI argument unnecessary. This allows callers to interpret the reg field. It can currently be a virtual register, a physical register, a spill slot, or a register unit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4e53a40ea321c43bdf754147dd2ec064985e5b7b |
|
05-Jun-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Implement LiveRangeCalc::extendToUses() and createDeadDefs(). These LiveRangeCalc methods are to be used when computing a live range from scratch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158027 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
c313c6b9fffa58e88c166e50a759d689686f17f0 |
|
20-May-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add a LiveRangeQuery class. This class is meant to be the primary interface for examining a live range in the vicinity on a given instruction. It avoids all the messy dealings with iterators and early clobbers. This is a more abstract interface to live ranges, hiding the implementation as a vector of segments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157141 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
ff11c0185391023d4f7b3254de94e11a5bb9cd58 |
|
28-Apr-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't update spill weights when joining intervals. We don't compute spill weights until after coalescing anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f4aee4c50e2ce46946f71bbb7d7a849b054018f7 |
|
28-Apr-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Spring cleaning - Delete dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155765 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
0aad7d274d6dfb0de1ebc00600cecf5e229b7c43 |
|
04-Feb-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Drop the REDEF_BY_EC VNInfo flag. A live range that has an early clobber tied redef now looks like a normal tied redef, except the early clobber def uses the early clobber slot. This is enough to handle any strange interference problems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149769 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
3b1088a2cc15a39c7a7b8dd95a56143f1dda6863 |
|
04-Feb-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't store COPY pointers in VNInfo. If a value is defined by a COPY, that instuction can easily and cheaply be found by getInstructionFromIndex(VNI->def). This reduces the size of VNInfo from 24 to 16 bytes, and improves llc compile time by 3%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
c2220057c0c464613a0b0fec36c0a582c7c94e2d |
|
19-Jan-2012 |
Lang Hames <lhames@gmail.com> |
Added methods to get the live range immediately before a given slot. Intended to parallel the getVNInfoBefore method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148453 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1130d220a33a6171e408d9ec4594242907541e1b |
|
05-Jan-2012 |
Andrew Trick <atrick@apple.com> |
comment cleanup git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147585 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.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/LiveInterval.h
|
a1dd30553da772a1702924bf1651f63fa5df7894 |
|
15-Sep-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use getPrevSlot() instead of getPrevIndex(). The getPrevIndex() function moves to the same slot in the previous instruction. For getVNInfoBefore(), we just need the previous slot in the same instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139793 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
df8412c4c1a3a798c5a849ebc3f56904568d40c4 |
|
15-Sep-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Stop verifying hasPHIKill() flags. There is only one legitimate use remaining, in addIntervalsForSpills(). All other calls to hasPHIKill() are only used to update PHIKill flags. The addIntervalsForSpills() function is part of the old spilling framework, only used by linearscan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
573a32d4870ff4af7f59fc020caf07fb6ef61e37 |
|
15-Sep-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Leave hasPHIKill flags alone in LiveInterval::RenumberValues. It is conservatively correct to keep the hasPHIKill flags, even after deleting PHI-defs. The calculation can be very expensive after taildup has created a quadratic number of indirectbr edges in the CFG, and the hasPHIKill flag isn't used for anything after RenumberValues(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b1afbac64b7c4c06959350acc175fb3552012f57 |
|
15-Sep-2011 |
Andrew Trick <atrick@apple.com> |
[regcoalescing] bug fix for RegistersDefinedFromSameValue. An improper SlotIndex->VNInfo lookup was leading to unsafe copy removal. Fixes PR10920 401.bzip2 miscompile with no IV rewrite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139765 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
ee5655dca467d3812145a2f965c31edf4875c93e |
|
13-Sep-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Switch extendInBlock() to take a kill slot instead of the last use slot. Three out of four clients prefer this interface which is consistent with extendIntervalEndTo() and LiveRangeCalc::extend(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139604 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f5497fb1b474028709f0a6d8556251dc21e34c26 |
|
17-May-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Teach LiveInterval::isZeroLength about null SlotIndexes. When instructions are deleted, they leave tombstone SlotIndex entries. The isZeroLength method should ignore these null indexes. This causes RABasic to sometimes spill a callee-saved register in the abi-isel.ll test, so don't run that test with -regalloc=basic. Prioritizing register allocation according to spill weight can cause more registers to be used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
6ee56e658a6f676e01a06d7a53d1d5c87710f3c3 |
|
30-Apr-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Avoid using stale entries form the sibling value map. This could happen when trying to use a value that had been eliminated after dead code elimination and folding loads. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
2254227791ea267426b9ac674fc6d87decb65bc1 |
|
17-Mar-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Rewrite instructions as part of ConnectedVNInfoEqClasses::Distribute. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
9763e2bf39b84f18bd464b0cda61fe1cd98dcaae |
|
02-Mar-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Move LiveIntervalMap::extendTo into LiveInterval itself. This method could probably be used by LiveIntervalAnalysis::shrinkToUses, and now it can use extendIntervalEndTo() which coalesces ranges. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126803 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
0f43811903f10394f7088f4634c0b4f9668cbac0 |
|
03-Feb-2011 |
Eric Christopher <echristo@apple.com> |
Reapply this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
463a2977b1d9e6679f859db9f32e9e783b075c10 |
|
03-Feb-2011 |
Eric Christopher <echristo@apple.com> |
Temporarily revert 124765 in an attempt to find the cycle breaking bootstrap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124778 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
2cd21119593becfa1962cfaca0319fd67913f545 |
|
03-Feb-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Defer SplitKit value mapping until all defs are available. The greedy register allocator revealed some problems with the value mapping in SplitKit. We would sometimes start mapping values before all defs were known, and that could change a value from a simple 1-1 mapping to a multi-def mapping that requires ssa update. The new approach collects all defs and register assignments first without filling in any live intervals. Only when finish() is called, do we compute liveness and mapped values. At this time we know with certainty which values map to multiple values in a split range. This also has the advantage that we can compute live ranges based on the remaining uses after rematerializing at split points. The current implementation has many opportunities for compile time optimization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124765 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
be97e906e03dd9b22e14f6749157c9d5f9701dd5 |
|
09-Jan-2011 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Teach TargetRegisterInfo how to cram stack slot indexes in with the virtual and physical register numbers. This makes the hack used in LiveInterval official, and lets LiveInterval be oblivious of stack slots. The isPhysicalRegister() and isVirtualRegister() predicates don't know about this, so when a variable may contain a stack slot, isStackSlot() should always be tested first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123128 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b907e8a2d40dc546f21ff7e122a80b121653851a |
|
21-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use IntEqClasses to compute connected components of live intervals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122296 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
8d121404370cd57be7e72543127a1afe2faa1b10 |
|
18-Dec-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Avoid dereferencing end() in collectInterferingVRegs() when there is no interference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122108 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
cb367778c0fb3200292df4f3982f54167444d1f6 |
|
29-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Print out the connected components in the verifier after complaining about their multiplicity. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
0253df9a897ce541d56146699cedd79c464bda5e |
|
08-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
After splitting, the remaining LiveInterval may be fragmented into multiple connected components. These components should be allocated different virtual registers because there is no reason for them to be allocated together. Add the ConnectedVNInfoEqClasses class to calculate the connected components, and move values to new LiveIntervals. Use it from SplitKit::rewrite by creating new virtual registers for the components. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116006 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e0a73ec0a982a4213f3de9860545d9bf2814593d |
|
02-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
When RemoveCopyByCommutingDef is creating additional identity copies, just use LiveInterval::MergeValueNumberInto instead of trying to extend LiveRanges and getting it wrong. This fixed PR8249 where a valno with a multi-segment live range was defined by an identity copy created by RemoveCopyByCommutingDef. Some of the live segments disappeared. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115385 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
207f8f688b0d530ebe4542ae0db599a6463b670b |
|
25-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Avoid using VNInfo::getCopy as much as possible. I want to get rid of it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
6e2968c85c1e162ee5bc813769eab223e3df0f15 |
|
25-Sep-2010 |
Lang Hames <lhames@gmail.com> |
Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f568b2706e274c7d8081cfd0a7ee9b881e5c313b |
|
21-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add LiveInterval::find and use it for most LiveRange searching operations instead of calling lower_bound or upper_bound directly. This cleans up the search logic a bit because {lower,upper}_bound compare LR->start by default, and it is usually simpler to search LR->end. Funnelling all searches through one function also makes it possible to replace the search algorithm with something faster than binary search. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114448 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
0635ead2c4f2182a480a3281b9b2fff084a10634 |
|
21-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove dead method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114447 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
6c4329ec96fa49e42310a8fe57813a5d7b73e621 |
|
09-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Rearrange for better alignment and less padding git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113445 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
71160b44d7d9b66c65ad6ac5f2061c64e9cb0676 |
|
08-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove dead code and data. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4a4bc3fba61dbb513f7213c7aa93faa30d18e0a2 |
|
08-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove dead code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113386 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
07c2b7ff685523458f92339facfd814689e55873 |
|
04-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove dead code. Clobber ranges are no longer used when joining physical registers. Instead, all aliases are checked for interference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113084 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
fff2c4726baa0d6c9cb184c815677e33c0357c93 |
|
12-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Also recompute HasPHIKill flags in LiveInterval::RenumberValues. If a phi-def value were removed from the interval, the phi-kill flags are no longer valid. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110949 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1b2932024f098a6968645ac78d5848951d877c19 |
|
12-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove trailing whitespace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
df30cf9e61e6586b45b74d1312bef1ee758ef94f |
|
10-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Transpose the calculation of spill weights such that we are calculating one register at a time. This turns out to be slightly faster than iterating over instructions, but more importantly, it allows us to compute spill weights for new registers created after the spill weight pass has run. Also compute the allocation hint at the same time as the spill weight. This allows us to use the spill weight as a cost metric for copies, and choose the most profitable hint if there is more than one possibility. The new hints provide a very small (< 0.1%) but universal code size improvement. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110631 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
23436597a8efad427059f2a6db5264e6a40d2dc7 |
|
06-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add LiveInterval::RenumberValues - Garbage collection for VNInfos. After heavy editing of a live interval, it is much easier to simply renumber the live values instead of trying to keep track of the unused ones. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110463 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
6f4e4df1005e67917ebfcf66c8ea5bad5f587155 |
|
26-Jul-2010 |
Lang Hames <lhames@gmail.com> |
Factored out a bit of common code to mark VNInfos for deletion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109388 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
624e0b2be6a8db6187206090ee5bc8f24cf55cb7 |
|
22-Jul-2010 |
Lang Hames <lhames@gmail.com> |
If 'other' was empty 'overlapsFrom(other, other.begin());' will segfault. This avoids that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109075 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
8de3b1eb868fc5e9b6acb334ee487d943863f810 |
|
02-Jul-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Rematerialize as much as possible before inserting spills and reloads. This allows us to recognize the common case where all uses could be rematerialized, and no stack slot allocation is necessary. If some values could be fully rematerialized, remove them from the live range before allocating a stack slot for the rest. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107492 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
ce9a20b808ba48adf72e0c0615f903a65e9f9eb8 |
|
26-Jun-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
VNInfos don't need to be destructed anymore. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
15a571436da812c7cecbc3f3423ead2edff50358 |
|
26-Jun-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't track kills in VNInfo. Use interval ends instead. The VNInfo.kills vector was almost unused except for all the code keeping it updated. The few places using it were easily rewritten to check for interval ends instead. The two new methods LiveInterval::killedAt and killedInRange are replacements. This brings us down to 3 independent data structures tracking kills. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
31135c06920017efa3998723fd1993fea3d1d6c6 |
|
13-Jun-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Let SmallVector take advantage of LiveRange's podness. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105913 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
24cdd2f82c73de23a183ec6d93498be34dc02de7 |
|
21-May-2010 |
Lang Hames <lhames@gmail.com> |
Removed scaleNumbering method declaration from LiveInterval (not defined, not used). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104311 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
991de14dd62dcbab4b31357ae22dc5b053ba50a0 |
|
30-Mar-2010 |
Benjamin Kramer <benny.kra@googlemail.com> |
Introduce SpecificBumpPtrAllocator, a wrapper for BumpPtrAllocator which allows only a single type of object to be allocated. Use it to make VNInfo destruction typesafe. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
01cb1b665da03e2b74c0724f71751e912ec8c2be |
|
30-Mar-2010 |
Torok Edwin <edwintorok@gmail.com> |
Reapply r99881 with some fixes: only call destructor in releaseMemory! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e5d90416ee1a4f45eba80789a7a3cbc3d497a4cd |
|
01-Mar-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use methods to determine if a LiveInterval is spillable. Don't accidentally produce unspillable intervals for deeply nested loops. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97496 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f3b11aa6a72e0c31066a60c2e888e7a5eb5f2399 |
|
10-Feb-2010 |
Dan Gohman <gohman@apple.com> |
Fix several comments which had previously been "the the" where a different word was intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95795 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f451cb870efcf9e0302d25ed05f4cac6bb494e42 |
|
10-Feb-2010 |
Dan Gohman <gohman@apple.com> |
Fix "the the" and similar typos. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.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/LiveInterval.h
|
cc3b0650f1feec45d1a2890b20c05c4b325f1788 |
|
03-Oct-2009 |
Lang Hames <lhames@gmail.com> |
Renamed MachineInstrIndex to LiveIndex. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83254 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
752195e3c662c6b5db042cf897c984624720f3b8 |
|
14-Sep-2009 |
Evan Cheng <evan.cheng@apple.com> |
Add early coalescing to liveintervals. This is work in progress and is known to miscompute some tests. Read it at your own rish, I have aged 10 year while writing this. The gist of this is if source of some of the copies that feed into a phi join is defined by the phi join, we'd like to eliminate them. However, if any of the non-identity source overlaps the live interval of the phi join then the coalescer won't be able to coalesce them. The early coalescer's job is to eliminate the identity copies by partially-coalescing the two live intervals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4a39ba992677ce48c61cbdad02594d9737eabdf0 |
|
12-Sep-2009 |
Lang Hames <lhames@gmail.com> |
Whoops. Committed the headers for r81605 - 'Moved some more index operations over to LiveIntervals.' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
da4ae4be5b2b8fa35ef989e548530833428f36bf |
|
05-Sep-2009 |
Bob Wilson <bob.wilson@apple.com> |
Stabilize the order of live intervals in the priority_queue used by the linear scan reg alloc. This fixes a problem I ran into where extracting a function from a larger file caused the generated code to change (masking the problem I was trying to debug) because the allocator behaved differently. This changes the results for two X86 regression checks. stack-color-with-reg is improved, with one less instruction, but pr3495 is worse, with one more copy. As far as I can tell, these tests were just getting lucky or unlucky, so I've changed the expected results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81060 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4d44081c8c93ee3a39d448e9404970ab56171ee9 |
|
04-Sep-2009 |
Lang Hames <lhames@gmail.com> |
Removed yet another std::ostream reference. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81042 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
a85d2bb86b57e54e1416f56bf6b2897a707470be |
|
04-Sep-2009 |
Lang Hames <lhames@gmail.com> |
Removed some junk and a std::ostream operator that was hanging around. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
8651125d2885f74546b6e2a556082111d5b75da3 |
|
04-Sep-2009 |
Lang Hames <lhames@gmail.com> |
Replaces uses of unsigned for indexes in LiveInterval and VNInfo with a new class, MachineInstrIndex, which hides arithmetic details from most clients. This is a step towards allowing the register allocator to update/insert code during allocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81040 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
c02497f5bae87e71fd5617db5751cb0b3a14bbed |
|
23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
shoot a few more std::ostream print methods in the head. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79814 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
52c1afcaea61440950a11a4ccadac4354420d727 |
|
11-Aug-2009 |
Lang Hames <lhames@gmail.com> |
Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1cd1d98232c3c3a0bd3810c3bf6c2572ea02f208 |
|
24-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Move more to raw_ostream, provide support for writing MachineBasicBlock, LiveInterval, etc to raw_ostream. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76965 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
29ff37f39c305455752941fbf8a426b1f4d877fc |
|
22-Jul-2009 |
David Greene <greened@obbligato.org> |
Make some changes suggested by Bill and Evan. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
23702eacab9d7fa21f250113d02e413a7ac50fda |
|
15-Jul-2009 |
Daniel Dunbar <daniel@zuster.org> |
Remove mismatched and unnecessary declaration. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
d23f0d0451a4ffc0c12d7a73559fa35587ce7abb |
|
14-Jul-2009 |
Lang Hames <lhames@gmail.com> |
New VNInfo alignment patch by Ryan Flynn. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1b8f70a0d3d72ce55c8036b79bcc80b130b5f7b2 |
|
14-Jul-2009 |
Lang Hames <lhames@gmail.com> |
Unbroke LiveInterval. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75588 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
08759c56010aaffae5c63944230c06acd0033e5b |
|
14-Jul-2009 |
Lang Hames <lhames@gmail.com> |
Tidy up VNInfo alignment code. Patch contributed by Ryan Flynn. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75587 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
ffd1326ff8dfc652a8026c3faebf55bbba7c32c7 |
|
09-Jul-2009 |
Lang Hames <lhames@gmail.com> |
Improved tracking of value number kills. VN kills are now represented as an (index,bool) pair. The bool flag records whether the kill is a PHI kill or not. This code will be used to enable splitting of live intervals containing PHI-kills. A slight change to live interval weights introduced an extra spill into lsr-code-insertion (outside the critical sections). The test condition has been updated to reflect this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75097 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
10382fb71d8306f320ecbeb7049d25354c0e5457 |
|
19-Jun-2009 |
Lang Hames <lhames@gmail.com> |
More VNInfo tweaking, plus a little progress on intra-block splitting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73750 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b7b39987bb1f9acc4cc0efe0f4c2d1ee5e2c9148 |
|
18-Jun-2009 |
Chris Lattner <sabre@nondot.org> |
Don't use int8_t, that requires DataTypes.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73682 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
73d2f15fb5af9ca91f1f01dbaea6ff54a6fed68b |
|
18-Jun-2009 |
Zhongxing Xu <xuzhongxing@gmail.com> |
include header for uint8_t. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73675 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
857c4e01f85601cf2084adb860616256ee47c177 |
|
17-Jun-2009 |
Lang Hames <lhames@gmail.com> |
VNInfo cleanup. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73634 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
90f95f88c6ce09c6744777dc9d140c3c77203b92 |
|
14-Jun-2009 |
Evan Cheng <evan.cheng@apple.com> |
Move register allocation preference (or hint) from LiveInterval to MachineRegisterInfo. This allows more passes to set them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f41538d1b54f55e8900394929b50f7ce3e61125f |
|
02-Jun-2009 |
Lang Hames <lhames@gmail.com> |
Update to in-place spilling framework. Includes live interval scaling and trivial rewriter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72729 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
0adb527d169e1f557676fda35bc9abb735e5c912 |
|
25-Apr-2009 |
Evan Cheng <evan.cheng@apple.com> |
Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
cccdb2b602cf421d8890130308945163620ebc68 |
|
18-Apr-2009 |
Evan Cheng <evan.cheng@apple.com> |
Add a new LiveInterval::overlaps(). It checks if the live interval overlaps a range specified by [Start, End). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
de551f91d8816632a76a065084caab9fab6aacff |
|
01-Apr-2009 |
Dan Gohman <gohman@apple.com> |
Use CHAR_BIT instead of hard-coding 8 in several places where it is appropriate. This helps visually differentiate host-oriented calculations from target-oriented calculations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68227 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
a2e6435e483f30e00382a5758f6dcc67e213b57a |
|
11-Mar-2009 |
Evan Cheng <evan.cheng@apple.com> |
Two coalescer fixes in one. 1. Use the same value# to represent unknown values being merged into sub-registers. 2. When coalescer commute an instruction and the destination is a physical register, update its sub-registers by merging in the extended ranges. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
86fb9fdb2000213d3cd5a082e8501cb8fe974a14 |
|
08-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
Strengthen the previous check. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64076 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
77fde2cbb1fbf9daf5235fa734c6c09b2d530617 |
|
08-Feb-2009 |
Evan Cheng <evan.cheng@apple.com> |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64073 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
5b93f6fa82e33b17d618b3e24da513f547861481 |
|
02-Feb-2009 |
Owen Anderson <resistor@mac.com> |
MergeValueInto is too smart: it might choose to do the merge the opposite direction. Live interval reconstruction needs to account for this, and scour its maps to prevent dangling references. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63558 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
5a3c6a87b0173b9d367f7b55e7c99e5110ede057 |
|
29-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Exit with nice warnings when register allocator run out of registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63267 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
42cc6e33ec0f63560c31f1928c56b4b0465d537c |
|
29-Jan-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix comment about removeRange. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63255 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
169d4080277c71548de52b54c8a79f99694351c6 |
|
28-Dec-2008 |
Owen Anderson <resistor@mac.com> |
Forgot to commit this file. Add a clear() method to remove all ranges and value numbers for a live interval. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61459 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
fce40287181af1ae376c3991626ffbf0ccd902b7 |
|
20-Dec-2008 |
Dan Gohman <gohman@apple.com> |
LiveInterval::removeKills and isKill don't need 'this' and can be static member functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
5379f412bc6ac6171f3bd73930197bfce88c2faa |
|
19-Dec-2008 |
Evan Cheng <evan.cheng@apple.com> |
Fix PR3149. If an early clobber def is a physical register and it is tied to an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this. 172 %ECX<def> = MOV32rr %reg1039<kill> 180 INLINEASM <es:subl $5,$1 sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>, 36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0 188 %EAX<def> = MOV32rr %EAX<kill> 196 %ECX<def> = MOV32rr %ECX<kill> 204 %ECX<def> = MOV32rr %ECX<kill> 212 %EAX<def> = MOV32rr %EAX<kill> 220 %EAX<def> = MOV32rr %EAX 228 %reg1039<def> = MOV32rr %ECX<kill> The early clobber operand ties ECX input to the ECX def. The live interval of ECX is represented as this: %reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47) The right way to represent this is something like %reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47) Of course that won't work since that means overlapping live ranges defined by two val#. The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61259 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
2ad8245566a3c92d4559727a877d57ecf5d078c8 |
|
26-Nov-2008 |
Dan Gohman <gohman@apple.com> |
LiveRanges are represented as half-open ranges. Fix the findLiveInMBBs code and the LiveInterval.h top-level comment and accordingly. This fixes blocks having spurious live-in registers in boundary cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4974b6aae1ec6f385ee212942d9a01ba1f4997e3 |
|
12-Nov-2008 |
Dan Gohman <gohman@apple.com> |
Correct a function name in a comment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59143 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
54898938673d2a13ce31626ec34b2d4d314b2c81 |
|
29-Oct-2008 |
Evan Cheng <evan.cheng@apple.com> |
- More pre-split fixes: spill slot live interval computation bug; restore point bug. - If a def is spilt, remember its spill index to allow its reuse. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58375 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
86b49f8e2de796cb46c7c8b6a4c4900533fd53f4 |
|
24-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Next round of earlyclobber handling. Approach the RA problem by expanding the live interval of an earlyclobber def back one slot. Remove overlap-earlyclobber throughout. Remove earlyclobber bits and their handling from live internals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56539 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
79faf61fad36c34dd818da1e97a214d70c02e4ce |
|
20-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Shorten and rearrange data fields to save a word of memory. Per review feedback. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56388 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
fa48f941304f29f967e0a7fc6807d7026ba99b7b |
|
19-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Remove AsmThatEarlyClobber etc. from LiveIntervalAnalysis and redo as linked list walk. Logic moved into RA. Per review feedback. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56326 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
99ec779a93cf7a09ac336b63d2d67818960343a1 |
|
23-Jun-2008 |
Evan Cheng <evan.cheng@apple.com> |
Instead of adding an isSS field to LiveInterval to denote stack slot. Use top bit of 'reg' instead. If the top bit is set, than the LiveInterval represents a stack slot live interval. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52639 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
3f32d65912b4da23793dab618d981be2ce11c331 |
|
04-Jun-2008 |
Evan Cheng <evan.cheng@apple.com> |
Add a stack slot coloring pass. Not yet enabled. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51934 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1baa88e3de8947b02d9ef4caa73e5860f048ec6e |
|
29-May-2008 |
Dan Gohman <gohman@apple.com> |
Prune and tidy #includes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
34cd4a484e532cc463fd5a4bf59b88d13c5467c1 |
|
05-May-2008 |
Evan Cheng <evan.cheng@apple.com> |
Fix more -Wshorten-64-to-32 warnings. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50659 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f30a49d9e02bdf9ba9703f8f1f52a3c6186e0065 |
|
03-Apr-2008 |
Evan Cheng <evan.cheng@apple.com> |
Special handling of zero-sized live intervals. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e85fe660e4e99d30ca9292b706b8ffe6d0367dca |
|
26-Feb-2008 |
Bill Wendling <isanbard@gmail.com> |
Detabify git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
c8d044e4f779fdcfc5e7d592927740fd8f672a70 |
|
15-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
- Removing the infamous r2rMap_ and rep() method. Now the coalescer will update register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
d2b8d7bc51b0e41d09b32aeaa550358ccb379009 |
|
13-Feb-2008 |
Evan Cheng <evan.cheng@apple.com> |
- Added removeValNo() to remove all live ranges of a particular value#. - removeRange() can now update value# information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
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/include/llvm/CodeGen/LiveInterval.h
|
7ed47a13356daed2a34cd2209a31f92552e3bdd8 |
|
29-Dec-2007 |
Chris Lattner <sabre@nondot.org> |
Don't attribute in file headers anymore. See llvmdev for the discussion of this change. Boy are my fingers tired. ;-) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
c3fc7d9ec9b495c8a88cd854247105c296d3aabd |
|
29-Nov-2007 |
Evan Cheng <evan.cheng@apple.com> |
Replace the odd kill# hack with something less fragile. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
28e9a5fe94b96570c3939c61fab18204abdd6b97 |
|
17-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
Update comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
34729256e8058d4106706e9feb2dfad7893502d1 |
|
14-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
When coalescing an EXTRACT_SUBREG and the dst register is a physical register, the source register will be coalesced to the super register of the LHS. Properly merge in the live ranges of the resulting coalesced interval that were part of the original source interval to the live interval of the super-register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
32dfbeada7292167bb488f36a71a5a6a519ddaff |
|
12-Oct-2007 |
Evan Cheng <evan.cheng@apple.com> |
EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG like (almost) a register copy. However, it always coalesced to the register of the RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub- register uses which adds subtle complications to load folding, spiller rewrite, etc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
af992f782fb2cac8d00b352c3dd73f6e782b5758 |
|
06-Sep-2007 |
David Greene <greened@obbligato.org> |
Constify to catch bugs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
38a90969eaae1d0ef366c0fbe39f0ee447de7a8d |
|
05-Sep-2007 |
Evan Cheng <evan.cheng@apple.com> |
Accidentially left this out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41730 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f3bb2e65d12857f83b273f4ecab013680310bbbc |
|
05-Sep-2007 |
Evan Cheng <evan.cheng@apple.com> |
Use pool allocator for all the VNInfo's to improve memory access locality. This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41729 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
d4e4937b79a7da789379a09117cc74f20cd60623 |
|
31-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Remove an unnecessary element, saving 4 bytes per LiveInterval. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41641 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
7ecb38be0a533e7b9c7d3b8e9b5c8a6fa5f6b349 |
|
29-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Change LiveRange so it keeps a pointer to the VNInfo rather than an index. Changes related modules so VNInfo's are not copied. This decrease copy coalescing time by 45% and overall compilation time by 10% on siod. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1a66f0a4f2348473263fab757d96588bc1e93554 |
|
28-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Recover most of the compile time regression due to recent live interval changes. 1. Eliminate the costly live interval "swapping". 2. Change ValueNumberInfo container from SmallVector to std::vector. The former performs slowly when the vector size is very large. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41536 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
81975f6dfd9d306d0ea7ce3ef22561c949de9af9 |
|
27-Aug-2007 |
Dan Gohman <gohman@apple.com> |
Add explicit keywords and remove spurious trailing semicolons. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41482 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
a6db2d3df22ee173e653a441a8be3f0810ce8631 |
|
16-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
549f27d3070195d6647b796841a5291b4549e8e0 |
|
14-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Re-implement trivial rematerialization. This allows def MIs whose live intervals that are coalesced to be rematerialized. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41060 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4f8ff168de12eabdeb4b9437bf9402489ecf85cb |
|
11-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Code to maintain kill information during register coalescing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41016 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
24c2e5cf7e926452ea5875d027ec0d24d9c19e39 |
|
08-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Adding kill info to val#. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
a141cfe5b2beb16599b5bab8c73333b31cc7a548 |
|
08-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
Clean up and bug fix. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40921 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
8df786012dc6b875f31ba4152e09c6e0098082ee |
|
08-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
- Each val# can have multiple kills. - Fix some minor bugs related to special markers on val# def. ~0U means undefined, ~1U means dead val#. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40916 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
a8d94f1315f722de056af03763664b77a5baac26 |
|
08-Aug-2007 |
Evan Cheng <evan.cheng@apple.com> |
- LiveInterval value#'s now have 3 components: def instruction #, kill instruction #, and source register number (iff the value# is defined by a copy). - Now def instruction # is set for every value#, not just for copy defined ones. - Update some outdated code related inactive live ranges. - Kill info not yet set. That's next patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40913 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e52eef8e9a10ada9efc1fed115e5b6eefb22b1da |
|
17-Apr-2007 |
Evan Cheng <evan.cheng@apple.com> |
Add a register allocation preference field; add a method to compute size of a live interval. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36216 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
2638e1a6b9e3c0e22b398987e1db99bee81db4fb |
|
20-Mar-2007 |
Evan Cheng <evan.cheng@apple.com> |
First cut trivial re-materialization support. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35208 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
5c7e326585f3a543388ba871c3425f7664cd9143 |
|
17-Dec-2006 |
Bill Wendling <isanbard@gmail.com> |
Added an automatic cast to "std::ostream*" etc. from OStream. We then can rework the hacks that had us passing OStream in. We pass in std::ostream* instead, check for null, and then dispatch to the correct print() method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32636 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
4b607748d86b44cc59e5cf3eee194dfd9b0fcd86 |
|
16-Dec-2006 |
Jeff Cohen <jeffc@jolt-lang.org> |
The best unbreakage yet, addressing Bill's concerns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32622 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
c21c5eeb4f56f160e79522df2d3aab5cfe73c05d |
|
15-Dec-2006 |
Jeff Cohen <jeffc@jolt-lang.org> |
An even better unbreakage... git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
d5c0f439924ec6c839c3c6ba16122e460a296336 |
|
15-Dec-2006 |
Jeff Cohen <jeffc@jolt-lang.org> |
Complete unbreak of VC++ (Chris identified the simple fix). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32615 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e81561909d128c6e2d8033cb5465a49b2596b26a |
|
07-Dec-2006 |
Bill Wendling <isanbard@gmail.com> |
Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are now cerr, cout, and NullStream resp. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
bdc679d564e67a81792e463f6614b0088f975025 |
|
29-Nov-2006 |
Bill Wendling <isanbard@gmail.com> |
Converted to using llvm streams instead of <iostream>s git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31992 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b5ebf15b2b2ce8989caf1a1114b05d80b0f9bd48 |
|
28-Nov-2006 |
Bill Wendling <isanbard@gmail.com> |
Added a temporary hack to get the llvm-streams to work for future checkins. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31978 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
eba4be809086c59d58050f6d2eceb0c029785dff |
|
28-Nov-2006 |
Bill Wendling <isanbard@gmail.com> |
Added helper function to transition to using llvm streams. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31953 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1bcf7a309eb46c66adc154ad9c8f0562653a8e13 |
|
16-Nov-2006 |
Bill Wendling <isanbard@gmail.com> |
Added "removeRange", which takes and removes an entire LiveRange. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
2efe1094528b08460508bb8a2028c249536b353a |
|
02-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
add a prototype git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30051 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
5d9b6f28239ecc6f57eeb3752455a6caf21ff270 |
|
01-Sep-2006 |
Chris Lattner <sabre@nondot.org> |
remove some particularly expensive assertions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30014 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
91725b75852443923b419fd23215194cfc65dd88 |
|
31-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
avoid calling the virtual isMoveInstr method endlessly by caching its results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
6d8fbef015ff836bcb8f64f52c49805e43f8ea9f |
|
30-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Teach the coallescer to coallesce live intervals joined by an arbitrary number of copies, potentially defining live ranges that appear to have differing value numbers that become identical when coallsced. Among other things, this fixes CodeGen/X86/shift-coalesce.ll and PR687. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29968 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
c114b2cad7293d98686d380273085f5c32966b52 |
|
26-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Completely change the way that joining with physregs is implemented. This paves the way for future changes, increases coallescing opportunities (in theory, not witnessed in practice), and eliminates the really expensive LiveIntervals::overlapsAliases method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29890 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
f7da2c7b0c6293c268881628fc351bed7763f1f4 |
|
25-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Take advantage of the recent improvements to the liveintervals set (tracking instructions which define each value#) to simplify and improve the coallescer. In particular, this patch: 1. Implements iterative coallescing. 2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a better solution. 3. Implements PR865, "coallescing" away the second copy in code like: A = B ... B = A This also includes changes to symbolically print registers in intervals when possible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29862 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
be4f88a8b8bb3311e0dc4cde8533763d7923c3ea |
|
22-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Improve the LiveInterval class to keep track of which machine instruction defines each value# tracked by the interval. This will be used to improve coallescing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29830 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
969e262656066e76d59b39eb6e8b17ed9f448383 |
|
22-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
Switch to using smallvector for liveintervals. This speeds up live interval analysis 11% on kc++. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29812 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
0c2f83e756ad808aedf6cb39ea043d3d4cd79909 |
|
22-Aug-2006 |
Chris Lattner <sabre@nondot.org> |
move LiveInterval state all together git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29806 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
9471c8a93b117d8ac01c4ef1cb9faa583e03dec0 |
|
26-Jan-2006 |
Jeff Cohen <jeffc@jolt-lang.org> |
Improve compatibility with VC2005, patch by Morten Ofstad! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
0692bbd991abe449327276ab8b10f1c822530450 |
|
20-Oct-2005 |
Chris Lattner <sabre@nondot.org> |
add a new method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23840 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
38135af219c48a8626d6af34a92e7e8bb957c81f |
|
14-May-2005 |
Chris Lattner <sabre@nondot.org> |
Print the symbolic register name in a register allocator debug dump. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22002 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
1a3a48776340c96df5df673df1c159391d1a1cb7 |
|
18-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix typeo git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17938 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
bae74d9192f04d8185c7b4580565d56cc4ef53f2 |
|
18-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Add ability to give hints to the overlaps routines. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17934 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
743ef6d70e710353c1e2b6a4b23af1262f4a475b |
|
18-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Add new advanceTo method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17932 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
8d8d513d4dcd4d98b92ccce10a9907086af28f1e |
|
18-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Fix a minor bug in expiredAt. endNumber() is the first number that is not valid. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17931 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
23b71c1e1e33219327b1c0edf43034dbe4c3ae90 |
|
18-Nov-2004 |
Chris Lattner <sabre@nondot.org> |
Rename some methods, use 'begin' instead of 'start', add new LiveInterval iterator/begin/end members. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
d3a205eab5761298ccfb320834b5f0ea0184ab27 |
|
25-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Make a method const, no functionality changes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15193 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
3f86193cd2153595f0e32d8a8d8a0e7d4ec97faf |
|
24-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Remove implementation of operator= and make it private so that it is not used accidentally. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
a1613db62fec94845aa8306232fb665273615bad |
|
24-Jul-2004 |
Alkis Evlogimenos <alkis@evlogimenos.com> |
Change std::map<unsigned, LiveInterval*> into a std::map<unsigned, LiveInterval>. This saves some space and removes the pointer indirection caused by following the pointer. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15167 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
abf295fc6cfb438617e8b105022ce506f56674d8 |
|
24-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Little stuff: * Fix comment typeo * add dump() methods * add a few new methods like getLiveRangeContaining, removeRange & joinable (which is currently the same as overlaps) * Remove the unused operator== Bigger change: * In LiveInterval, instead of using a boolean isDefinedOnce to keep track of if there are > 1 definitions in a particular interval, keep a counter, NumValues to keep track of exactly how many there are. * In LiveRange, add a new ValId element to indicate which of the numbered values each LiveRange belongs to. We now no longer merge LiveRanges if they are of differing value ID's even if they are neighbors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
b26c215c059d4674bd6a9a8b94da86e497e64844 |
|
23-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Change addRange and join to be a little bit smarter. In particular, we don't want to insert a new range into the middle of the vector, then delete ranges one at a time next to the inserted one as they are merged. Instead, if the inserted interval overlaps, just start merging. The only time we insert into the middle of the vector is when we don't overlap at all. Also delete blocks of live ranges if we overlap with many of them. This patch speeds up joining by .7 seconds on a large testcase, but more importantly gets all of the range adding code into addRangeFrom. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15141 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
e6ad392802d8643ec7efad9bb80c0c429edda499 |
|
23-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
New helper method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15138 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
ebd7e6c54dce754a88d8f38df4ac2f388f35435e |
|
23-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Instead of searching for a live interval pair, search for a location. This gives a very modest speedup of .3 seconds compiling 176.gcc (out of 20s). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15136 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|
fb449b9ea5a37fb411aee7d42f6a76119602288d |
|
23-Jul-2004 |
Chris Lattner <sabre@nondot.org> |
Pull the LiveRange and LiveInterval classes out of LiveIntervals.h (which will soon be renamed) into their own file. The new file should not emit DEBUG output or have other side effects. The LiveInterval class also now doesn't know whether its working on registers or some other thing. In the future we will want to use the LiveInterval class and friends to do stack packing. In addition to a code simplification, this will allow us to do it more easily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/include/llvm/CodeGen/LiveInterval.h
|