This is the mail archive of the
mailing list for the GCC project.
middle-end/6600: i960 toolchain hits abort in c_readstr
- From: Jim Wilson <wilson at redhat dot com>
- To: gcc-gnats at gcc dot gnu dot org
- Date: Tue, 7 May 2002 17:28:42 -0400
- Subject: middle-end/6600: i960 toolchain hits abort in c_readstr
>Synopsis: i960 toolchain hits abort in c_readstr
>Arrival-Date: Tue May 07 14:36:00 PDT 2002
>Release: 3.2 20020426 (experimental)
System: Linux tonopah.toronto.redhat.com 2.4.9-31smp #1 SMP Tue Feb 26 06:55:00 EST 2002 i686 unknown
configured with: ../src/configure --target=i960-coff
If you have a program that calls strcpy/memcpy with a constant string
of 16 bytes or more, and you compile with optimization, then gcc aborts
in c_readstr in builtins.c.
The i960 toolchain has instructions to move 16 bytes (4 registers) at
a time. Constant strings get 16 byte alignment so that we can use
these instructions. strcpy/memcpy are trying to optimize calls with
a constant string as a parameter. Unfortunately, you can only put 8
bytes at a time in a CONST_DOUBLE, so c_readstr aborts when asked to
convert 16 bytes of string into a single RTL constant.
Compile gcc.c-torture/execute/20000703-1.c with -O for an i960-coff