<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Hi Dan,<br>
<br>
Thank you for the reply.<br>
<br>
The underlying scheduling algorithm is correct - in this example.<br>
The problem is that <font color="#000000" face="Tahoma" size="2">PrescheduleNodesWithMultipleUses() is incorrectly transforming the schedule when callResource are in play.<br>
<br>
The callResourceDeadLockDanger() is there to prevent </font><font color="#000000" face="Tahoma" size="2"><font color="#000000" face="Tahoma" size="2">PrescheduleNodesWithMultipleUses() from making the transformation - hence keep the original schedule.<br>
Thus, at worst it will prevent a possible shortening of a register's live range - although I believe not.<br>
(There is also the additional processing requirment)<br>
<br>
I will re-post this to llvm-commit for further reviewing.<br>
<br>
Robert<br>
<br>
<br>
</font></font>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF852482"><font color="#000000" face="Tahoma" size="2"><b>From:</b> Dan Gohman [dan433584@gmail.com]<br>
<b>Sent:</b> 22 August 2013 18:37<br>
<b>To:</b> Robert Lytton<br>
<b>Cc:</b> llvmdev@cs.uiuc.edu; Bill Wendling<br>
<b>Subject:</b> Re: [LLVMdev] PrescheduleNodesWithMultipleUses() causing failure in PickNodeToScheduleBottomUp() ???<br>
</font><br>
</div>
<div></div>
<div>
<div dir="ltr">On Thu, Aug 22, 2013 at 4:15 AM, Robert Lytton <span dir="ltr"><<a href="mailto:robert@xmos.com" target="_blank">robert@xmos.com</a>></span> wrote:<br>
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div style="direction:ltr; font-size:10pt; font-family:Tahoma"><br>
<br>
Outstanding issues<br>
============<br>
<br>
1. Is it too aggressive in searching predecessors and successors?<br>
   Should the algorithm give up and assume the worst if the depth of search reaches a predefined limit?<br>
<br>
2. Should the initial search for 'SetUp1' and 'Destroy1' only search along chains? viz conditional upon II->isCtrl()<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>The code is a kludge to work around a particular symptom of a deeper bug in the underlying scheduling algorithm. It's entirely possible that you've found a real bug in it; feel free to check in the fix if you're confident it's right.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div style="direction:ltr; font-size:10pt; font-family:Tahoma">3. Is it possible to input a DAG for testing?<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Only by constructing an LLVM IR testcase and feeding it all the way through.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div style="direction:ltr; font-size:10pt; font-family:Tahoma">    What is the best way to construct the test case?<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>The above.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div style="direction:ltr; font-size:10pt; font-family:Tahoma">    Using an IR as input does not guarantee the required DAG will be output for testing.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Yes, it is quite unfortunate.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div style="direction:ltr; font-size:10pt; font-family:Tahoma"><br>
4. Where should the test be placed?<br>
    (How do I test for no-assert?)<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Just use an LLVM IR testcase which reproduces the problem before the fix is applied.</div>
<div><br>
</div>
<div>Dan</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>