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 v850


This one does the v850 target files.  Again I tested with i686 hosted cross
tools.  Unfortunately newlib builds with
../../../../../../src/newlib/libc/stdlib/strtod.c: In function '_strtod_r':
../../../../../../src/newlib/libc/stdlib/strtod.c:732: error: unrecognizable insn:
(jump_insn 33 1999 34 2 ../../../../../../src/newlib/libc/stdlib/strtod.c:126 (set (pc)
        (plus:SI (sign_extend:SI (mem:HI (plus:SI (mult:SI (reg:SI 149)
                            (const_int 2 [0x2]))
                        (label_ref 34)) [0 S2 A16]))
            (label_ref 34))) -1 (nil)
    (expr_list:REG_DEAD (reg:SI 149)
        (nil)))
both with and without the patch. ok?

nathan

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

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

	* config/v850/v850.c (print_operand): Use gcc_assert and
	gcc_unreachable, as appropriate.
	(print_operand_address, v850_handle_data_area_attribute,
	v850_encode_data_area, construct_restore_jr, construct_save_jarl,
	v850_insert_attributes, construct_prepare_instruction): Likewise.
	* config/v850/v850.h (INITIAL_ELIMINATION_OFFSET): Likewise.
	* config/v850/v850.md (movsicc, *sasf_1): Likewise.

Index: config/v850/v850.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/v850/v850.c,v
retrieving revision 1.100
diff -c -3 -p -r1.100 v850.c
*** config/v850/v850.c	23 Apr 2005 21:28:44 -0000	1.100
--- config/v850/v850.c	7 May 2005 10:56:50 -0000
*************** print_operand (FILE * file, rtx x, int c
*** 518,547 ****
  	    fprintf (file, "l");
  	    break;
  	  default:
! 	    abort ();
  	}
        break;
      case 'F':			/* high word of CONST_DOUBLE */
!       if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, "%d", (INTVAL (x) >= 0) ? 0 : -1);
!       else if (GET_CODE (x) == CONST_DOUBLE)
  	{
  	  const_double_split (x, &high, &low);
  	  fprintf (file, "%ld", (long) high);
  	}
-       else
- 	abort ();
        break;
      case 'G':			/* low word of CONST_DOUBLE */
!       if (GET_CODE (x) == CONST_INT)
! 	fprintf (file, "%ld", (long) INTVAL (x));
!       else if (GET_CODE (x) == CONST_DOUBLE)
  	{
  	  const_double_split (x, &high, &low);
  	  fprintf (file, "%ld", (long) low);
  	}
-       else
- 	abort ();
        break;
      case 'L':
        fprintf (file, "%d\n", (int)(INTVAL (x) & 0xffff));
--- 518,557 ----
  	    fprintf (file, "l");
  	    break;
  	  default:
! 	    gcc_unreachable ();
  	}
        break;
      case 'F':			/* high word of CONST_DOUBLE */
!       switch (GET_CODE (x))
  	{
+ 	case CONST_INT:
+ 	  fprintf (file, "%d", (INTVAL (x) >= 0) ? 0 : -1);
+ 	  break;
+ 	  
+ 	case CONST_DOUBLE:
  	  const_double_split (x, &high, &low);
  	  fprintf (file, "%ld", (long) high);
+ 	  break;
+ 
+ 	default:
+ 	  gcc_unreachable ();
  	}
        break;
      case 'G':			/* low word of CONST_DOUBLE */
!       switch (GET_CODE (x))
  	{
+ 	case CONST_INT:
+ 	  fprintf (file, "%ld", (long) INTVAL (x));
+ 	  break;
+ 	  
+ 	case CONST_DOUBLE:
  	  const_double_split (x, &high, &low);
  	  fprintf (file, "%ld", (long) low);
+ 	  break;
+ 
+ 	default:
+ 	  gcc_unreachable ();
  	}
        break;
      case 'L':
        fprintf (file, "%d\n", (int)(INTVAL (x) & 0xffff));
*************** print_operand (FILE * file, rtx x, int c
*** 550,603 ****
        fprintf (file, "%d", exact_log2 (INTVAL (x)));
        break;
      case 'O':
!       if (special_symbolref_operand (x, VOIDmode))
!         {
! 	  if (GET_CODE (x) == SYMBOL_REF)
! 	    ;
! 	  else if (GET_CODE (x) == CONST)
! 	    x = XEXP (XEXP (x, 0), 0);
! 	  else
! 	    abort ();
! 
!           if (SYMBOL_REF_ZDA_P (x))
!             fprintf (file, "zdaoff");
!           else if (SYMBOL_REF_SDA_P (x))
!             fprintf (file, "sdaoff");
!           else if (SYMBOL_REF_TDA_P (x))
!             fprintf (file, "tdaoff");
!           else
!             abort ();
!         }
        else
!         abort ();
        break;
      case 'P':
!       if (special_symbolref_operand (x, VOIDmode))
!         output_addr_const (file, x);
!       else
!         abort ();
        break;
      case 'Q':
!       if (special_symbolref_operand (x, VOIDmode))
!         {
! 	  if (GET_CODE (x) == SYMBOL_REF)
! 	    ;
! 	  else if (GET_CODE (x) == CONST)
! 	    x = XEXP (XEXP (x, 0), 0);
! 	  else
! 	    abort ();
! 
!           if (SYMBOL_REF_ZDA_P (x))
!             fprintf (file, "r0");
!           else if (SYMBOL_REF_SDA_P (x))
!             fprintf (file, "gp");
!           else if (SYMBOL_REF_TDA_P (x))
!             fprintf (file, "ep");
!           else
!             abort ();
!         }
        else
!         abort ();
        break;
      case 'R':		/* 2nd word of a double.  */
        switch (GET_CODE (x))
--- 560,601 ----
        fprintf (file, "%d", exact_log2 (INTVAL (x)));
        break;
      case 'O':
!       gcc_assert (special_symbolref_operand (x, VOIDmode));
!       
!       if (GET_CODE (x) == CONST)
! 	x = XEXP (XEXP (x, 0), 0);
!       else
! 	gcc_assert (GET_CODE (x) == SYMBOL_REF);
!       
!       if (SYMBOL_REF_ZDA_P (x))
! 	fprintf (file, "zdaoff");
!       else if (SYMBOL_REF_SDA_P (x))
! 	fprintf (file, "sdaoff");
!       else if (SYMBOL_REF_TDA_P (x))
! 	fprintf (file, "tdaoff");
        else
! 	gcc_unreachable ();
        break;
      case 'P':
!       gcc_assert (special_symbolref_operand (x, VOIDmode));
!       output_addr_const (file, x);
        break;
      case 'Q':
!       gcc_assert (special_symbolref_operand (x, VOIDmode));
!       
!       if (GET_CODE (x) == CONST)
! 	x = XEXP (XEXP (x, 0), 0);
        else
! 	gcc_assert (GET_CODE (x) == SYMBOL_REF);
!       
!       if (SYMBOL_REF_ZDA_P (x))
! 	fprintf (file, "r0");
!       else if (SYMBOL_REF_SDA_P (x))
! 	fprintf (file, "gp");
!       else if (SYMBOL_REF_TDA_P (x))
! 	fprintf (file, "ep");
!       else
! 	gcc_unreachable ();
        break;
      case 'R':		/* 2nd word of a double.  */
        switch (GET_CODE (x))
*************** print_operand (FILE * file, rtx x, int c
*** 636,642 ****
        switch (GET_MODE (x))
  	{
  	default:
! 	  abort ();
  
  	case QImode: fputs (".b", file); break;
  	case HImode: fputs (".h", file); break;
--- 634,640 ----
        switch (GET_MODE (x))
  	{
  	default:
! 	  gcc_unreachable ();
  
  	case QImode: fputs (".b", file); break;
  	case HImode: fputs (".h", file); break;
*************** print_operand (FILE * file, rtx x, int c
*** 648,659 ****
        fputs (reg_names[0], file);
        break;
      case 'z':			/* reg or zero */
!       if (x == const0_rtx)
! 	fputs (reg_names[0], file);
!       else if (GET_CODE (x) == REG)
  	fputs (reg_names[REGNO (x)], file);
        else
! 	abort ();
        break;
      default:
        switch (GET_CODE (x))
--- 646,658 ----
        fputs (reg_names[0], file);
        break;
      case 'z':			/* reg or zero */
!       if (GET_CODE (x) == REG)
  	fputs (reg_names[REGNO (x)], file);
        else
! 	{
! 	  gcc_assert (x == const0_rtx);
! 	  fputs (reg_names[0], file);
! 	}
        break;
      default:
        switch (GET_CODE (x))
*************** print_operand (FILE * file, rtx x, int c
*** 680,686 ****
  	  print_operand_address (file, x);
  	  break;
  	default:
! 	  abort ();
  	}
        break;
  
--- 679,685 ----
  	  print_operand_address (file, x);
  	  break;
  	default:
! 	  gcc_unreachable ();
  	}
        break;
  
*************** print_operand_address (FILE * file, rtx 
*** 779,785 ****
                reg_name = "ep";
              }
            else
!             abort ();
  
            fprintf (file, "%s(", off_name);
            output_addr_const (file, addr);
--- 778,784 ----
                reg_name = "ep";
              }
            else
!             gcc_unreachable ();
  
            fprintf (file, "%s(", off_name);
            output_addr_const (file, addr);
*************** v850_handle_data_area_attribute (tree* n
*** 2131,2137 ****
    else if (is_attribute_p ("zda", name))
      data_area = DATA_AREA_ZDA;
    else
!     abort ();
    
    switch (TREE_CODE (decl))
      {
--- 2130,2136 ----
    else if (is_attribute_p ("zda", name))
      data_area = DATA_AREA_ZDA;
    else
!     gcc_unreachable ();
    
    switch (TREE_CODE (decl))
      {
*************** v850_encode_data_area (tree decl, rtx sy
*** 2246,2252 ****
      case DATA_AREA_ZDA: flags |= SYMBOL_FLAG_ZDA; break;
      case DATA_AREA_TDA: flags |= SYMBOL_FLAG_TDA; break;
      case DATA_AREA_SDA: flags |= SYMBOL_FLAG_SDA; break;
!     default: abort ();
      }
    SYMBOL_REF_FLAGS (symbol) = flags;
  }
--- 2245,2251 ----
      case DATA_AREA_ZDA: flags |= SYMBOL_FLAG_ZDA; break;
      case DATA_AREA_TDA: flags |= SYMBOL_FLAG_TDA; break;
      case DATA_AREA_SDA: flags |= SYMBOL_FLAG_SDA; break;
!     default: gcc_unreachable ();
      }
    SYMBOL_REF_FLAGS (symbol) = flags;
  }
*************** construct_restore_jr (rtx op)
*** 2285,2296 ****
  
    /* Work out how many bytes to pop off the stack before retrieving
       registers.  */
!   if (GET_CODE (XVECEXP (op, 0, 1)) != SET)
!     abort ();
!   if (GET_CODE (SET_SRC (XVECEXP (op, 0, 1))) != PLUS)
!     abort ();
!   if (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1)) != CONST_INT)
!     abort ();
      
    stack_bytes = INTVAL (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1));
  
--- 2284,2292 ----
  
    /* Work out how many bytes to pop off the stack before retrieving
       registers.  */
!   gcc_assert (GET_CODE (XVECEXP (op, 0, 1)) == SET);
!   gcc_assert (GET_CODE (SET_SRC (XVECEXP (op, 0, 1))) == PLUS);
!   gcc_assert (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1)) == CONST_INT);
      
    stack_bytes = INTVAL (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1));
  
*************** construct_restore_jr (rtx op)
*** 2310,2321 ****
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       if (GET_CODE (vector_element) != SET)
! 	abort ();
!       if (GET_CODE (SET_DEST (vector_element)) != REG)
! 	abort ();
!       if (! register_is_ok_for_epilogue (SET_DEST (vector_element), SImode))
! 	abort ();
        
        mask |= 1 << REGNO (SET_DEST (vector_element));
      }
--- 2306,2315 ----
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       gcc_assert (GET_CODE (vector_element) == SET);
!       gcc_assert (GET_CODE (SET_DEST (vector_element)) == REG);
!       gcc_assert (register_is_ok_for_epilogue (SET_DEST (vector_element),
! 					       SImode));
        
        mask |= 1 << REGNO (SET_DEST (vector_element));
      }
*************** construct_restore_jr (rtx op)
*** 2327,2350 ****
  	break;
      }
  
!   if (first >= 32)
!     abort ();
  
    /* Discover the last register to pop.  */
    if (mask & (1 << LINK_POINTER_REGNUM))
      {
!       if (stack_bytes != 16)
! 	abort ();
        
        last = LINK_POINTER_REGNUM;
      }
    else
      {
!       if (stack_bytes != 0)
! 	abort ();
!       
!       if ((mask & (1 << 29)) == 0)
! 	abort ();
        
        last = 29;
      }
--- 2321,2339 ----
  	break;
      }
  
!   gcc_assert (first < 32);
  
    /* Discover the last register to pop.  */
    if (mask & (1 << LINK_POINTER_REGNUM))
      {
!       gcc_assert (stack_bytes == 16);
        
        last = LINK_POINTER_REGNUM;
      }
    else
      {
!       gcc_assert (!stack_bytes);
!       gcc_assert (mask & (1 << 29));
        
        last = 29;
      }
*************** construct_save_jarl (rtx op)
*** 2401,2414 ****
      }
  
    /* Paranoia.  */
!   if (GET_CODE (XVECEXP (op, 0, 0)) != SET)
!     abort ();
!   if (GET_CODE (SET_SRC (XVECEXP (op, 0, 0))) != PLUS)
!     abort ();
!   if (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 0)) != REG)
!     abort ();
!   if (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 1)) != CONST_INT)
!     abort ();
      
    /* Work out how many bytes to push onto the stack after storing the
       registers.  */
--- 2390,2399 ----
      }
  
    /* Paranoia.  */
!   gcc_assert (GET_CODE (XVECEXP (op, 0, 0)) == SET);
!   gcc_assert (GET_CODE (SET_SRC (XVECEXP (op, 0, 0))) == PLUS);
!   gcc_assert (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 0)) == REG);
!   gcc_assert (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 1)) == CONST_INT);
      
    /* Work out how many bytes to push onto the stack after storing the
       registers.  */
*************** construct_save_jarl (rtx op)
*** 2430,2441 ****
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       if (GET_CODE (vector_element) != SET)
! 	abort ();
!       if (GET_CODE (SET_SRC (vector_element)) != REG)
! 	abort ();
!       if (! register_is_ok_for_epilogue (SET_SRC (vector_element), SImode))
! 	abort ();
        
        mask |= 1 << REGNO (SET_SRC (vector_element));
      }
--- 2415,2424 ----
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       gcc_assert (GET_CODE (vector_element) == SET);
!       gcc_assert (GET_CODE (SET_SRC (vector_element)) == REG);
!       gcc_assert (register_is_ok_for_epilogue (SET_SRC (vector_element),
! 					       SImode));
        
        mask |= 1 << REGNO (SET_SRC (vector_element));
      }
*************** construct_save_jarl (rtx op)
*** 2447,2469 ****
  	break;
      }
  
!   if (first >= 32)
!     abort ();
  
    /* Discover the last register to push.  */
    if (mask & (1 << LINK_POINTER_REGNUM))
      {
!       if (stack_bytes != -16)
! 	abort ();
        
        last = LINK_POINTER_REGNUM;
      }
    else
      {
!       if (stack_bytes != 0)
! 	abort ();
!       if ((mask & (1 << 29)) == 0)
! 	abort ();
        
        last = 29;
      }
--- 2430,2448 ----
  	break;
      }
  
!   gcc_assert (first < 32);
  
    /* Discover the last register to push.  */
    if (mask & (1 << LINK_POINTER_REGNUM))
      {
!       gcc_assert (stack_bytes == -16);
        
        last = LINK_POINTER_REGNUM;
      }
    else
      {
!       gcc_assert (!stack_bytes);
!       gcc_assert (mask & (1 << 29));
        
        last = 29;
      }
*************** v850_insert_attributes (tree decl, tree 
*** 2642,2648 ****
  	  switch (v850_get_data_area (decl))
  	    {
  	    default:
! 	      abort ();
  	      
  	    case DATA_AREA_SDA:
  	      kind = ((TREE_READONLY (decl))
--- 2621,2627 ----
  	  switch (v850_get_data_area (decl))
  	    {
  	    default:
! 	      gcc_unreachable ();
  	      
  	    case DATA_AREA_SDA:
  	      kind = ((TREE_READONLY (decl))
*************** construct_dispose_instruction (rtx op)
*** 2711,2722 ****
  
    /* Work out how many bytes to pop off the
       stack before retrieving registers.  */
!   if (GET_CODE (XVECEXP (op, 0, 1)) != SET)
!     abort ();
!   if (GET_CODE (SET_SRC (XVECEXP (op, 0, 1))) != PLUS)
!     abort ();
!   if (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1)) != CONST_INT)
!     abort ();
      
    stack_bytes = INTVAL (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1));
  
--- 2690,2698 ----
  
    /* Work out how many bytes to pop off the
       stack before retrieving registers.  */
!   gcc_assert (GET_CODE (XVECEXP (op, 0, 1)) == SET);
!   gcc_assert (GET_CODE (SET_SRC (XVECEXP (op, 0, 1))) == PLUS);
!   gcc_assert (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1)) == CONST_INT);
      
    stack_bytes = INTVAL (XEXP (SET_SRC (XVECEXP (op, 0, 1)), 1));
  
*************** construct_dispose_instruction (rtx op)
*** 2738,2749 ****
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       if (GET_CODE (vector_element) != SET)
! 	abort ();
!       if (GET_CODE (SET_DEST (vector_element)) != REG)
! 	abort ();
!       if (! register_is_ok_for_epilogue (SET_DEST (vector_element), SImode))
! 	abort ();
  
        if (REGNO (SET_DEST (vector_element)) == 2)
  	use_callt = 1;
--- 2714,2723 ----
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       gcc_assert (GET_CODE (vector_element) == SET);
!       gcc_assert (GET_CODE (SET_DEST (vector_element)) == REG);
!       gcc_assert (register_is_ok_for_epilogue (SET_DEST (vector_element),
! 					       SImode));
  
        if (REGNO (SET_DEST (vector_element)) == 2)
  	use_callt = 1;
*************** construct_prepare_instruction (rtx op)
*** 2837,2848 ****
  
    /* Work out how many bytes to push onto
       the stack after storing the registers.  */
!   if (GET_CODE (XVECEXP (op, 0, 0)) != SET)
!     abort ();
!   if (GET_CODE (SET_SRC (XVECEXP (op, 0, 0))) != PLUS)
!     abort ();
!   if (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 1)) != CONST_INT)
!     abort ();
      
    stack_bytes = INTVAL (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 1));
  
--- 2811,2819 ----
  
    /* Work out how many bytes to push onto
       the stack after storing the registers.  */
!   gcc_assert (GET_CODE (XVECEXP (op, 0, 0)) == SET);
!   gcc_assert (GET_CODE (SET_SRC (XVECEXP (op, 0, 0))) == PLUS);
!   gcc_assert (GET_CODE (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 1)) == CONST_INT);
      
    stack_bytes = INTVAL (XEXP (SET_SRC (XVECEXP (op, 0, 0)), 1));
  
*************** construct_prepare_instruction (rtx op)
*** 2863,2874 ****
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       if (GET_CODE (vector_element) != SET)
! 	abort ();
!       if (GET_CODE (SET_SRC (vector_element)) != REG)
! 	abort ();
!       if (! register_is_ok_for_epilogue (SET_SRC (vector_element), SImode))
! 	abort ();
  
        if (REGNO (SET_SRC (vector_element)) == 2)
  	use_callt = 1;
--- 2834,2843 ----
      {
        rtx vector_element = XVECEXP (op, 0, i);
        
!       gcc_assert (GET_CODE (vector_element) == SET);
!       gcc_assert (GET_CODE (SET_SRC (vector_element)) == REG);
!       gcc_assert (register_is_ok_for_epilogue (SET_SRC (vector_element),
! 					       SImode));
  
        if (REGNO (SET_SRC (vector_element)) == 2)
  	use_callt = 1;
Index: config/v850/v850.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/v850/v850.h,v
retrieving revision 1.103
diff -c -3 -p -r1.103 v850.h
*** config/v850/v850.h	6 Apr 2005 09:40:41 -0000	1.103
--- config/v850/v850.h	7 May 2005 10:56:55 -0000
*************** enum reg_class
*** 554,560 ****
    else if ((FROM) == ARG_POINTER_REGNUM)				\
     (OFFSET) = compute_frame_size (get_frame_size (), (long *)0);	\
    else									\
!     abort ();								\
  }
  
  /* Keep the stack pointer constant throughout the function.  */
--- 554,560 ----
    else if ((FROM) == ARG_POINTER_REGNUM)				\
     (OFFSET) = compute_frame_size (get_frame_size (), (long *)0);	\
    else									\
!     gcc_unreachable ();							\
  }
  
  /* Keep the stack pointer constant throughout the function.  */
Index: config/v850/v850.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/v850/v850.md,v
retrieving revision 1.32
diff -c -3 -p -r1.32 v850.md
*** config/v850/v850.md	21 Mar 2005 18:01:29 -0000	1.32
--- config/v850/v850.md	7 May 2005 10:56:57 -0000
***************
*** 876,881 ****
--- 876,882 ----
    "
  {
    rtx insn = get_last_insn_anywhere ();
+   rtx src;
  
    if (   (GET_CODE (operands[2]) == CONST_INT
         && GET_CODE (operands[3]) == CONST_INT))
***************
*** 903,930 ****
        if (GET_CODE (operands[3]) != REG)
  	operands[3] = copy_to_mode_reg (SImode, operands[3]);
      }
!   if (GET_CODE (insn) == INSN
!       && GET_CODE (PATTERN (insn)) == SET
!       && SET_DEST (PATTERN (insn)) == cc0_rtx)
      {
!       rtx src = SET_SRC (PATTERN (insn));
  
!       if (GET_CODE (src) == COMPARE)
! 	{
! 	  operands[4] = XEXP (src, 0);
! 	  operands[5] = XEXP (src, 1);
! 	}
!       else if (GET_CODE (src) == REG
!                || GET_CODE (src) == SUBREG)
! 	{
! 	  operands[4] = src;
! 	  operands[5] = const0_rtx;
! 	}
!       else
! 	abort ();
      }
-   else
-     abort ();
  }")
  
  ;; ??? Clobbering the condition codes is overkill.
--- 904,931 ----
        if (GET_CODE (operands[3]) != REG)
  	operands[3] = copy_to_mode_reg (SImode, operands[3]);
      }
!   gcc_assert (GET_CODE (insn) == INSN
! 	      && GET_CODE (PATTERN (insn)) == SET
! 	      && SET_DEST (PATTERN (insn)) == cc0_rtx);
!     
!   src = SET_SRC (PATTERN (insn));
! 
!   switch (GET_CODE (src))
      {
!     case COMPARE:
!       operands[4] = XEXP (src, 0);
!       operands[5] = XEXP (src, 1);
!       break;
! 
!     case REG:
!     case SUBREG:
!       operands[4] = src;
!       operands[5] = const0_rtx;
!       break;
  
!     default:
!       gcc_unreachable ();
      }
  }")
  
  ;; ??? Clobbering the condition codes is overkill.
***************
*** 1002,1008 ****
  		(ashift:SI (match_operand:SI 2 "register_operand" "")
  			   (const_int 1))))]
    "TARGET_V850E"
!   "* abort ();")
  
  (define_insn "*sasf_2"
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 1003,1009 ----
  		(ashift:SI (match_operand:SI 2 "register_operand" "")
  			   (const_int 1))))]
    "TARGET_V850E"
!   "* gcc_unreachable ();")
  
  (define_insn "*sasf_2"
    [(set (match_operand:SI 0 "register_operand" "=r")

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