This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
yet another ppc constant_p fix [Re: glibc fclose prob?]
- To: Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>
- Subject: yet another ppc constant_p fix [Re: glibc fclose prob?]
- From: Richard Henderson <rth at cygnus dot com>
- Date: Mon, 25 Jan 1999 22:22:33 -0800
- Cc: egcs-patches at cygnus dot com, dje at watson dot ibm dot com
- References: <19990125211356.Postino-026589@smtp01.highway.ne.jp> <19990125211356.Postino-026589@smtp01.highway.ne.jp> <19990125095039.C21686@rjlhome.dgii.com> <4.1.19990125170304.042875f0@mail.lauterbach.com>
- Reply-To: Richard Henderson <rth at cygnus dot com>
On Mon, Jan 25, 1999 at 05:11:58PM +0100, Franz Sirl wrote:
> ../../../egcsm/gcc/varasm.c:3265: Internal compiler error in function
> decode_rtx_const
Bother. I'd only tested the 21 Jan patch without -fpic. :-P
r~
* rs6000.c (input_operand): Don't expect CONST around CONSTANT_P_RTX.
* rs6000.md (movsi, movdi): Likewise.
Index: rs6000.c
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.60
diff -c -p -d -r1.60 rs6000.c
*** rs6000.c 1999/01/22 09:30:01 1.60
--- rs6000.c 1999/01/26 06:16:16
*************** input_operand (op, mode)
*** 1132,1138 ****
return 1;
/* Only a tiny bit of handling for CONSTANT_P_RTX is necessary. */
! if (GET_CODE (op) == CONST && GET_CODE (XEXP (op, 0)) == CONSTANT_P_RTX)
return 1;
/* For floating-point, easy constants are valid. */
--- 1132,1138 ----
return 1;
/* Only a tiny bit of handling for CONSTANT_P_RTX is necessary. */
! if (GET_CODE (op) == CONSTANT_P_RTX)
return 1;
/* For floating-point, easy constants are valid. */
Index: rs6000.md
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/config/rs6000/rs6000.md,v
retrieving revision 1.41
diff -c -p -d -r1.41 rs6000.md
*** rs6000.md 1999/01/24 17:20:07 1.41
--- rs6000.md 1999/01/26 06:16:16
***************
*** 8242,8249 ****
operands[1] = GEN_INT (CONST_DOUBLE_LOW (operands[1]));
/* Only a tiny bit of handling for CONSTANT_P_RTX is necessary. */
! if (GET_CODE (operands[1]) == CONST
! && GET_CODE (XEXP (operands[1], 0)) == CONSTANT_P_RTX)
{
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1]));
DONE;
--- 8242,8248 ----
operands[1] = GEN_INT (CONST_DOUBLE_LOW (operands[1]));
/* Only a tiny bit of handling for CONSTANT_P_RTX is necessary. */
! if (GET_CODE (operands[1]) == CONSTANT_P_RTX)
{
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1]));
DONE;
***************
*** 8888,8895 ****
operands[1] = GEN_INT (CONST_DOUBLE_LOW (operands[1]));
/* Only a tiny bit of handling for CONSTANT_P_RTX is necessary. */
! if (GET_CODE (operands[1]) == CONST
! && GET_CODE (XEXP (operands[1], 0)) == CONSTANT_P_RTX)
{
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1]));
DONE;
--- 8887,8893 ----
operands[1] = GEN_INT (CONST_DOUBLE_LOW (operands[1]));
/* Only a tiny bit of handling for CONSTANT_P_RTX is necessary. */
! if (GET_CODE (operands[1]) == CONSTANT_P_RTX)
{
emit_insn (gen_rtx_SET (VOIDmode, operands[0], operands[1]));
DONE;