This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/13423] New: sh-elf: V4SFmode passed in integer registers
- From: "tm at kloo dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 18 Dec 2003 00:30:28 -0000
- Subject: [Bug c/13423] New: sh-elf: V4SFmode passed in integer registers
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
When this sample is compiled with -O2 -m4 -S:
typedef int v4sf __attribute__ ((mode(V4SF)));
v4sf test2 (v4sf a)
{
return a;
}
GCC assumes the floating-point vectors arrive in integer registers, which is
very silly. It should pass/expect them in floating-point registers.
test2:
mov.l r8,@-r15
mov r4,r0
mov.l r9,@-r15
mov r5,r1
mov.l r10,@-r15
mov r6,r2
mov.l r14,@-r15
sts.l pr,@-r15
add #-16,r15
mov r15,r14
mov.l r7,@(12,r14)
mov.l @(12,r14),r10
mov.l r4,@r14
mov.l r5,@(4,r14)
mov r10,r3
mov.l r6,@(8,r14)
add #16,r14
mov r14,r15
lds.l @r15+,pr
mov.l @r15+,r14
mov.l @r15+,r10
mov.l @r15+,r9
rts
mov.l @r15+,r8
--
Summary: sh-elf: V4SFmode passed in integer registers
Product: gcc
Version: 3.4
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tm at kloo dot net
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i386-linux
GCC host triplet: i386-linux
GCC target triplet: sh-elf
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13423