This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
middle-end/3213: ICE when compiling gnuboy-0.9.13
- To: gcc-gnats at gcc dot gnu dot org
- Subject: middle-end/3213: ICE when compiling gnuboy-0.9.13
- From: jankr at ifi dot uio dot no
- Date: Sun, 17 Jun 2001 22:53:46 +0200
>Number: 3213
>Category: middle-end
>Synopsis: ICE when compiling gnuboy-0.9.13
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Sun Jun 17 13:56:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Jan Kroken
>Release: 3.0 20010615 (prerelease)
>Organization:
Department of Computer Science, University of Oslo, Norway
>Environment:
System: Linux krs-dhcp059 2.4.2 #1 Sat Mar 24 23:55:10 CET 2001 i586 unknown
Architecture: i586
host: i586-pc-linux-gnu
build: i586-pc-linux-gnu
target: i586-pc-linux-gnu
configured with: ../gcc-3.0-20010615/configure --prefix=/usr
>Description:
gnuboy-0.9.13]$ gcc -O3 -DALLOW_UNALIGNED_IO -fstrength-reduce -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fexpensive-optimizations -fforce-mem -fforce-addr -fomit-frame-pointer -I. -I/usr/local/include -I/usr/X11R6/include -I./sys/nix -DHAVE_CONFIG_H -DIS_LITTLE_ENDIAN -DUSE_ASM -I./asm/i386 -DIS_LINUX -c events.c -o events.o
events.c: In function `ev_postevent':
events.c:61: Unable to find a register to spill in class `AREG'.
events.c:61: This is the insn:
(insn 4 43 59 (set (reg/v/f:SI 42)
(mem/f:SI (reg/f:SI 16 argp) 1)) 35 {*movsi_1} (nil)
(expr_list:REG_EQUIV (mem/f:SI (reg/f:SI 16 argp) 1)
(nil)))
events.c:61: confused by earlier errors, bailing out
>How-To-Repeat:
# 8 "events.c"
# 1 "input.h" 1
# 106 "input.h"
typedef struct keytable_s
{
char *name;
int code;
} keytable_t;
extern keytable_t keytable[];
extern char keystates[0x200];
extern int nkeysdown;
int k_keycode(char *name);
char *k_keyname(int code);
typedef struct event_s
{
int type;
int code;
int dx, dy;
int x, y;
} event_t;
int ev_postevent(event_t *ev);
int ev_getevent(event_t *ev);
# 9 "events.c" 2
char keystates[0x200];
int nkeysdown;
static event_t eventqueue[32];
static int eventhead, eventpos;
int ev_postevent(event_t *ev)
{
int nextevent;
nextevent = (eventhead+1)%32;
if (nextevent == eventpos)
return 0;
eventqueue[eventhead] = *ev;
eventhead = nextevent;
return 1;
}
int ev_getevent(event_t *ev)
{
if (eventpos == eventhead)
{
ev->type = 0;
return 0;
}
*ev = eventqueue[eventpos];
eventpos = (eventpos+1)%32;
if (ev->type == 1)
{
keystates[ev->code] = 1;
nkeysdown++;
}
if (ev->type == 2)
{
keystates[ev->code] = 0;
nkeysdown--;
if (nkeysdown < 0) nkeysdown = 0;
}
return 1;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: