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

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 24 13:14:16 PDT 2016


MatzeB added a comment.

In http://reviews.llvm.org/D21189#466696, @kparzysz wrote:

> In http://reviews.llvm.org/D21189#466695, @kparzysz wrote:
>
> > In http://reviews.llvm.org/D21189#466694, @MatzeB wrote:
> >
> > > Maybe if we had a way to clean extra unused dead-defs...
> >
> >
> > I thought of having such defs (including those created by IMPLICIT_DEFs) as always dead in a live range, and have them be non-extendable.
>
>
> I may have misread your comment.  You are saying that the existence of these defs (dead or not) can cause regressions in the register allocator?  I don't think that the allocator can actually assign two different (unrelated) registers to sub-ranges of a single large virtual register, can it?  There is a pass that would separate independent lanes, I guess that would help here: a read-undef could become an actual IMPLICIT_DEF, and then, if it's removable, it could be deleted completely.


If you ask about cases like this:

  %vreg0  = ...
     use vreg0
  
  %vreg1.sub1 = ...
  
  use vreg0.sub0
  use vreg1.sub1

The register allocator is able to use the same physical register for vreg1 and vreg1 here (as there is never a point where both have sub0 or sub1 live at the same time).


Repository:
  rL LLVM

http://reviews.llvm.org/D21189





More information about the llvm-commits mailing list