[PATCH] D21189: Create subranges for new intervals resulting from live interval splitting

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 22 05:38:58 PDT 2016


kparzysz added a comment.

In http://reviews.llvm.org/D21189#463791, @MatzeB wrote:

> I haven't looked at the actual patch yet, but this last paragraph sounds wrong to me. A <def,read-undef> does indeed not read the super register, this is exactly why we add the read-undef flag!


Consider this case:

  100 vreg1:sub0<def,read-undef> = ...
  108 ...
  116 vreg1:sub1<def,read-undef> = ...
  124 ...
  132 ... = vreg1<kill>

The live range for sub0 will be [100,132), the live range for sub1 will be [116,132).  Now, when the live range for the main register is constructed, we first see the def at 100 and create a dead def: [100,100d).  Then a def at 116 is seen, and we add [116,116d) for it, finally there is a use at 132, so we extend the range [100r,100d)[116r,116d) to 132.  The problem is that the def at 116 does not read vreg1, so the def at 100 will not be extended to 132.


Repository:
  rL LLVM

http://reviews.llvm.org/D21189





More information about the llvm-commits mailing list