Distinguish complex mapped values from forced recomputation.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 13 Sep 2011 23:09:04 +0000 (23:09 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 13 Sep 2011 23:09:04 +0000 (23:09 +0000)
commit393bfcb263fa46e4badc73c6aa56306986f94dcf
tree642df4f74d243122f108fd262ae85d80cd95df01
parentf2e6d33125a45952fb8fbee7e12af63555e88e63
Distinguish complex mapped values from forced recomputation.

When a ParentVNI maps to multiple defs in a new interval, its live range
may still be derived directly from RegAssign by transferValues().

On the other hand, when instructions have been rematerialized or
hoisted, it may be necessary to completely recompute live ranges using
LiveRangeCalc::extend() to all uses.

Use a bit in the value map to indicate that a live range must be
recomputed.  Rename markComplexMapped() to forceRecompute().

This fixes some live range verification errors when
-split-spill-mode=size hoists back-copies by recomputing source ranges
when RegAssign kills can't be moved.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139660 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SplitKit.cpp
lib/CodeGen/SplitKit.h