aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2010-03-31 10:41:28 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-03-31 10:41:28 +0200
commitd8d55ac02edfc9adb80051aeb98f6434f1272927 (patch)
treefeb385d3f27fcde421b0618bf5613bf9fa9b16f0
parent132b4e82958efd279b88e7e1ef5bce1c28b5a326 (diff)
downloadgcc-d8d55ac02edfc9adb80051aeb98f6434f1272927.zip
gcc-d8d55ac02edfc9adb80051aeb98f6434f1272927.tar.gz
gcc-d8d55ac02edfc9adb80051aeb98f6434f1272927.tar.bz2
re PR target/43580 (ICE segfault compiling libgcc2.c)
PR target/43580 * config/arm/arm.c (arm_save_coproc_regs): Use Pmode instead of V2SImode or XFmode on PRE_DEC. From-SVN: r157853
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/arm/arm.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 44cc91a..07eb353 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2010-03-31 Jakub Jelinek <jakub@redhat.com>
+ PR target/43580
+ * config/arm/arm.c (arm_save_coproc_regs): Use Pmode instead of
+ V2SImode or XFmode on PRE_DEC.
+
PR debug/43557
* cfgexpand.c (expand_debug_expr): Handle VOIDmode mode like
BLKmode.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 6f42dd0..8a6f39bd 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -1,6 +1,6 @@
/* Output routines for GCC for ARM.
Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
and Martin Simmons (@harleqn.co.uk).
@@ -14431,7 +14431,7 @@ arm_save_coproc_regs(void)
for (reg = LAST_IWMMXT_REGNUM; reg >= FIRST_IWMMXT_REGNUM; reg--)
if (df_regs_ever_live_p (reg) && ! call_used_regs[reg])
{
- insn = gen_rtx_PRE_DEC (V2SImode, stack_pointer_rtx);
+ insn = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx);
insn = gen_rtx_MEM (V2SImode, insn);
insn = emit_set_insn (insn, gen_rtx_REG (V2SImode, reg));
RTX_FRAME_RELATED_P (insn) = 1;
@@ -14445,7 +14445,7 @@ arm_save_coproc_regs(void)
for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--)
if (df_regs_ever_live_p (reg) && !call_used_regs[reg])
{
- insn = gen_rtx_PRE_DEC (XFmode, stack_pointer_rtx);
+ insn = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx);
insn = gen_rtx_MEM (XFmode, insn);
insn = emit_set_insn (insn, gen_rtx_REG (XFmode, reg));
RTX_FRAME_RELATED_P (insn) = 1;