History log of /llvm-project/llvm/lib/CodeGen/LiveInterval.cpp (Results 126 – 150 of 277)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# dae1dc1f 12-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

That's it, I am declaring this a failure of the C++03 STL.

There are too many compatibility problems with using mixed types in
std::upper_bound, and I don't want to spend 110 lines of boilerplate se

That's it, I am declaring this a failure of the C++03 STL.

There are too many compatibility problems with using mixed types in
std::upper_bound, and I don't want to spend 110 lines of boilerplate setting up
a call to a 10-line function. Binary search is not /that/ hard to implement
correctly.

I tried terminating the binary search with a linear search, but that actually
made the algorithm slower against my expectation. Most live intervals have less
than 4 segments. The early test against endIndex() does pay, and this version is
25% faster than plain std::upper_bound().

llvm-svn: 127522

show more ...


# 8559f591 11-Mar-2011 John Wiegley <johnw@boostpro.com>

Fix use of CompEnd predicate to be standards conforming

The existing CompEnd predicate does not define a strict weak order as required
by the C++03 standard; therefore, its use as a predicate to std

Fix use of CompEnd predicate to be standards conforming

The existing CompEnd predicate does not define a strict weak order as required
by the C++03 standard; therefore, its use as a predicate to std::upper_bound
is invalid. For a discussion of this issue, see
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#270

This patch replaces the asymmetrical comparison with an iterator adaptor that
achieves the same effect while being strictly standard-conforming by ensuring
an apples-to-apples comparison.

llvm-svn: 127462

show more ...


# 880e0b77 08-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Fix the build for MSVC 9 whose upper_bound() wants to compare elements in the sorted array.

Patch by Olaf Krzikalla!

llvm-svn: 127264


# a28879b8 08-Mar-2011 Oscar Fuentes <ofv@wanadoo.es>

Revert "Make a comparator's argument `const'. This fixes the build for
MSVC 9."

The "fix" was meaningless.

This reverts commit r127245.

llvm-svn: 127260


# 6ec5983a 08-Mar-2011 Oscar Fuentes <ofv@wanadoo.es>

Make a comparator's argument `const'. This fixes the build for MSVC 9.

llvm-svn: 127245


Revision tags: llvmorg-2.9.0-rc1
# a04dddf7 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Avoid comparing invalid slot indexes.

llvm-svn: 126922


# 9e326a84 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.

l

Move LiveIntervalMap::extendTo into LiveInterval itself.

This method could probably be used by LiveIntervalAnalysis::shrinkToUses, and
now it can use extendIntervalEndTo() which coalesces ranges.

llvm-svn: 126803

show more ...


# 9fb04015 19-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Implement RAGreedy::splitAroundRegion and remove loop splitting.

Region splitting includes loop splitting as a subset, and it is more generic.
The splitting heuristics for variables that are live in

Implement RAGreedy::splitAroundRegion and remove loop splitting.

Region splitting includes loop splitting as a subset, and it is more generic.
The splitting heuristics for variables that are live in more than one block are
now:

1. Try to create a region that covers multiple basic blocks.
2. Try to create a new live range for each block with multiple uses.
3. Spill.

Steps 2 and 3 are similar to what the standard spiller is doing.

llvm-svn: 123853

show more ...


# b83a6b23 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 st

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.

llvm-svn: 123128

show more ...


# 1331a15b 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Replace TargetRegisterInfo::printReg with a PrintReg class that also works without a TRI instance.

Print virtual registers numbered from 0 instead of the arbitrary
FirstVirtualRegister. The first vi

Replace TargetRegisterInfo::printReg with a PrintReg class that also works without a TRI instance.

Print virtual registers numbered from 0 instead of the arbitrary
FirstVirtualRegister. The first virtual register is printed as %vreg0.
TRI::NoRegister is printed as %noreg.

llvm-svn: 123107

show more ...


# 4c278f82 21-Dec-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Use IntEqClasses to compute connected components of live intervals.

llvm-svn: 122296


# 251337e1 19-Dec-2010 Cameron Zwarich <zwarich@apple.com>

Fix PR8815 by checking for an explicit clobber def tied to a use operand in
ConnectedVNInfoEqClasses::Classify().

llvm-svn: 122202


# dff6a6e4 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Teach ConnectedVNInfoEqClasses::Classify to deal with unused values.

We don't want unused values forming their own equivalence classes, so we lump
them all together in one class, and then merge them

Teach ConnectedVNInfoEqClasses::Classify to deal with unused values.

We don't want unused values forming their own equivalence classes, so we lump
them all together in one class, and then merge them with the class of the last
used value.

llvm-svn: 117670

show more ...


# 13d7e0d0 29-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Fix broken equivalence class calculation. We could probably also use
EquvivalenceClasses.h except it looks like overkill when elements are continuous
integers.

llvm-svn: 117631


# d84bb168 09-Oct-2010 Benjamin Kramer <benny.kra@googlemail.com>

Silence compiler warning.

llvm-svn: 116156


# 05cae832 08-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Classify value numbers into connected components in linear time.

llvm-svn: 116105


# 0f1677e1 07-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

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.

llvm-svn: 116006

show more ...


Revision tags: llvmorg-2.8.0
# 9a414901 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Tweak VNInfo printing.

llvm-svn: 115650


# 1c9afa1a 05-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Add assert for valid slot indexes.

llvm-svn: 115649


# 28792c4a 01-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

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.

llvm-svn: 115385

show more ...


Revision tags: llvmorg-2.8.0-rc3
# 56495686 25-Sep-2010 Lang Hames <lhames@gmail.com>

Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL.

llvm-svn: 114791


# beb64f55 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Refix MSVC9 and upper_bound. It actually needs a fully symmetric comparator.

llvm-svn: 114469


# f7a8e93b 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

Don't pollute the global namespace.

llvm-svn: 114459


# 25a123df 21-Sep-2010 Jakob Stoklund Olesen <stoklund@2pi.dk>

MSVC9 does not support upper_bound with an asymmetric comparator.

llvm-svn: 114455


# 1ccded77 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 co

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.

llvm-svn: 114448

show more ...


12345678910>>...12