<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:hans@chromium.org" title="Hans Wennborg <hans@chromium.org>"> <span class="fn">Hans Wennborg</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - -Oz miscompilation due to conditional tail calls and machine copy propagation"
   href="https://llvm.org/bugs/show_bug.cgi?id=31257">bug 31257</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>qcolombet@apple.com
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>FIXED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Summary</td>
           <td>-Oz miscompilation?
           </td>
           <td>-Oz miscompilation due to conditional tail calls and machine copy propagation
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - -Oz miscompilation due to conditional tail calls and machine copy propagation"
   href="https://llvm.org/bugs/show_bug.cgi?id=31257#c8">Comment # 8</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - -Oz miscompilation due to conditional tail calls and machine copy propagation"
   href="https://llvm.org/bugs/show_bug.cgi?id=31257">bug 31257</a>
              from <span class="vcard"><a class="email" href="mailto:hans@chromium.org" title="Hans Wennborg <hans@chromium.org>"> <span class="fn">Hans Wennborg</span></a>
</span></b>
        <pre>I have reverted the conditional tail call functionality until we figure out how
to solve this properly: r294348

I'll merge that to 4.0 once it's baked for a bit.



Quentin: Me and Michael discussed this a little on
<a href="https://reviews.llvm.org/D29511">https://reviews.llvm.org/D29511</a>. The problem is how to model conditional tail
calls.

Currently, they are modeled as a regular tail call (isCall and isReturn, etc.)
and also as a branch (isBranch).

The problem is that treating them as a call can imply that they clobber
caller-saved registers. But they only do that if their condition is true.

So perhaps they should not be modelled as calls, but just returns.

And if we do that, why should regular tail calls be modelled as calls? They're
more like special returns anyway.

Does this sound reasonable to you? Could there be any unintended consequences?</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>