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