<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/106213>106213</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[M68k] function epilogue pops stack too far
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
TechnoElf
</td>
</tr>
</table>
<pre>
The generated epilogue for functions that return structs adds 4 to the stack pointer despite there being no corresponding subtraction in the prologue.
A minimal example for this issue would be
```
define internal void @test(ptr sret([10 x i8]) align 2 %_0) unnamed_addr #1 {
start:
ret void
}
```
which produces the following code (using `llc -O0 -march=m68k`):
```
.p2align 1 ; -- Begin function test
.type test,@function
test: ; @test
.cfi_startproc
; %bb.0: ; %start
move.l (4,%sp), %d0
move.l (%sp), %a1
adda.l #4, %sp
move.l %a1, (%sp)
rts
.Lfunc_end2:
.size test, .Lfunc_end2-test
.cfi_endproc
; -- End function
.section ".note.GNU-stack","",@progbits
```
The same issue occurs with longer functions that do actually use the stack.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VE2TozgM_TXmogoFAgI5cOhMJnvZj8vsucvYCnjH2JRtOtP767cMpJPs9FApAuZJ7-nZEvde9YaoZdWRVaeEz2Gwrv1GYjD2q74knZXv7beBoCdDjgeSQJPStp8JLtbBZTYiKGs8hIEHcBRmZ8AHN4vggUvpoYRgIQwEPnDxHSarTCAHkvykAsUvjqAjZXowFoR1jvxkjYwLfu6C4wsDKLNkmZxd6FOWnVj2st5fYFRGjVwD_eDjpFdxYVAelPczwdXOWkJHj0Fsn22_5VXSRRmCRZ3hGt6sksDKLJAPDJspOPCO4iOrjnkGP0A1rDoxPADXqjeAwLB6zeLCbAwfSb5yKR0wLHJg9XGl8YG7wIpNA0TLFqpNU336VNx6vw5KDNEBOQvyix0Xq7W9Rq-ElQQMm9nHN7bPtBaw-yuD3cidGFhxGvfN95gRDx_8n5LBdqUTrpVtVw6sOMJuB0fqlfnYe1gceo4M7xMBrF_wCyuzG3jFLevFy5LvZvFzAnFRr4tVk7NiUxnBWHVdmn3EYrX6-RQ82jdKNUQzysiOlZ9i0fglBshblQ-w_0F4_pyQS8lXZFFuED_9ijNGL5h71iekC35dSH-PprySkfhwHrb6vfr3wUB4wO5-4RYZeffqtlNfjYRn6-8MtO4eQ0yNDZT-9uffu6VHGeJiG24PZTY523fqJvzTsxmHhOcjbQ1nhZidh6sKA2hrevppVkgLXISZa_0Os6f7iEgT2RbyUBx4Qm1eY1nv86w-JEOLTVeXB9qXAlFcmj2v6q7JO6wbXuzrTiSqxQzLrME6x7yuDmlRNBw7UdSZ5HWDNSszGrnSqdZvY2pdnyxy2zzbY14kmnek_TINEQ1d12KiDdUpcW0M2nVz71mZaeWDv6cJKuhljP4Rm6w63bvjY15OdvLbEAzWwoW7ZHa6HUKYfDwAeGZ47lUY5i4VdmR4jtm3v93k7D8kAsPzoskzPG-i31r8LwAA___6o7SL">