<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Aug 23, 2016, at 1:38 PM, Tyler Kenney <<a href="mailto:tjkenney@us.ibm.com" class="">tjkenney@us.ibm.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="socmaildefaultfont" dir="ltr" style="font-family:Arial;font-size:10.5pt"><div dir="ltr" style="font-family:Arial;font-size:10.5pt" class=""><div dir="ltr" class="">Matthias,</div>
<div dir="ltr" class=""> </div>
<div dir="ltr" class="">Thanks for the response.</div>
<div dir="ltr" class=""> </div>
<div dir="ltr" class="">In short, I'm using physregs because my current design, in some cases, needs to create an entirely new var/reg during instruction legalization. This value can be passed from one basic block to another and, therefore, must be added as a live-in to a number of basic blocks. I was unable to find a way to add a virt reg as a live-in to an MBB, thus the need for physregs. I asked about adding new inputs & outputs to basic blocks during instruction legalization/selection earlier on:</div>
<div dir="ltr" class=""> </div>
<div dir="ltr" class=""><a href="http://lists.llvm.org/pipermail/llvm-dev/2016-June/100387.html" class="">http://lists.llvm.org/pipermail/llvm-dev/2016-June/100387.html</a></div>
<div dir="ltr" class=""> </div>
<div dir="ltr" class="">Tim Northover responded with some useful insight but I did not really get a direct answer to my question on how to add MBB inputs (or if it's possible). The solution that I developed myself is to use virtual registers within MBBs and build CopyFrom/ToReg nodes at the BB boundaries with a physreg number, then add this physreg as a live-in where appropriate. This has been working for a few weeks now and, until I discovered this new issue where my live-in is ignored, had no known issues.</div>
<div dir="ltr" class=""> </div>
<div dir="ltr" class="">So, to answer your question, what stops me from copying the physreg to a virtual register after the last def (and also stops me from avoiding pre-RA physregs entirely) is that I do not know how to add a virt reg live-in (and ensure the proper phi nodes get updated/created).</div>
<div dir="ltr" class=""> </div>
<div dir="ltr" class="">If it's assumed that allocatable (and unreserved) PhysRegs are only live within a basic block, why is it possible to add such a physreg as an MBB live-in? Should there be an assertion added to MachineBasicBlock::addLiveIn() ?</div>
</div></div></div></blockquote><div>You should not need to worry about live-ins, they are only assumed to complete after register allocation. The only exception to this rule is the exception value on the edge to a landing part being marked as live-in and the per-function live-ins for arguments, but you should not need to worry about those two cases.</div><div><br class=""></div><div>- Matthias</div><div><br class=""></div><div><br class=""></div></div></body></html>