Does updateTerminator() need to be rewritten in order to implement the changes you suggested (call LV->replaceKillInstruction)? Or can it be taken care of just by adding code to the files in Target/Mips?<br><br>Also, is the generated code still correct if -disable-phi-elim-edge-splitting is added to the command line options?<br>
<br><div class="gmail_quote">On Mon, May 2, 2011 at 5:00 PM, Jakob Stoklund Olesen <span dir="ltr"><<a href="mailto:stoklund@2pi.dk">stoklund@2pi.dk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im"><br>
On May 2, 2011, at 3:51 PM, Akira Hatanaka wrote:<br>
<br>
> - vreg81's VarInfo:<br>
>   Alive in blocks: 5, 6, 7, 8, 10, 12, 13, 19,<br>
>   Killed by:<br>
>     #0: J <BB#17><br>
><br>
><br>
> As you can see, VarInfo vreg81 is killed by the unconditional jump instruction of BB#20 when it should be killed by the newly created conditional branch in BB#14 (BEQ). Is this a bug in updateTerminator() or is the back-end responsible for updating LiveVariables?<br>

<br>
</div>This could be a new issue. Neither ARM nor x86 have conditional branches that take live register operands, so I don't think anyone has considered if the back-end should update LiveVariables. It simply hasn't come up before.<br>

<br>
I think the target should call LV->replaceKillInstruction() when this happens.<br>
<font color="#888888"><br>
/jakob<br>
<br>
</font></blockquote></div><br>