This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

middle-end/6600: i960 toolchain hits abort in c_readstr

>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
>Release:        3.2 20020426 (experimental)
Red Hat
System: Linux 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
	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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]