<html>
<head>
<base href="http://llvm.org/bugs/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - Win64 savexmm unwind opcodes are at the wrong offset in the wrong order"
href="http://llvm.org/bugs/show_bug.cgi?id=22521">22521</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Win64 savexmm unwind opcodes are at the wrong offset in the wrong order
</td>
</tr>
<tr>
<th>Product</th>
<td>libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Windows NT
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Backend: X86
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>rnk@google.com
</td>
</tr>
<tr>
<th>CC</th>
<td>david.majnemer@gmail.com, llvmbugs@cs.uiuc.edu
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr></table>
<p>
<div>
<pre>$ cat t.c
void g();
double f(double a, double b) {
g();
return a + b;
}
$ clang -m64 -O2 -S t.c -o - | grep 'xmm\|seh'
.seh_proc f
.seh_stackalloc 72
movaps %xmm7, 48(%rsp) # 16-byte Spill
movaps %xmm6, 32(%rsp) # 16-byte Spill
.seh_savexmm 6, 32
.seh_savexmm 7, 48
.seh_endprologue
...
The placement of the assembler directive is recorded as an offset in the object
file and we should try to get it right so that users can unwind properly from
between XMM saves.</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>