PATCH: remove CRDS support from m68k back-end
From: Bernardo Innocenti <bernie@develer.com>  (Develer)
CC: gcc-patches@gcc.gnu.org

This patch strips all blocks of code in the m68k back-end
depending on the CRDS definition.

All this code has been dead since the m68k-crds-unos target
deprecation in gcc 3.4 and anyway it wasn't mantained for
a few years, so it's probably rotten.


2003-07-05  Bernardo Innocenti  <bernie@develer.com>

        * config/m68k/m68k.c: Strip code blocks depending on CRDS definition.
        * config/m68k/m68k.md: Likewise.

diff -c -3 -p -r1.89 m68k.c
*** gcc/config/m68k/m68k.c	3 Jul 2003 12:34:07 -0000	1.89
--- gcc/config/m68k/m68k.c	5 Jul 2003 13:33:47 -0000
*************** m68k_save_reg (regno)
*** 256,324 ****
  /* Note that the order of the bit mask for fmovem is the opposite
     of the order for movem!  */
  
- #ifdef CRDS
- 
- static void
- m68k_output_function_prologue (stream, size)
-      FILE *stream;
-      HOST_WIDE_INT size;
- {
-   register int regno;
-   register int mask = 0;
-   HOST_WIDE_INT fsize = ((size) + 3) & -4;
- 
-   /* unos stack probe */
-   if (fsize > 30000)
-     {
-       fprintf (stream, "\tmovel sp,a0\n");
-       fprintf (stream, "\taddl $-" HOST_WIDE_INT_PRINT_DEC ",a0\n",
- 	       2048 + fsize);
-       fprintf (stream, "\ttstb (a0)\n");
-     }
-   else
-     fprintf (stream, "\ttstb -" HOST_WIDE_INT_PRINT_DEC "(sp)\n",
- 	     2048 + fsize);
- 
-   if (frame_pointer_needed)
-     {
-       if (TARGET_68020 || fsize < 0x8000)
- 	fprintf (stream, "\tlink a6,$" HOST_WIDE_INT_PRINT_DEC "\n", -fsize);
-       else
- 	fprintf (stream,
- 		 "\tlink a6,$0\n\tsubl $" HOST_WIDE_INT_PRINT_DEC ",sp\n",
- 		 fsize);
-     }
-   else if (fsize)
-     {
-       /* Adding negative number is faster on the 68040.  */
-       if (fsize + 4 < 0x8000)
- 	fprintf (stream, "\tadd.w $" HOST_WIDE_INT_PRINT_DEC ",sp\n",
- 		 - (fsize + 4));
-       else
- 	fprintf (stream, "\tadd.l $" HOST_WIDE_INT_PRINT_DEC ",sp\n",
- 		 - (fsize + 4));
-     }
- 
-   for (regno = 16; regno < 24; regno++)
-     if (m68k_save_reg (regno))
-       mask |= 1 << (regno - 16);
- 
-   if ((mask & 0xff) != 0)
-     fprintf (stream, "\tfmovem $0x%x,-(sp)\n", mask & 0xff);
- 
-   mask = 0;
-   for (regno = 0; regno < 16; regno++)
-     if (m68k_save_reg (regno))
-       mask |= 1 << (15 - regno);
- 
-   if (exact_log2 (mask) >= 0)
-     fprintf (stream, "\tmovel %s,-(sp)\n", reg_names[15 - exact_log2 (mask)]);
-   else if (mask)
-     fprintf (stream, "\tmovem $0x%x,-(sp)\n", mask);
- }
- 
- #else  /* !CRDS */
- 
  static void
  m68k_output_function_prologue (stream, size)
       FILE *stream;
--- 256,261 ----
*************** m68k_output_function_prologue (stream, s
*** 643,649 ****
  #endif
      }
  }
- #endif   /* !CRDS  */
  
  /* Return true if this function's epilogue can be output as RTL.  */
  
--- 580,585 ----
*************** use_return_insn ()
*** 670,777 ****
     This is mandatory because of alloca; we also take advantage of it to
     omit stack adjustments before returning.  */
  
- #ifdef CRDS
- 
- static void
- m68k_output_function_epilogue (stream, size)
-      FILE *stream;
-      HOST_WIDE_INT size;
- {
-   register int regno;
-   register int mask, fmask;
-   register int nregs;
-   HOST_WIDE_INT offset, foffset;
-   HOST_WIDE_INT fsize = ((size) + 3) & -4;
-   int big = 0;
- 
-   nregs = 0;  fmask = 0;
-   for (regno = 16; regno < 24; regno++)
-     if (m68k_save_reg (regno))
-       {
- 	nregs++;
- 	fmask |= 1 << (23 - regno);
-       }
- 
-   foffset = nregs * 12;
-   nregs = 0;  mask = 0;
- 
-   for (regno = 0; regno < 16; regno++)
-     if (m68k_save_reg (regno))
-       {
- 	nregs++;
- 	mask |= 1 << regno;
-       }
- 
-   offset = foffset + nregs * 4;
-   if (offset + fsize >= 0x8000
-       && frame_pointer_needed
-       && (mask || fmask))
-     {
-       fprintf (stream, "\tmovel $" HOST_WIDE_INT_PRINT_DEC ",a0\n", -fsize);
-       fsize = 0, big = 1;
-     }
- 
-   if (exact_log2 (mask) >= 0)
-     {
-       if (big)
- 	fprintf (stream, "\tmovel -" HOST_WIDE_INT_PRINT_DEC "(a6,a0.l),%s\n",
- 		 offset + fsize, reg_names[exact_log2 (mask)]);
-       else if (! frame_pointer_needed)
- 	fprintf (stream, "\tmovel (sp)+,%s\n",
- 		 reg_names[exact_log2 (mask)]);
-       else
- 	fprintf (stream, "\tmovel -" HOST_WIDE_INT_PRINT_DEC "(a6),%s\n",
- 		 offset + fsize, reg_names[exact_log2 (mask)]);
-     }
-   else if (mask)
-     {
-       if (big)
- 	fprintf (stream,
- 		 "\tmovem -" HOST_WIDE_INT_PRINT_DEC "(a6,a0.l),$0x%x\n",
- 		 offset + fsize, mask);
-       else if (! frame_pointer_needed)
- 	fprintf (stream, "\tmovem (sp)+,$0x%x\n", mask);
-       else
- 	fprintf (stream, "\tmovem -" HOST_WIDE_INT_PRINT_DEC "(a6),$0x%x\n",
- 		 offset + fsize, mask);
-     }
- 
-   if (fmask)
-     {
-       if (big)
- 	fprintf (stream,
- 		 "\tfmovem -" HOST_WIDE_INT_PRINT_DEC "(a6,a0.l),$0x%x\n",
- 		 foffset + fsize, fmask);
-       else if (! frame_pointer_needed)
- 	fprintf (stream, "\tfmovem (sp)+,$0x%x\n", fmask);
-       else
- 	fprintf (stream, "\tfmovem -" HOST_WIDE_INT_PRINT_DEC "(a6),$0x%x\n",
- 		 foffset + fsize, fmask);
-     }
- 
-   if (frame_pointer_needed)
-     fprintf (stream, "\tunlk a6\n");
-   else if (fsize)
-     {
-       if (fsize + 4 < 0x8000)
- 	fprintf (stream, "\tadd.w $" HOST_WIDE_INT_PRINT_DEC ",sp\n",
- 		 fsize + 4);
-       else
- 	fprintf (stream, "\tadd.l $" HOST_WIDE_INT_PRINT_DEC ",sp\n",
- 		 fsize + 4);
-     }
- 
-   if (current_function_calls_eh_return)
-     fprintf (stream, "\tadd.l a0,sp\n");
- 
-   if (current_function_pops_args)
-     fprintf (stream, "\trtd $%d\n", current_function_pops_args);
-   else
-     fprintf (stream, "\trts\n");
- }
- 
- #else  /* !CRDS */
- 
  static void
  m68k_output_function_epilogue (stream, size)
       FILE *stream;
--- 606,611 ----
*************** m68k_output_function_epilogue (stream, s
*** 1045,1051 ****
    else
      fprintf (stream, "\trts\n");
  }
- #endif   /* !CRDS  */
  
  /* Similar to general_operand, but exclude stack_pointer_rtx.  */
  
--- 879,884 ----
*************** output_move_const_into_data_reg (operand
*** 1772,1798 ****
    switch (const_method (operands[1]))
      {
      case MOVQ :
! #if defined (MOTOROLA) && !defined (CRDS)
        return "moveq%.l %1,%0";
  #else
        return "moveq %1,%0";
  #endif
      case NOTB :
        operands[1] = GEN_INT (i ^ 0xff);
! #if defined (MOTOROLA) && !defined (CRDS)
        return "moveq%.l %1,%0\n\tnot%.b %0";
  #else
        return "moveq %1,%0\n\tnot%.b %0";
  #endif	 
      case NOTW :
        operands[1] = GEN_INT (i ^ 0xffff);
! #if defined (MOTOROLA) && !defined (CRDS)
        return "moveq%.l %1,%0\n\tnot%.w %0";
  #else
        return "moveq %1,%0\n\tnot%.w %0";
  #endif	 
      case NEGW :
! #if defined (MOTOROLA) && !defined (CRDS)
        return "moveq%.l %#-128,%0\n\tneg%.w %0";
  #else
        return "moveq %#-128,%0\n\tneg%.w %0";
--- 1605,1631 ----
    switch (const_method (operands[1]))
      {
      case MOVQ :
! #ifdef MOTOROLA
        return "moveq%.l %1,%0";
  #else
        return "moveq %1,%0";
  #endif
      case NOTB :
        operands[1] = GEN_INT (i ^ 0xff);
! #ifdef MOTOROLA
        return "moveq%.l %1,%0\n\tnot%.b %0";
  #else
        return "moveq %1,%0\n\tnot%.b %0";
  #endif	 
      case NOTW :
        operands[1] = GEN_INT (i ^ 0xffff);
! #ifdef MOTOROLA
        return "moveq%.l %1,%0\n\tnot%.w %0";
  #else
        return "moveq %1,%0\n\tnot%.w %0";
  #endif	 
      case NEGW :
! #ifdef MOTOROLA
        return "moveq%.l %#-128,%0\n\tneg%.w %0";
  #else
        return "moveq %#-128,%0\n\tneg%.w %0";
*************** output_move_const_into_data_reg (operand
*** 1802,1808 ****
  	unsigned u = i;
  
  	operands[1] = GEN_INT ((u << 16) | (u >> 16));
! #if defined (MOTOROLA) && !defined (CRDS)
  	return "moveq%.l %1,%0\n\tswap %0";
  #else
  	return "moveq %1,%0\n\tswap %0";
--- 1635,1641 ----
  	unsigned u = i;
  
  	operands[1] = GEN_INT ((u << 16) | (u >> 16));
! #ifdef MOTOROLA
  	return "moveq%.l %1,%0\n\tswap %0";
  #else
  	return "moveq %1,%0\n\tswap %0";
*************** output_move_himode (operands)
*** 1885,1891 ****
  	       && INTVAL (operands[1]) < 128
  	       && INTVAL (operands[1]) >= -128)
  	{
! #if defined(MOTOROLA) && !defined(CRDS)
  	  return "moveq%.l %1,%0";
  #else
  	  return "moveq %1,%0";
--- 1718,1724 ----
  	       && INTVAL (operands[1]) < 128
  	       && INTVAL (operands[1]) >= -128)
  	{
! #ifdef MOTOROLA
  	  return "moveq%.l %1,%0";
  #else
  	  return "moveq %1,%0";
*************** output_move_qimode (operands)
*** 1989,1995 ****
        && INTVAL (operands[1]) < 128
        && INTVAL (operands[1]) >= -128)
      {
! #if defined(MOTOROLA) && !defined(CRDS)
        return "moveq%.l %1,%0";
  #else
        return "moveq %1,%0";
--- 1822,1828 ----
        && INTVAL (operands[1]) < 128
        && INTVAL (operands[1]) >= -128)
      {
! #ifdef MOTOROLA
        return "moveq%.l %1,%0";
  #else
        return "moveq %1,%0";
*************** floating_exact_log2 (x)
*** 2795,2801 ****
     '@' for a reference to the top word on the stack:
         sp@, (sp) or (%sp) depending on the style of syntax.
     '#' for an immediate operand prefix (# in MIT and Motorola syntax
!        but & in SGS syntax, $ in CRDS/UNOS syntax).
     '!' for the cc register (used in an `and to cc' insn).
     '$' for the letter `s' in an op code, but only on the 68040.
     '&' for the letter `d' in an op code, but only on the 68040.
--- 2628,2634 ----
     '@' for a reference to the top word on the stack:
         sp@, (sp) or (%sp) depending on the style of syntax.
     '#' for an immediate operand prefix (# in MIT and Motorola syntax
!        but & in SGS syntax).
     '!' for the cc register (used in an `and to cc' insn).
     '$' for the letter `s' in an op code, but only on the 68040.
     '&' for the letter `d' in an op code, but only on the 68040.
*************** print_operand (file, op, letter)
*** 2819,2825 ****
  {
    if (letter == '.')
      {
! #if defined (MOTOROLA) && !defined (CRDS)
        fprintf (file, ".");
  #endif
      }
--- 2652,2658 ----
  {
    if (letter == '.')
      {
! #ifdef MOTOROLA
        fprintf (file, ".");
  #endif
      }
diff -c -3 -p -r1.59 m68k.md
*** gcc/config/m68k/m68k.md	12 Jun 2003 21:57:31 -0000	1.59
--- gcc/config/m68k/m68k.md	5 Jul 2003 13:33:52 -0000
***************
*** 718,724 ****
      }
    /* moveq is faster on the 68000.  */
    if (DATA_REG_P (operands[0]) && (!TARGET_68020 && !TARGET_5200))
! #if defined(MOTOROLA) && !defined(CRDS)
      return \"moveq%.l %#0,%0\";
  #else
      return \"moveq %#0,%0\";
--- 718,724 ----
      }
    /* moveq is faster on the 68000.  */
    if (DATA_REG_P (operands[0]) && (!TARGET_68020 && !TARGET_5200))
! #ifdef MOTOROLA
      return \"moveq%.l %#0,%0\";
  #else
      return \"moveq %#0,%0\";
***************
*** 932,938 ****
        /* moveq is faster on the 68000.  */
        if (DATA_REG_P (operands[0]) && !(TARGET_68020 || TARGET_5200))
  	{
! #if defined(MOTOROLA) && !defined(CRDS)
  	  return \"moveq%.l %#0,%0\";
  #else
  	  return \"moveq %#0,%0\";
--- 932,938 ----
        /* moveq is faster on the 68000.  */
        if (DATA_REG_P (operands[0]) && !(TARGET_68020 || TARGET_5200))
  	{
! #ifdef MOTOROLA
  	  return \"moveq%.l %#0,%0\";
  #else
  	  return \"moveq %#0,%0\";
***************
*** 2662,2668 ****
    ""
    "*
  {
! #if defined(MOTOROLA) && !defined(CRDS)
    return \"muls%.w %2,%0\";
  #else
    return \"muls %2,%0\";
--- 2662,2668 ----
    ""
    "*
  {
! #ifdef MOTOROLA
    return \"muls%.w %2,%0\";
  #else
    return \"muls %2,%0\";
***************
*** 2678,2684 ****
    ""
    "*
  {
! #if defined(MOTOROLA) && !defined(CRDS)
    return \"muls%.w %2,%0\";
  #else
    return \"muls %2,%0\";
--- 2678,2684 ----
    ""
    "*
  {
! #ifdef MOTOROLA
    return \"muls%.w %2,%0\";
  #else
    return \"muls %2,%0\";
***************
*** 2693,2699 ****
    "INTVAL (operands[2]) >= -0x8000 && INTVAL (operands[2]) <= 0x7fff"
    "*
  {
! #if defined(MOTOROLA) && !defined(CRDS)
    return \"muls%.w %2,%0\";
  #else
    return \"muls %2,%0\";
--- 2693,2699 ----
    "INTVAL (operands[2]) >= -0x8000 && INTVAL (operands[2]) <= 0x7fff"
    "*
  {
! #ifdef MOTOROLA
    return \"muls%.w %2,%0\";
  #else
    return \"muls %2,%0\";
***************
*** 2731,2737 ****
    ""
    "*
  {
! #if defined(MOTOROLA) && !defined(CRDS)
    return \"mulu%.w %2,%0\";
  #else
    return \"mulu %2,%0\";
--- 2731,2737 ----
    ""
    "*
  {
! #ifdef MOTOROLA
    return \"mulu%.w %2,%0\";
  #else
    return \"mulu %2,%0\";
***************
*** 2746,2752 ****
    "INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 0xffff"
    "*
  {
! #if defined(MOTOROLA) && !defined(CRDS)
    return \"mulu%.w %2,%0\";
  #else
    return \"mulu %2,%0\";
--- 2746,2752 ----
    "INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 0xffff"
    "*
  {
! #ifdef MOTOROLA
    return \"mulu%.w %2,%0\";
  #else
    return \"mulu %2,%0\";
***************
*** 6531,6560 ****
    if (TARGET_5200)
      {
        if (ADDRESS_REG_P (operands[0]))
- 	{
- #ifdef CRDS
- 	  return \"jmp 2(pc,%0.l)\";
- #else
  	  return \"jmp 2(%%pc,%0.l)\";
- #endif  /* end !CRDS */
- 	}
        else
- 	{
- #ifdef CRDS
- 	  return \"ext%.l %0\;jmp 2(pc,%0.l)\";
- #else
  	  return \"extl %0\;jmp 2(%%pc,%0.l)\";
- #endif  /* end !CRDS */
- 	}
      }
    else
-     {
- #ifdef CRDS
-       return \"jmp 2(pc,%0.w)\";
- #else
        return \"jmp 2(%%pc,%0.w)\";
- #endif  /* end !CRDS */
-     }
  #endif
  #else /* not SGS */
    if (TARGET_5200)
--- 6531,6542 ----
