This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/24823] [4.1/4.2 Regression] ICE in insert_save, at caller-save.c:719
- From: "krebbel at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 21 Nov 2005 09:29:08 -0000
- Subject: [Bug rtl-optimization/24823] [4.1/4.2 Regression] ICE in insert_save, at caller-save.c:719
- References: <bug-24823-10053@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #11 from krebbel at gcc dot gnu dot org 2005-11-21 09:29 -------
Ok, knowing that this may only happen if the return value
of a function has a complex type a trivial fix could look
like this:
Index: gcc/flow.c
===================================================================
*** gcc/flow.c.orig 2005-11-15 14:21:23.000000000 +0100
--- gcc/flow.c 2005-11-21 09:34:05.000000000 +0100
*************** mark_used_regs (struct propagate_block_i
*** 4020,4026 ****
recursively scan the value being stored. */
if ((GET_CODE (testreg) == PARALLEL
! && GET_MODE (testreg) == BLKmode)
|| (REG_P (testreg)
&& (regno = REGNO (testreg),
! (regno == FRAME_POINTER_REGNUM
--- 4020,4027 ----
recursively scan the value being stored. */
if ((GET_CODE (testreg) == PARALLEL
! && (GET_MODE (testreg) == BLKmode
! || COMPLEX_MODE_P (GET_MODE (testreg))))
|| (REG_P (testreg)
&& (regno = REGNO (testreg),
! (regno == FRAME_POINTER_REGNUM
This fixes the problem for my x86_64 crosscompiler but certainly
needs further testing. Could somebody with an Intel 64bit system
try to bootstrap this? Bootstraps on s390 wouldn't help here because
we do not return complex types that way.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24823