This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/45198] New: Unnecessary spill slot for highpart extraction of xmm reg
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 5 Aug 2010 15:02:54 -0000
- Subject: [Bug target/45198] New: Unnecessary spill slot for highpart extraction of xmm reg
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
When building g++.dg/torture/pr36445.C at -O2 you can see
call _Z5func2v
movaps %xmm0, (%rsp)
movq (%rsp), %rdx
movq 8(%rsp), %rax
movq %rdx, 16(%rsp)
movl %eax, 24(%rsp)
where the stack-slot spills are caused by
(insn 26 5 27 2 (set (reg:V4SF 72)
(reg:V4SF 21 xmm0))
/space/rguenther/src/svn/trunk/gcc/testsuite/g++.dg/torture/pr36445.C:20 1054
{*movv4sf_internal}
(nil))
(insn 27 26 28 2 (set (reg:DI 70 [ D.2130 ])
(subreg:DI (reg:V4SF 72) 0))
/space/rguenther/src/svn/trunk/gcc/testsuite/g++.dg/torture/pr36445.C:20 61
{*movdi_internal_rex64}
(nil))
(insn 28 27 24 2 (set (reg:DI 71 [ D.2130+8 ])
(subreg:DI (reg:V4SF 72) 8))
/space/rguenther/src/svn/trunk/gcc/testsuite/g++.dg/torture/pr36445.C:20 61
{*movdi_internal_rex64}
(nil))
where we are unable to verify the constraints for insn 28 because there
is no move pattern that would special case hipart extraction (which
could use movhps).
--
Summary: Unnecessary spill slot for highpart extraction of xmm
reg
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org
GCC target triplet: x86-64-*-*
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45198