This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: egcs 1.0 internal error on hppa1.1-rtems
- To: Joel Sherrill <joel at OARcorp dot com>
- Subject: Re: egcs 1.0 internal error on hppa1.1-rtems
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Sun, 21 Dec 1997 21:56:33 -0700
- cc: egcs at cygnus dot com
- Reply-To: law at cygnus dot com
In message <Pine.BSF.3.96.971220121439.2016H-100000@vespucci.advicom.net>you write:
> Compiling the public domain floating point test paranoia.c, the compiler
> generated the following internal error:
>
> p.c: In function `paranoia':
> p.c:1947: internal error--unrecognizable insn:
> (insn 32469 32012 32009 (set (reg:SI 22 %r22)
> (symbol_ref:SI ("@__floatsidf"))) -1 (nil)
> (expr_list:REG_EQUAL (symbol_ref:SI ("@__floatsidf"))
> (nil)))
> hppa1.1-rtems-gcc: Internal compiler error: program cc1 got fatal signal 6
Thanks.
Index: pa.c
===================================================================
RCS file: /cvs/cvsfiles/egcs/gcc/config/pa/pa.c,v
retrieving revision 1.7
diff -c -3 -p -r1.7 pa.c
*** pa.c 1997/10/16 03:37:27 1.7
--- pa.c 1997/12/22 04:42:32
*************** emit_move_sequence (operands, mode, scra
*** 1244,1251 ****
}
}
! /* Simplify the source if we need to. */
if ((GET_CODE (operand1) != HIGH && immediate_operand (operand1, mode))
|| (GET_CODE (operand1) == HIGH
&& symbolic_operand (XEXP (operand1, 0), mode)))
{
--- 1244,1255 ----
}
}
! /* Simplify the source if we need to.
! Note we do have to handle function labels here, even though we do
! not consider them legitimate constants. Loop optimizations can
! call the emit_move_xxx with one as a source. */
if ((GET_CODE (operand1) != HIGH && immediate_operand (operand1, mode))
+ || function_label_operand (operand1, mode)
|| (GET_CODE (operand1) == HIGH
&& symbolic_operand (XEXP (operand1, 0), mode)))
{
*************** emit_move_sequence (operands, mode, scra
*** 1263,1271 ****
So we force the plabel into memory, load operand0 from
the memory location, then add in the constant part. */
! if (GET_CODE (operand1) == CONST
! && GET_CODE (XEXP (operand1, 0)) == PLUS
! && function_label_operand (XEXP (XEXP (operand1, 0), 0), Pmode))
{
rtx temp, const_part;
--- 1267,1276 ----
So we force the plabel into memory, load operand0 from
the memory location, then add in the constant part. */
! if ((GET_CODE (operand1) == CONST
! && GET_CODE (XEXP (operand1, 0)) == PLUS
! && function_label_operand (XEXP (XEXP (operand1, 0), 0), Pmode))
! || function_label_operand (operand1, mode))
{
rtx temp, const_part;
*************** emit_move_sequence (operands, mode, scra
*** 1275,1288 ****
else if (flag_pic)
scratch_reg = gen_reg_rtx (Pmode);
! /* Save away the constant part of the expression. */
! const_part = XEXP (XEXP (operand1, 0), 1);
! if (GET_CODE (const_part) != CONST_INT)
! abort ();
- /* Force the function label into memory. */
- temp = force_const_mem (mode, XEXP (XEXP (operand1, 0), 0));
-
/* Get the address of the memory location. PIC-ify it if
necessary. */
temp = XEXP (temp, 0);
--- 1280,1305 ----
else if (flag_pic)
scratch_reg = gen_reg_rtx (Pmode);
! if (GET_CODE (operand1) == CONST)
! {
! /* Save away the constant part of the expression. */
! const_part = XEXP (XEXP (operand1, 0), 1);
! if (GET_CODE (const_part) != CONST_INT)
! abort ();
!
! /* Force the function label into memory. */
! temp = force_const_mem (mode, XEXP (XEXP (operand1, 0), 0));
! }
! else
! {
! /* No constant part. */
! const_part = NULL_RTX;
!
! /* Force the function label into memory. */
! temp = force_const_mem (mode, operand1);
! }
!
/* Get the address of the memory location. PIC-ify it if
necessary. */
temp = XEXP (temp, 0);
*************** emit_move_sequence (operands, mode, scra
*** 1300,1306 ****
emit_move_sequence (operands, mode, scratch_reg);
/* And add back in the constant part. */
! expand_inc (operand0, const_part);
return 1;
}
--- 1317,1324 ----
emit_move_sequence (operands, mode, scratch_reg);
/* And add back in the constant part. */
! if (const_part != NULL_RTX)
! expand_inc (operand0, const_part);
return 1;
}