middle-end/6600: i960 toolchain hits abort in c_readstr
Jim Wilson
wilson@redhat.com
Tue May 7 14:36:00 GMT 2002
>Number: 6600
>Category: middle-end
>Synopsis: i960 toolchain hits abort in c_readstr
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Tue May 07 14:36:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:
>Release: 3.2 20020426 (experimental)
>Organization:
Red Hat
>Environment:
System: Linux tonopah.toronto.redhat.com 2.4.9-31smp #1 SMP Tue Feb 26 06:55:00 EST 2002 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i960-unknown-coff
configured with: ../src/configure --target=i960-coff
>Description:
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.
>How-To-Repeat:
Compile gcc.c-torture/execute/20000703-1.c with -O for an i960-coff
target.
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list