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