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