This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/40277] New: Spill failures for VFP_REGS with scalar-return_5.c in the testsuite.
- From: "ramana at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 May 2009 23:18:44 -0000
- Subject: [Bug target/40277] New: Spill failures for VFP_REGS with scalar-return_5.c in the testsuite.
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
A number of tests in today's trunk fail with -mcpu=cortex-a8 -mfloat-abi=softfp
-mfpu=neon with spill failures for the following form of instructions.
/home/ramana/cos/combined-git-master-cloned/gcc/testsuite/gcc.c-torture/compile/20000804-1.c:20:
error: this is the insn:
(insn 53 29 30 2
/home/ramana/cos/combined-git-master-cloned/gcc/testsuite/gcc.c-torture/compile/20000804-1.c:16
(set (subreg:TI (reg:CDI 2 r2 [151]) 0)
(subreg:TI (reg:CDI 2 r2 [154]) 0)) 715 {*neon_movti}
(expr_list:REG_DEAD (reg:CDI 2 r2 [154])
(nil)))
/home/ramana/cos/combined-git-master-cloned/gcc/testsuite/gcc.dg/compat//scalar-return-3_x.c:
In function 'checkcll':
/home/ramana/cos/combined-git-master-cloned/gcc/testsuite/gcc.dg/compat//scalar-return-3_x.c:90:
error: unable to find a register to spill in class 'VFP_REGS'
/home/ramana/cos/combined-git-master-cloned/gcc/testsuite/gcc.dg/compat//scalar-return-3_x.c:90:
error: this is the insn:
(insn 4 3 5 2
/home/ramana/cos/combined-git-master-cloned/gcc/testsuite/gcc.dg/compat//scalar-return-3_x.c:90
(set (mem/s/c:TI (reg/f:SI 12 ip [141]) [0 x+0 S16 A64])
(subreg:TI (reg:CDI 0 r0 [ x ]) 0)) 718 {*neon_movti}
(expr_list:REG_DEAD (reg/f:SI 12 ip [141])
(nil)))
This occurs today on arm-none-eabi cross with r147930 and a related fix might
be http://gcc.gnu.org/ml/gcc-patches/2008-07/msg00703.html for one of the test
failures (20000804-1.c) .
I am testing the following patch based on Paul Brook's comments later in that
thread which might fix the problem
(http://gcc.gnu.org/ml/gcc-patches/2008-07/msg01618.html)
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -14746,7 +14746,7 @@ arm_hard_regno_mode_ok (unsigned int regno, enum
machine_mode mode)
they would use too many. */
if (regno <= LAST_ARM_REGNUM)
return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0)
- && !VALID_NEON_STRUCT_MODE (mode);
+ && (ARM_NUM_REGS (mode) <= 4);
if (regno == FRAME_POINTER_REGNUM
|| regno == ARG_POINTER_REGNUM)
--
Summary: Spill failures for VFP_REGS with scalar-return_5.c in
the testsuite.
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ramana at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: arm-none-eabi
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40277