This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Patch to fix simplify_subreg ICE - try this again
- From: Alan Matsuoka <alanm at cygnus dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 11 Dec 2001 20:40:39 -0500
- Subject: Patch to fix simplify_subreg ICE - try this again
- Organization: Red Hat Canada
This is a patch to trap cases like the d10v that causes simplify_subreg
to ICE.
(ne:CC_REV (reg:CC_REV 35 f0)
(const_int 0 [0x0]))
Bootstrapped and tested without any regressions on ppc, i686 without
any regressions.
2001-11-30 Alan Matsuoka <alanm@redhat.com>
* combine.c (combine_simplify_rtx) : Can't simplify
cases that use mode class MODE_CC.
Index: combine.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/combine.c,v
retrieving revision 1.265
diff -d -c -p -r1.265 combine.c
*** combine.c 2001/11/26 01:11:57 1.265
--- combine.c 2001/12/11 22:48:33
*************** combine_simplify_rtx (x, op0_mode, last,
*** 3788,3801 ****
break;
case SUBREG:
! if (op0_mode == VOIDmode)
op0_mode = GET_MODE (SUBREG_REG (x));
/* simplify_subreg can't use gen_lowpart_for_combine. */
if (CONSTANT_P (SUBREG_REG (x))
&& subreg_lowpart_offset (mode, op0_mode) == SUBREG_BYTE (x))
return gen_lowpart_for_combine (mode, SUBREG_REG (x));
!
{
rtx temp;
temp = simplify_subreg (mode, SUBREG_REG (x), op0_mode,
--- 3788,3803 ----
break;
case SUBREG:
! if (op0_mode == VOIDmode)
op0_mode = GET_MODE (SUBREG_REG (x));
/* simplify_subreg can't use gen_lowpart_for_combine. */
if (CONSTANT_P (SUBREG_REG (x))
&& subreg_lowpart_offset (mode, op0_mode) == SUBREG_BYTE (x))
return gen_lowpart_for_combine (mode, SUBREG_REG (x));
!
! if (GET_MODE_CLASS (GET_MODE (SUBREG_REG (x))) == MODE_CC)
! break;
{
rtx temp;
temp = simplify_subreg (mode, SUBREG_REG (x), op0_mode,
Alan Matsuoka
GCC Engineering
Red Hat Canada, Ltd
mailto:alanm@redhat.com Tel: (416) 482-2661 x250 / Fax: (416) 482-6299