Handle overlapping regunit intervals in LiveIntervals::addKillFlags().
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 6 Sep 2012 18:15:18 +0000 (18:15 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 6 Sep 2012 18:15:18 +0000 (18:15 +0000)
commite617ccb80da76821379bbff4a2fdcd09e8401e8b
tree83ab7c91cdf9ce34b1d5413b4482624e621e4393
parentf9dff0e0e4e8aa9fd99c5f069e431fe6de98c1c9
Handle overlapping regunit intervals in LiveIntervals::addKillFlags().

We will soon allow virtual register live ranges to overlap regunit live
ranges when the physreg is defined as a copy of the virtreg:

  %EAX = COPY %vreg5
  FOO %vreg5
  BAR %EAX<kill>

There is no real interference since %vreg5 and %EAX have the same value
where they overlap.

This patch prevents addKillFlags from adding virtreg kill flags to FOO
where the assigned physreg is overlapping the virtual register live
range.

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