This is the mail archive of the gcc-bugs@gcc.gnu.org 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]

middle-end/3213: ICE when compiling gnuboy-0.9.13



>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:


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