This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
trouble with porting architecture
- From: James Dessart <james at skwirl dot ca>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 30 Dec 2003 10:28:15 -0500
- Subject: trouble with porting architecture
I've been working with an architecture port made in '97, which was
updated to 2.95 by someone else, then I updated it to 3.1. The
architecture in question is the m6809, running in a Tandy Color
Computer. It works for most source, but I've come across a piece of
source which generates the following error:
../contiki/ctk/ctk-conio.c: In function `ctk_draw_menus':
../contiki/ctk/ctk-conio.c:510: unable to generate reloads for:
(insn 99 98 100 (set (reg:QI 0 d [32])
(minus:QI (reg:QI 33)
(reg:QI 0 d [34]))) 31 {subqi3} (nil)
(expr_list:REG_DEAD (reg:QI 33)
(expr_list:REG_DEAD (reg:QI 0 d [34])
(nil))))
../contiki/ctk/ctk-conio.c:510: Internal compiler error in
find_reloads, at reload.c:3576
Would this indicate a problem in the machine description? Or something
else? The code is really rather straightforward, and doesn't generate
any warnings. The function in question returns nothing, and has a
single local variable.
Unfortunately, I'm not too familiar with gcc internals, and couldn't
write a machine description to save my life. I understand the basic
concepts, but that's about it.
See function below:
void
ctk_draw_menus(struct ctk_menus *menus)
{
struct ctk_menu *m;
/* Draw menus */
textcolor(MENUCOLOR);
gotoxy(0, 0);
revers(1);
cputc(' ');
for(m = menus->menus->next; m != NULL; m = m->next) {
if(m != menus->open) {
cputs(m->title);
cputc(' ');
} else {
draw_menu(m);
}
}
if(wherex() + strlen(menus->desktopmenu->title) + 1>= sizex) {
gotoxy(sizex - strlen(menus->desktopmenu->title) - 1, 0);
} else {
cclear(sizex - wherex() -
strlen(menus->desktopmenu->title) - 1);
}
/* Draw desktopmenu */
if(menus->desktopmenu != menus->open) {
cputs(menus->desktopmenu->title);
cputc(' ');
} else {
draw_menu(menus->desktopmenu);
}
revers(0);
}
James