<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>