[gnu.gcc.bug] gcc-1.29 is crashing because I don't have a movdi pattern

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