rgoguen@bbn.com (Robert J Goguen) (10/22/88)
Folks I'm porting gcc to the 3B2. The following code causes gcc-cc1 to abort in expr.c line 1042 because I don't have a movdi defined. ----------------------------------------------------------------- struck junk { int x; int y; } d0 ; main() { d0.x = 1 ; d0.y = 1; printit(d0); } printit(d) struct junk d0; { printf("x = %d y = %d\n",d.x,d.y); } ----------------------------------------------------------------- My md file doesn't have a "movdi" pattern. When gcc-cc1 gets in the emit_move_insn code is has the MODE set as Dimode. Since I don't have a movdi defined mov_optab->handlers[(int) mode].insn_code == CODE_FOR_nothing and gcc-cc1 aborts(). Is there something I'm doing wrong? Do I have to define a movdi pattern? Or as the manual suggests, it is easy to code around this by adding another field to the junk struct. If I add another variable to the junk struct this code compiles file and doesn't crash gcc-cc1. Here is a piece of the code in gcc-cc1 that is aborting. rtx emit_move_insn (x, y) rtx x, y; { enum machine_mode mode = GET_MODE (x); : : : : if (mov_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing) return emit_insn (GEN_FCN (mov_optab->handlers[(int) mode].insn_code) (x, y)); else abort (); <<<===== I end up here and gcc-cc1 aborts!! } : : For any help I would be grateful. Thanks Bob Goguen