Another problem with "Recommit r265547, and r265610,r265639,r265657"
Mikael Holmén via llvm-commits
llvm-commits at lists.llvm.org
Mon May 2 04:12:16 PDT 2016
Hi Wei,
On 04/29/2016 11:26 PM, Wei Mi wrote:
[...]
>> I'm a little concerned about the "0 at x 1 at x" things in %vreg29's range which
>> I've no idea if they do any harm and if or how they should be removed.
>
> I think they are fine. @x means the VNI is unused. Look at function
> LiveRange::markValNoForDeletion. It is a lazy way to delete VNIs from
> valnos.
Ok, good!
> The analysis is reasonable and I cannot come up a solution better than
> yours :-). Although ideally we can have a solution in the end which
> don't penalize normal cases.
Ok!
So, this fix in RegisterCoalescer solves the last problem I ran into.
But the previous problem where we had an instruction with a tied
operand... How do we solve that?
We've done
@@ -257,0 +258,7 @@ void LiveRangeEdit::eliminateDeadDef(MachineInstr
*MI, ToShrinkSet &ToShrink) {
+ // To avoid situations where Def is tied and the same Def/Use
registers gets
+ // new reg ids and we end up with a use of an undefined register
(bug #10189)
+ if (MI->isRegTiedToUseOperand(0)) {
+ DEBUG(dbgs() << "Can't delete, def is tied to operand: " << Idx <<
'\t' << *MI);
+ return;
+ }
+
early in LiveRangeEdit::eliminateDeadDef but I'm not sure if you had a
better fix for it?
>
> Thanks,
> Wei.
>
More information about the llvm-commits
mailing list