[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