Olivier Lecarme wrote ...
> /net/packages/GNU/gcc-2.95.2/gcc/p/rts/error.pas: In function
`Geterrormessage':
> /net/packages/GNU/gcc-2.95.2/gcc/p/rts/error.pas:365: Internal
compiler error in
> `copy_to_mode_reg', at gcc-2.95.2/gcc/explow.c:669
> In what direction should I try to understand what occurs, or to
repair
> it?
If you take a look at explow.c:669, you'll see the "offending" line.
I made the following changes and managed to compile gpc. Note that these
changes were properly not the right ways to fix the code. They were just
bypassing the real problems. Please use these changes with your own risk.
A) changes to explow.c
gcc-2.95.2/gcc> DIFF explow.c.orig explow.c
--- explow.c.orig Tue Feb 15 10:30:22 2000
+++ explow.c Tue Feb 15 13:28:02 2000
@@ -662,12 +662,14 @@
/* If not an operand, must be an address with PLUS and MULT so
do the computation. */
if (! general_operand (x, VOIDmode))
x = force_operand (x, temp);
+/*
if (GET_MODE (x) != mode && GET_MODE (x) != VOIDmode)
abort ();
+*/
if (x != temp)
emit_move_insn (temp, x);
return temp;
}
B) changes to expr.c
gcc-2.95.2/gcc> DIFF expr.c.orig expr.c
--- expr.c.orig Tue Feb 15 17:06:54 2000
+++ expr.c Tue Feb 15 17:09:31 2000
@@ -2587,12 +2587,14 @@
enum machine_mode mode = GET_MODE (x);
x = protect_from_queue (x, 1);
y = protect_from_queue (y, 0);
+/*
if (mode == BLKmode || (GET_MODE (y) != mode && GET_MODE (y) !=
VOIDmode))
abort ();
+*/
/* Never force constant_p_rtx to memory. */
if (GET_CODE (y) == CONSTANT_P_RTX)
;
else if (CONSTANT_P (y) && ! LEGITIMATE_CONSTANT_P (y))