<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>Hi Ghassan,<br>
</p>
<blockquote type="cite"
cite="mid:MWHPR04MB09455C555208ACFB159BE0918C690@MWHPR04MB0945.namprd04.prod.outlook.com">
<div id="divtagdefaultwrapper"
style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;"
dir="ltr">
<p>As for live-through information, we found that the machine
scheduler does call initLiveThru() and here is a pointer to
the code:</p>
<p><br>
</p>
<p><font style="font-family:
Calibri,Helvetica,sans-serif,serif,"EmojiFont";"
color="black" face="Calibri,Helvetica,sans-serif" size="3"><span
style="font-size:12pt;" id="divtagdefaultwrapper"></span></font></p>
<font style="font-family:
Calibri,Helvetica,sans-serif,serif,"EmojiFont";"
color="black" face="Calibri,Helvetica,sans-serif" size="3">
<div style="margin-top:0;margin-bottom:0;"><a
href="https://gitlab.com/CSUS_LLVM/LLVM_DRAGONEGG/blob/master/Generic/llvmTip/llvm-master/lib/CodeGen/MachineScheduler.cpp#L921"
target="_blank" rel="noopener noreferrer" id="LPlnk344791"
previewremoved="true" moz-do-not-send="true"><span
id="LPlnk344791">https://gitlab.com/CSUS_LLVM/LLVM_DRAGONEGG/blob/master/Generic/llvmTip/llvm-master/lib/CodeGen/MachineScheduler.cpp#L921</span></a></div>
<div style="margin-top:0;margin-bottom:0;"><br>
</div>
</font></div>
</blockquote>
<font size="3"><font face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif">The fir<font
face="Calibri,Helvetica,sans-serif">st part of
the comment <font
face="Calibri,Helvetica,sans-serif">above
initLiveThru() says "The register tracker is
unaware of global liveness so ignores normal<font
face="Calibri,Helvetica,sans-serif"> </font>live-thru
ranges.</font></font></font>.."<font
face="Calibri,Helvetica,sans-serif">. It is then
of course confusing to see the<font
face="Calibri,Helvetica,sans-serif">se methods
like initLiveThru()...<br>
<br>
</font><font face="Calibri,Helvetica,sans-serif">My
understanding is that (please correct me if I'm
wrong)<br>
<font face="Calibri,Helvetica,sans-serif">1. All
instructions are traversed bottom<font
face="Calibri,Helvetica,sans-serif">-up
during DAG building. <font
face="Calibri,Helvetica,sans-serif">While
doing this <font
face="Calibri,Helvetica,sans-serif">re<font
face="Calibri,Helvetica,sans-serif">g
pressure is <font
face="Calibri,Helvetica,sans-serif">tracked</font>
based on <font
face="Calibri,Helvetica,sans-serif">just
looking at </font>those
instructions. So if a def has no use
in an mbb it is a "live-out" reg, and
if there is a use with no def, it
would become "live-in"<font
face="Calibri,Helvetica,sans-serif">.
This </font>is then a kind of local
live-through concept, in co<font
face="Calibri,Helvetica,sans-serif">ntrast
to a true live-through analysis<font
face="Calibri,Helvetica,sans-serif"> which would be aware o<font
face="Calibri,Helvetica,sans-serif">f
registers not used/defed in the
region as well.</font></font></font><br>
</font></font></font></font></font></font></font>2.
We should ideally have an analysis <font
face="Calibri,Helvetica,sans-serif"><font
face="Calibri,Helvetica,sans-serif">of global li<font
face="Calibri,Helvetica,sans-serif">veness </font></font>so
that t<font face="Calibri,Helvetica,sans-serif">h<font
face="Calibri,Helvetica,sans-serif">e
regpressure trackers could be properly
initialized, but this is currently missing. Of
course, one might hope that<font
face="Calibri,Helvetica,sans-serif"> it
wouldn't be too hard to extend LiveInter<font
face="Calibri,Helvetica,sans-serif">vals
to also provide this information...</font></font>
It <font face="Calibri,Helvetica,sans-serif">would
be interesting to merely try this and see
how valuable it <font
face="Calibri,Helvetica,sans-serif">wou<font
face="Calibri,Helvetica,sans-serif">ld</font></font>
<font face="Calibri,Helvetica,sans-serif">be...<br>
<br>
<font face="Calibri,Helvetica,sans-serif">/Jonas</font><br>
</font></font><br>
</font></font></font></font></font></font></font></font></font></font></font><br>
</body>
</html>