This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

assertify stormy16


This patch assertifies the stormy16 target.  I built i686 hosted
cross tools and newlib, but because I can't find a simulator I have
not run the testsuite.

ok?

nathan
-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::     CodeSourcery LLC
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk

2005-05-09  Nathan Sidwell  <nathan@codesourcery.com>

	* config/stormy16/stormy16.c (xstormy16_emit_cbranch): Use
	gcc_assert and gcc_unreachable as appropriate.
	(xstormy16_split_cbranch, xstormy16_output_cbranch_hi,
	xstormy16_output_cbranch_si, xstormy16_split_move,
	xstormy16_initial_elimination_offset,
	xstormy16_encode_section_info, xstormy16_print_operand_address,
	xstormy16_expand_call, xstormy16_expand_arith,
	xstormy16_output_shift, xstormy16_init_builtins): Likewise.

Index: config/stormy16/stormy16.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/stormy16/stormy16.c,v
retrieving revision 1.75
diff -c -3 -p -r1.75 stormy16.c
*** config/stormy16/stormy16.c	28 Apr 2005 05:38:49 -0000	1.75
--- config/stormy16/stormy16.c	9 May 2005 12:47:24 -0000
*************** xstormy16_emit_cbranch (enum rtx_code co
*** 146,153 ****
    enum machine_mode mode;
    
    mode = GET_MODE (op0);
!   if (mode != HImode && mode != SImode)
!     abort ();
  
    if (mode == SImode
        && (code == GT || code == LE || code == GTU || code == LEU))
--- 146,152 ----
    enum machine_mode mode;
    
    mode = GET_MODE (op0);
!   gcc_assert (mode == HImode || mode == SImode);
  
    if (mode == SImode
        && (code == GT || code == LE || code == GTU || code == LEU))
*************** xstormy16_split_cbranch (enum machine_mo
*** 250,257 ****
    seq = get_insns ();
    end_sequence ();
  
!   if (! INSN_P (seq))
!     abort ();
  
    last_insn = seq;
    while (NEXT_INSN (last_insn) != NULL_RTX)
--- 249,255 ----
    seq = get_insns ();
    end_sequence ();
  
!   gcc_assert (INSN_P (seq));
  
    last_insn = seq;
    while (NEXT_INSN (last_insn) != NULL_RTX)
*************** xstormy16_output_cbranch_hi (rtx op, con
*** 324,330 ****
      case LEU:  ccode = "ls";  break;
        
      default:
!       abort ();
      }
  
    if (need_longbranch)
--- 322,328 ----
      case LEU:  ccode = "ls";  break;
        
      default:
!       gcc_unreachable ();
      }
  
    if (need_longbranch)
*************** xstormy16_output_cbranch_si (rtx op, con
*** 374,380 ****
  
        /* The missing codes above should never be generated.  */
      default:
!       abort ();
      }
  
    switch (code)
--- 372,378 ----
  
        /* The missing codes above should never be generated.  */
      default:
!       gcc_unreachable ();
      }
  
    switch (code)
*************** xstormy16_output_cbranch_si (rtx op, con
*** 383,390 ****
        {
  	int regnum;
  	
! 	if (GET_CODE (XEXP (op, 0)) != REG)
! 	  abort ();
        
  	regnum = REGNO (XEXP (op, 0));
  	sprintf (prevop, "or %s,%s", reg_names[regnum], reg_names[regnum+1]);
--- 381,387 ----
        {
  	int regnum;
  	
! 	gcc_assert (GET_CODE (XEXP (op, 0)) == REG);
        
  	regnum = REGNO (XEXP (op, 0));
  	sprintf (prevop, "or %s,%s", reg_names[regnum], reg_names[regnum+1]);
*************** xstormy16_output_cbranch_si (rtx op, con
*** 396,402 ****
        break;
  
      default:
!       abort ();
      }
  
    if (need_longbranch)
--- 393,399 ----
        break;
  
      default:
!       gcc_unreachable ();
      }
  
    if (need_longbranch)
*************** xstormy16_split_move (enum machine_mode 
*** 799,819 ****
    rtx auto_inc_reg_rtx = NULL_RTX;
    
    /* Check initial conditions.  */
!   if (! reload_completed
!       || mode == QImode || mode == HImode
!       || ! nonimmediate_operand (dest, mode)
!       || ! general_operand (src, mode))
!     abort ();
  
    /* This case is not supported below, and shouldn't be generated.  */
!   if (GET_CODE (dest) == MEM
!       && GET_CODE (src) == MEM)
!     abort ();
  
    /* This case is very very bad after reload, so trap it now.  */
!   if (GET_CODE (dest) == SUBREG
!       || GET_CODE (src) == SUBREG)
!     abort ();
  
    /* The general idea is to copy by words, offsetting the source and
       destination.  Normally the least-significant word will be copied
--- 796,811 ----
    rtx auto_inc_reg_rtx = NULL_RTX;
    
    /* Check initial conditions.  */
!   gcc_assert (reload_completed
! 	      && mode != QImode && mode != HImode
! 	      && nonimmediate_operand (dest, mode)
! 	      && general_operand (src, mode));
  
    /* This case is not supported below, and shouldn't be generated.  */
!   gcc_assert (GET_CODE (dest) != MEM || GET_CODE (src) != MEM);
  
    /* This case is very very bad after reload, so trap it now.  */
!   gcc_assert (GET_CODE (dest) != SUBREG && GET_CODE (src) != SUBREG);
  
    /* The general idea is to copy by words, offsetting the source and
       destination.  Normally the least-significant word will be copied
*************** xstormy16_split_move (enum machine_mode 
*** 870,881 ****
  	   && reg_overlap_mentioned_p (dest, src))
      {
        int regno;
!       if (GET_CODE (dest) != REG)
! 	abort ();
        regno = REGNO (dest);
        
!       if (! refers_to_regno_p (regno, regno + num_words, mem_operand, 0))
! 	abort ();
        
        if (refers_to_regno_p (regno, regno + 1, mem_operand, 0))
  	direction = -1;
--- 862,873 ----
  	   && reg_overlap_mentioned_p (dest, src))
      {
        int regno;
!       
!       gcc_assert (GET_CODE (dest) == REG);
        regno = REGNO (dest);
        
!       gcc_assert (refers_to_regno_p (regno, regno + num_words,
! 				     mem_operand, 0));
        
        if (refers_to_regno_p (regno, regno + 1, mem_operand, 0))
  	direction = -1;
*************** xstormy16_split_move (enum machine_mode 
*** 887,893 ****
  	   (set (reg:DI r0) (mem:DI (reg:HI r1)))
  	   which we'd need to support by doing the set of the second word
  	   last.  */
! 	abort ();
      }
  
    end = direction < 0 ? -1 : num_words;
--- 879,885 ----
  	   (set (reg:DI r0) (mem:DI (reg:HI r1)))
  	   which we'd need to support by doing the set of the second word
  	   last.  */
! 	gcc_unreachable ();
      }
  
    end = direction < 0 ? -1 : num_words;
*************** xstormy16_split_move (enum machine_mode 
*** 910,918 ****
  	MEM_VOLATILE_P (w_dest) = 1;
        
        /* The simplify_subreg calls must always be able to simplify.  */
!       if (GET_CODE (w_src) == SUBREG
! 	  || GET_CODE (w_dest) == SUBREG)
! 	abort ();
        
        insn = emit_insn (gen_rtx_SET (VOIDmode, w_dest, w_src));
        if (auto_inc_reg_rtx)
--- 902,909 ----
  	MEM_VOLATILE_P (w_dest) = 1;
        
        /* The simplify_subreg calls must always be able to simplify.  */
!       gcc_assert (GET_CODE (w_src) != SUBREG
! 		  && GET_CODE (w_dest) != SUBREG);
        
        insn = emit_insn (gen_rtx_SET (VOIDmode, w_dest, w_src));
        if (auto_inc_reg_rtx)
*************** xstormy16_initial_elimination_offset (in
*** 1075,1081 ****
    else if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
      result = -(layout.sp_minus_fp + layout.fp_minus_ap);
    else
!     abort ();
  
    return result;
  }
--- 1066,1072 ----
    else if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
      result = -(layout.sp_minus_fp + layout.fp_minus_ap);
    else
!     gcc_unreachable ();
  
    return result;
  }
*************** xstormy16_encode_section_info (tree decl
*** 1656,1680 ****
  
        rtl = r;
        rtlname = XEXP (rtl, 0);
!       if (GET_CODE (rtlname) == SYMBOL_REF)
! 	oldname = XSTR (rtlname, 0);
!       else if (GET_CODE (rtlname) == MEM
! 	       && GET_CODE (XEXP (rtlname, 0)) == SYMBOL_REF)
! 	oldname = XSTR (XEXP (rtlname, 0), 0);
!       else
! 	abort ();
  
        if (DECL_INITIAL (decl))
  	{
  	  newsection = ".data_below100";
! 	  DECL_SECTION_NAME (decl) = build_string (strlen (newsection), newsection);
  	}
  
        newname = alloca (strlen (oldname) + 4);
        sprintf (newname, "@b.%s", oldname);
        idp = get_identifier (newname);
!       XEXP (rtl, 0) =
! 	gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
      }
  }
  
--- 1647,1668 ----
  
        rtl = r;
        rtlname = XEXP (rtl, 0);
!       if (GET_CODE (rtlname) == MEM)
! 	rtlname = XEXP (rtlname, 0);
!       gcc_assert (GET_CODE (rtlname) == SYMBOL_REF);
!       oldname = XSTR (rtlname, 0);
  
        if (DECL_INITIAL (decl))
  	{
  	  newsection = ".data_below100";
! 	  DECL_SECTION_NAME (decl) = build_string (strlen (newsection),
! 						   newsection);
  	}
  
        newname = alloca (strlen (oldname) + 4);
        sprintf (newname, "@b.%s", oldname);
        idp = get_identifier (newname);
!       XEXP (rtl, 0) = gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
      }
  }
  
*************** xstormy16_print_operand_address (FILE *f
*** 1769,1776 ****
  
    if (GET_CODE (address) == PLUS)
      {
!       if (GET_CODE (XEXP (address, 1)) != CONST_INT)
! 	abort ();
        offset = INTVAL (XEXP (address, 1));
        address = XEXP (address, 0);
      }
--- 1757,1763 ----
  
    if (GET_CODE (address) == PLUS)
      {
!       gcc_assert (GET_CODE (XEXP (address, 1)) == CONST_INT);
        offset = INTVAL (XEXP (address, 1));
        address = XEXP (address, 0);
      }
*************** xstormy16_print_operand_address (FILE *f
*** 1782,1789 ****
    if (pre_dec || post_inc)
      address = XEXP (address, 0);
    
!   if (GET_CODE (address) != REG)
!     abort ();
  
    fputc ('(', file);
    if (pre_dec)
--- 1769,1775 ----
    if (pre_dec || post_inc)
      address = XEXP (address, 0);
    
!   gcc_assert (GET_CODE (address) == REG);
  
    fputc ('(', file);
    if (pre_dec)
*************** xstormy16_expand_call (rtx retval, rtx d
*** 1997,2004 ****
    rtx call, temp;
    enum machine_mode mode;
  
!   if (GET_CODE (dest) != MEM)
!     abort ();
    dest = XEXP (dest, 0);
  
    if (! CONSTANT_P (dest)
--- 1983,1989 ----
    rtx call, temp;
    enum machine_mode mode;
  
!   gcc_assert (GET_CODE (dest) == MEM);
    dest = XEXP (dest, 0);
  
    if (! CONSTANT_P (dest)
*************** xstormy16_expand_arith (enum machine_mod
*** 2120,2126 ****
  	  break;
  
  	default:
! 	  abort ();
  	}
        
        firstloop = 0;
--- 2105,2111 ----
  	  break;
  
  	default:
! 	  gcc_unreachable ();
  	}
        
        firstloop = 0;
*************** xstormy16_output_shift (enum machine_mod
*** 2147,2156 ****
    const char *r0, *r1, *rt;
    static char r[64];
  
!   if (GET_CODE (size_r) != CONST_INT
!       || GET_CODE (x) != REG
!       || mode != SImode)
!     abort ();
    size = INTVAL (size_r) & (GET_MODE_BITSIZE (mode) - 1);
  
    if (size == 0)
--- 2132,2139 ----
    const char *r0, *r1, *rt;
    static char r[64];
  
!   gcc_assert (GET_CODE (size_r) == CONST_INT
! 	      && GET_CODE (x) == REG && mode == SImode);
    size = INTVAL (size_r) & (GET_MODE_BITSIZE (mode) - 1);
  
    if (size == 0)
*************** xstormy16_output_shift (enum machine_mod
*** 2174,2180 ****
  	  sprintf (r, "shr %s,#1 | rrc %s,#1", r1, r0);
  	  break;
  	default:
! 	  abort ();
  	}
        return r;
      }
--- 2157,2163 ----
  	  sprintf (r, "shr %s,#1 | rrc %s,#1", r1, r0);
  	  break;
  	default:
! 	  gcc_unreachable ();
  	}
        return r;
      }
*************** xstormy16_output_shift (enum machine_mod
*** 2194,2200 ****
  	  sprintf (r, "mov %s,%s | mov %s,#0", r0, r1, r1);
  	  break;
  	default:
! 	  abort ();
  	}
        return r;
      }
--- 2177,2183 ----
  	  sprintf (r, "mov %s,%s | mov %s,#0", r0, r1, r1);
  	  break;
  	default:
! 	  gcc_unreachable ();
  	}
        return r;
      }
*************** xstormy16_output_shift (enum machine_mod
*** 2215,2221 ****
  		   r0, r1, r1, r0, (int) size - 16);
  	  break;
  	default:
! 	  abort ();
  	}
        return r;
      }
--- 2198,2204 ----
  		   r0, r1, r1, r0, (int) size - 16);
  	  break;
  	default:
! 	  gcc_unreachable ();
  	}
        return r;
      }
*************** xstormy16_output_shift (enum machine_mod
*** 2244,2250 ****
  	       r0, rt);
        break;
      default:
!       abort ();
      }
    return r;
  }
--- 2227,2233 ----
  	       r0, rt);
        break;
      default:
!       gcc_unreachable ();
      }
    return r;
  }
*************** xstormy16_init_builtins (void)
*** 2366,2372 ****
  	    case 'S': arg = short_unsigned_type_node; break;
  	    case 'l': arg = long_integer_type_node; break;
  	    case 'L': arg = long_unsigned_type_node; break;
! 	    default: abort();
  	    }
  	  if (a == 0)
  	    ret_type = arg;
--- 2349,2355 ----
  	    case 'S': arg = short_unsigned_type_node; break;
  	    case 'l': arg = long_integer_type_node; break;
  	    case 'L': arg = long_unsigned_type_node; break;
! 	    default: gcc_unreachable ();
  	    }
  	  if (a == 0)
  	    ret_type = arg;

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