middle-end/309: Unrecognizable insn during -Os bootstrap
zack@wolery.cu
zack@wolery.cu
Mon Jun 12 11:46:00 GMT 2000
>Number: 309
>Category: middle-end
>Synopsis: Unrecognizable insn during -Os bootstrap
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Mon Jun 12 11:46:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Zack Weinberg
>Release: 2.96
>Organization:
>Environment:
System: Linux wolery 2.2.16pre6 #1 Tue May 30 21:53:29 PDT 2000 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
GNU C version 2.96 20000611 (experimental) (i686-pc-linux)
compiled by GNU C version 2.96 20000611 (experimental).
>Description:
make bootstrap BOOT_CFLAGS="-g -Os"
...
../stage1/xgcc -B../stage1/ -B/work/inst/i686-pc-linux/bin/ -c -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -g -Os -W -Wall -I. -I.. -I/work/src/gcc/gcc/f -I/work/src/gcc/gcc/f/.. -I/work/src/gcc/gcc/f/../config -I/work/src/gcc/gcc/f/../../include /work/src/gcc/gcc/f/target.c
target.c: In function `ffetarget_convert_any_typeless_':
target.c:696: Unrecognizable insn:
(insn 388 386 391 (set (reg:SI 5 edi)
(plus:SI (reg:SI 5 edi)
(mem:SI (plus:SI (reg:SI 6 ebp)
(const_int -56 [0xffffffc8])) 0))) -1 (nil)
(expr_list:REG_EQUIV (plus:SI (mem/f:SI (plus:SI (reg:SI 6 ebp)
(const_int 8 [0x8])) 0)
(mem:SI (plus:SI (reg:SI 6 ebp)
(const_int -56 [0xffffffc8])) 0))
(nil)))
target.c:695: Internal compiler error in `extract_insn', at recog.c:2048
(gdb) bt
#0 fancy_abort (file=0x82ea7dc "recog.c", line=2048,
function=0x82eaaf0 "extract_insn") at rtl.c:1236
#1 0x804b599 in _fatal_insn (msgid=0x82c9356 "Unrecognizable insn:",
insn=0x4010d7c0, file=0x82ea7dc "recog.c", line=2048,
function=0x82eaaf0 "extract_insn") at diagnostic.c:1416
#2 0x804b5d0 in _fatal_insn_not_found (insn=0x4010d7c0,
file=0x82ea7dc "recog.c", line=2048,
function=0x82eaaf0 "extract_insn") at diagnostic.c:1427
#3 0x81bad17 in extract_insn (insn=0x4010d7c0)
at recog.c:2048
#4 0x81b650e in cleanup_subreg_operands (insn=0x4010d7c0)
at final.c:3092
#5 0x818ee69 in reload (first=0x401091e0, global=1, dumpfile=0x0)
at reload1.c:1150
#6 0x8176acc in global_alloc (file=0x0) at global.c:581
#7 0x804e274 in rest_of_compilation (decl=0x40108680)
at toplev.c:3339
#8 0x82b0907 in finish_function (nested=0) at c-decl.c:6560
#9 0x829d3fa in yyparse () at c-parse.y:313
#10 0x804c9b3 in compile_file (name=0x40104270 "target.i")
at toplev.c:2289
#11 0x8050a40 in main (argc=6, argv=0xbffffad4)
at toplev.c:4726
See http://gcc.gnu.org/ml/gcc-bugs/2000-06/msg00311.html for further analysis.
>How-To-Repeat:
Here is a stripped down test case. Compile with -Os.
typedef unsigned int size_t;
typedef unsigned long long int ffetargetTypeless;
extern void *memcpy (void *__restrict, const void *__restrict, size_t);
extern void *memset (void *, int, size_t);
int
ffetarget_convert_any_typeless_ (char *res, size_t size, ffetargetTypeless l)
{
unsigned long long int l1;
unsigned char l5;
size_t size_of;
char *p;
l5 = l;
p = (char *) &l5;
size_of = sizeof (l5);
l1 = l5;
if (size <= size_of)
{
int i = size_of - size;
memcpy (res, p + i, size);
for (; i > 0; ++p, --i)
if (*p != '\0')
return 1;
}
else
{
int i = size - size_of;
memset (res, 0, i);
memcpy (res + i, p, size_of);
}
if (l1 != l)
return 1;
return 0;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-prs
mailing list