<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:vtjnash@gmail.com" title="vtjnash@gmail.com">vtjnash@gmail.com</a>
</span> changed
              <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - machine copy propagation kills ABI-related copies on win64 (atom?)"
   href="https://llvm.org/bugs/show_bug.cgi?id=21743">bug 21743</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>RESOLVED
           </td>
           <td>REOPENED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>WORKSFORME
           </td>
           <td>---
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - machine copy propagation kills ABI-related copies on win64 (atom?)"
   href="https://llvm.org/bugs/show_bug.cgi?id=21743#c7">Comment # 7</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - machine copy propagation kills ABI-related copies on win64 (atom?)"
   href="https://llvm.org/bugs/show_bug.cgi?id=21743">bug 21743</a>
              from <span class="vcard"><a class="email" href="mailto:vtjnash@gmail.com" title="vtjnash@gmail.com">vtjnash@gmail.com</a>
</span></b>
        <pre>Alright, someone found a new test case for this one. (reproducible on llvm3.5
through svn commit r234975+)

The full (runnable) example is captured at
<a href="https://gist.github.com/vtjnash/80a2aa73f04e33ec13b2">https://gist.github.com/vtjnash/80a2aa73f04e33ec13b2</a>

In particular, we are interested in the following lines:
    callq   *%rax
    vmovapd %xmm0, %xmm6
    vxorps  %xmm0, %xmm0, %xmm0
    vcvtsi2sdq  %rsi, %xmm0, %xmm7
    movl    $339772768, %eax        # imm = 0x14408560
                                        # kill: XMM0<def> XMM6<kill>
    vmovaps %xmm7, %xmm1
    callq   *%rax

Per the win64 calling convention, the argument value got returned in xmm0, and
should be passed to the next function, still in xmm0. However, we see that this
value is getting listed in the 'kill' comment (after getting zero'd by the
vxorps instruction, but before being used by the second function call)

Adding -disable-copyprop replaces the 'kill' comment with the missing `vmovapd
%xmm6, %xmm0` instruction (and makes no other changes to the output)</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>