History log of /llvm-project/llvm/lib/CodeGen/SplitKit.cpp (Results 176 – 200 of 293)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 8630840c 17-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Dead code elimination may separate the live interval into multiple connected components.

I have convinced myself that it can only happen when a phi value dies. When it
happens, allocate new virtual

Dead code elimination may separate the live interval into multiple connected components.

I have convinced myself that it can only happen when a phi value dies. When it
happens, allocate new virtual registers for the components.

llvm-svn: 127827

show more ...


# 315b42c3 17-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Rewrite instructions as part of ConnectedVNInfoEqClasses::Distribute.

llvm-svn: 127779


# 32210de3 15-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Preserve both isPHIDef and isDefByCopy bits when copying parent values.

llvm-svn: 127697


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

Delete dead code after rematerializing.

LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing,
splitting, and spilling for dead code elimination. It can delete chains of dead
inst

Delete dead code after rematerializing.

LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing,
splitting, and spilling for dead code elimination. It can delete chains of dead
instructions as long as there are no dependency loops.

llvm-svn: 127287

show more ...


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

Work around a coalescer bug.

The coalescer can in very rare cases leave too large live intervals around after
rematerializing cheap-as-a-move instructions.

Linear scan doesn't really care, but live

Work around a coalescer bug.

The coalescer can in very rare cases leave too large live intervals around after
rematerializing cheap-as-a-move instructions.

Linear scan doesn't really care, but live range splitting gets very confused
when a live range is killed by a ghost instruction.

I will fix this properly in the coalescer after 2.9 branches.

llvm-svn: 127096

show more ...


# d4f78895 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Tweak debug output. No functional changes.

llvm-svn: 127006


# 1a69e233 04-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Use an IndexedMap instead of a DenseMap for the live-out cache.

This speeds up updateSSA() so it only accounts for 5% of the live range
splitting time.

llvm-svn: 126972


# 9a6382fc 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Cache basic block bounds instead of asking SlotIndexes::getMBBRange all the time.

This speeds up the greedy register allocator by 15%.
DenseMap is not as fast as one might hope.

llvm-svn: 126921


# c9601988 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Change the SplitEditor interface to a single instance can be shared for multiple splits.

llvm-svn: 126912


# 5ea0712e 03-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Only run the updateSSA loop when we have actually seen multiple values.

When only a single value has been seen, new PHIDefs are never needed.

llvm-svn: 126911


# 815196ca 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Turn the Edit member into a pointer so it can change dynamically.

No functional change.

llvm-svn: 126898


# 503b143a 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Transfer simply defined values directly without recomputing liveness and SSA.

Values that map to a single new value in a new interval after splitting don't
need new PHIDefs, and if the parent value

Transfer simply defined values directly without recomputing liveness and SSA.

Values that map to a single new value in a new interval after splitting don't
need new PHIDefs, and if the parent value was never rematerialized the live
range will be the same.

llvm-svn: 126894

show more ...


# 3648263a 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Extract a method. No functional change.

llvm-svn: 126893


# 48af8923 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Move extendRange() into SplitEditor and delete the LiveRangeMap class.

Extract the updateSSA() method from the too long extendRange().

LiveOutCache can be shared among all the new intervals since t

Move extendRange() into SplitEditor and delete the LiveRangeMap class.

Extract the updateSSA() method from the too long extendRange().

LiveOutCache can be shared among all the new intervals since there is at most
one of the new ranges live out from each basic block.

llvm-svn: 126818

show more ...


# b0237619 02-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Rename mapValue to extendRange because that is its function now.

Simplify the signature - The return value and ParentVNI are no longer needed.

llvm-svn: 126809


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


# 2b09bed5 01-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Delete dead code.

llvm-svn: 126801


# 8ef91fc8 01-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Move the value map from LiveIntervalMap to SplitEditor.

The value map is currently not used, all values are 'complex mapped' and
LiveIntervalMap::mapValue is used to dig them out.

This is the first

Move the value map from LiveIntervalMap to SplitEditor.

The value map is currently not used, all values are 'complex mapped' and
LiveIntervalMap::mapValue is used to dig them out.

This is the first step in a series changes leading to the removal of
LiveIntervalMap. Its data structures can be shared among all the live intervals
created by a split, so it is wasteful to create a copy for each.

llvm-svn: 126800

show more ...


# 977e3d3c 01-Mar-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Delete dead code.

Local live range splitting is better driven by interference. This code was just
guessing.

llvm-svn: 126799


# ed172998 23-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

It is safe to ignore LastSplitPoint when the variable is not live out.

No code will be inserted after the split point anyway.

llvm-svn: 126319


# 60a26a65 21-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Add SplitKit::isOriginalEndpoint and use it to force live range splitting to terminate.

An original endpoint is an instruction that killed or defined the original live
range before any live ranges w

Add SplitKit::isOriginalEndpoint and use it to force live range splitting to terminate.

An original endpoint is an instruction that killed or defined the original live
range before any live ranges were split.

When splitting global live ranges, avoid creating local live ranges without any
original endpoints. We may still create global live ranges without original
endpoints, but such a range won't be split again, and live range splitting still
terminates.

llvm-svn: 126151

show more ...


# f1a60a61 19-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Give SplitAnalysis a VRM member to access VirtRegMap::getOriginal().

llvm-svn: 126005


# 04aff708 19-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Missed member rename for naming convention.

llvm-svn: 126003


# 8dafc875 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Delete unused code for analyzing and splitting around loops.

Loop splitting is better handled by the more generic global region splitting
based on the edge bundle graph.

llvm-svn: 125243


# 7cb57b30 09-Feb-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Use the LiveBLocks array for SplitEditor::splitSingleBlocks() as well.

This fixes a bug where splitSingleBlocks() could split a live range after a
terminator instruction.

llvm-svn: 125237


12345678910>>...12