<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 8, 2012, at 8:11 AM, Ivan Llopard <<a href="mailto:ivanllopard@gmail.com">ivanllopard@gmail.com</a>> wrote:</div><div><br></div><div><blockquote type="cite"><span style="background-color: rgb(255, 255, 255); ">Adding instructions into a bundle strongly depends on the target and may be a quite complex task, sometimes too complex to be done at allocation time if allocation speed is an issue.</span></blockquote><br></div><div>Yes, we won't be adding instructions to bundles during RA. RA is already inserting copies and spill code as free-standing instructions between bundles. The target can add a post-RA bundling pass to mop up all that stuff if required.</div><div><br></div><blockquote type="cite"><div bgcolor="#FFFFFF" text="#000000"><blockquote cite="mid:03e301cd44dd$35f8ee60$a1eacb20$@org" type="cite"><div class="WordSection1"><div style="border-width: medium medium medium 1.5pt; border-style: none none none solid; padding: 0in 0in 0in 4pt; position: static; z-index: auto; "><p class="MsoNormal"><b><i><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">[Larin,
Sergei] At this point you need to update liveness on
bundle level, and then update global picture.
Updating liveness on bundle level also might need
help from the back end. See the above example with
.new, and you can easily imagine local defs/kills
inside a bundle that should not even be visible
outside the black box. As of now I consider this
mechanism somewhat broken on trunk (it is overly
pessimistic)… but API in this case is rather
straightforward.</span></i></b></p></div></div></blockquote>
I thought internals def/use were already modelled, is it right ?<br></div></blockquote><div><br></div><div>Yes. MO.isInternalRead() models exactly that.</div><div><br></div><blockquote type="cite"><div bgcolor="#FFFFFF" text="#000000"><blockquote cite="mid:03e301cd44dd$35f8ee60$a1eacb20$@org" type="cite"><div class="WordSection1"><div style="border-width: medium medium medium 1.5pt; border-style: none none none solid; padding: 0in 0in 0in 4pt; position: static; z-index: auto; "><div><p class="MsoNormal">4. Shrink original live range. The
original live range may be smaller after some uses have
been rematerialized. This may discover dead defs if there
are no remaining uses. </p></div>
</div>
</div>
</blockquote>
<br>
IMHO, as long as internal defs/uses are taken into account, I don't
see any particular problem.<br></div></blockquote><div><br></div><div>It is easy to recognize that a virtual register has no uses outside the bundle, but we need help from the target to determine if that means some instructions are dead and can be deleted, and if so, which instructions to delete.</div><div><br></div><div>Target-independent code should never be deleting instructions from inside bundles without the target's say so.</div><div><br></div>It is not enough to check for internal uses. There could be other reasons to keep an instruction in a bundle.</div><div><br></div><div>/jakob</div><div><br></div></body></html>