Redundant instructions when calling procedure with float parameters
Original Reporter info from Mantis: Lord Horazont
-
Reporter name: Jonas Schäfer
Original Reporter info from Mantis: Lord Horazont
- Reporter name: Jonas Schäfer
Description:
Hi
while analyzing the calling conventions of 64-bit I stumbled upon something weird fpc produces 1. Sample project attached. Am I wrong or are the movsd %xmmX,%xmmX instructions not neccessary? This occurs with and without optimizations.
greetings
Additional information:
== disasm.s snippet ==
# [49] ProcFStd(0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80);
movsd _DISASM
_Ld1,%xmm7
movsd _DISASM
_Ld2,%xmm6
movsd _DISASM
_Ld3,%xmm5
movsd _DISASM
_Ld4,%xmm4
movsd _DISASM
_Ld5,%xmm3
movsd _DISASM
_Ld6,%xmm2
movsd _DISASM
_Ld7,%xmm1
movsd _DISASM
_Ld8,%xmm0
movsd %xmm7,%xmm7
movsd %xmm6,%xmm6
movsd %xmm5,%xmm5
movsd %xmm4,%xmm4
movsd %xmm3,%xmm3
movsd %xmm2,%xmm2
movsd %xmm1,%xmm1
movsd %xmm0,%xmm0
call PDISASM_PROCFSTD
DOUBLEDOUBLE
DOUBLEDOUBLE
DOUBLEDOUBLE
DOUBLE$DOUBLE
== /snippet ==
Mantis conversion info:
- Mantis ID: 14067
- OS: linux
- OS Build: fedora 11
- Platform: x86_64
- Version: 2.2.4
- Fixed in version: 2.4.0
- Fixed in revision: 13410 (#34c985cf)
- Monitored by: » luizamerico (Luiz Americo)