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]

Re: [PATCH] VAX: Use gcc_{assert,unreachable}()


Jan-Benedict Glaw wrote:
On Tue, Apr 26, 2005 at 09:38:56PM +0200, Jan-Benedict Glaw wrote:


This patch moves over the VAX-specific code to use gcc_unreachable()
and gcc_assert() instead of abort().

coincidentally, I'd also got an (untested) patch. Feel free to use this as a starting point. It doesn't use trailing 'else gcc_unreachable ()', turning them into switches or pushing an assert up into the previous else if clause.

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

Index: config/vax/vax.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/vax/vax.c,v
retrieving revision 1.60
diff -c -3 -p -r1.60 vax.c
*** config/vax/vax.c	7 Apr 2005 21:44:57 -0000	1.60
--- config/vax/vax.c	18 Apr 2005 08:37:19 -0000
*************** print_operand_address (FILE * file, regi
*** 268,274 ****
  	  addr = XEXP (addr, 1);
  	}
        else
! 	abort ();
  
        if (GET_CODE (addr) == REG)
  	{
--- 268,274 ----
  	  addr = XEXP (addr, 1);
  	}
        else
! 	gcc_unreachable ();
  
        if (GET_CODE (addr) == REG)
  	{
*************** print_operand_address (FILE * file, regi
*** 279,286 ****
  	}
        else if (GET_CODE (addr) == MULT)
  	ireg = addr;
!       else if (GET_CODE (addr) == PLUS)
  	{
  	  if (CONSTANT_ADDRESS_P (XEXP (addr, 0))
  	      || GET_CODE (XEXP (addr, 0)) == MEM)
  	    {
--- 279,287 ----
  	}
        else if (GET_CODE (addr) == MULT)
  	ireg = addr;
!       else
  	{
+ 	  gcc_assert (GET_CODE (addr) == PLUS);
  	  if (CONSTANT_ADDRESS_P (XEXP (addr, 0))
  	      || GET_CODE (XEXP (addr, 0)) == MEM)
  	    {
*************** print_operand_address (FILE * file, regi
*** 288,297 ****
  		{
  		  if (GET_CODE (offset) == CONST_INT)
  		    offset = plus_constant (XEXP (addr, 0), INTVAL (offset));
- 		  else if (GET_CODE (XEXP (addr, 0)) == CONST_INT)
- 		    offset = plus_constant (offset, INTVAL (XEXP (addr, 0)));
  		  else
! 		    abort ();
  		}
  	      offset = XEXP (addr, 0);
  	    }
--- 289,299 ----
  		{
  		  if (GET_CODE (offset) == CONST_INT)
  		    offset = plus_constant (XEXP (addr, 0), INTVAL (offset));
  		  else
! 		    {
! 		      gcc_assert (GET_CODE (XEXP (addr, 0)) == CONST_INT);
! 		      offset = plus_constant (offset, INTVAL (XEXP (addr, 0)));
! 		    }
  		}
  	      offset = XEXP (addr, 0);
  	    }
*************** print_operand_address (FILE * file, regi
*** 302,315 ****
  	      else
  		reg1 = XEXP (addr, 0);
  	    }
! 	  else if (GET_CODE (XEXP (addr, 0)) == MULT)
  	    {
! 	      if (ireg)
! 		abort ();
  	      ireg = XEXP (addr, 0);
  	    }
- 	  else
- 	    abort ();
  
  	  if (CONSTANT_ADDRESS_P (XEXP (addr, 1))
  	      || GET_CODE (XEXP (addr, 1)) == MEM)
--- 304,315 ----
  	      else
  		reg1 = XEXP (addr, 0);
  	    }
! 	  else
  	    {
! 	      gcc_assert (GET_CODE (XEXP (addr, 0)) == MULT);
! 	      gcc_assert (!ireg);
  	      ireg = XEXP (addr, 0);
  	    }
  
  	  if (CONSTANT_ADDRESS_P (XEXP (addr, 1))
  	      || GET_CODE (XEXP (addr, 1)) == MEM)
*************** print_operand_address (FILE * file, regi
*** 318,327 ****
  		{
  		  if (GET_CODE (offset) == CONST_INT)
  		    offset = plus_constant (XEXP (addr, 1), INTVAL (offset));
- 		  else if (GET_CODE (XEXP (addr, 1)) == CONST_INT)
- 		    offset = plus_constant (offset, INTVAL (XEXP (addr, 1)));
  		  else
! 		    abort ();
  		}
  	      offset = XEXP (addr, 1);
  	    }
--- 318,328 ----
  		{
  		  if (GET_CODE (offset) == CONST_INT)
  		    offset = plus_constant (XEXP (addr, 1), INTVAL (offset));
  		  else
! 		    {
! 		      gcc_assert (GET_CODE (XEXP (addr, 1)) == CONST_INT);
! 		      offset = plus_constant (offset, INTVAL (XEXP (addr, 1)));
! 		    }
  		}
  	      offset = XEXP (addr, 1);
  	    }
*************** print_operand_address (FILE * file, regi
*** 332,356 ****
  	      else
  		reg1 = XEXP (addr, 1);
  	    }
! 	  else if (GET_CODE (XEXP (addr, 1)) == MULT)
  	    {
! 	      if (ireg)
! 		abort ();
  	      ireg = XEXP (addr, 1);
  	    }
- 	  else
- 	    abort ();
  	}
-       else
- 	abort ();
  
        /* If REG1 is nonzero, figure out if it is a base or index register.  */
        if (reg1)
  	{
  	  if (breg != 0 || (offset && GET_CODE (offset) == MEM))
  	    {
! 	      if (ireg)
! 		abort ();
  	      ireg = reg1;
  	    }
  	  else
--- 333,352 ----
  	      else
  		reg1 = XEXP (addr, 1);
  	    }
! 	  else
  	    {
! 	      gcc_assert (GET_CODE (XEXP (addr, 1)) == MULT);
! 	      gcc_assert (!ireg);
  	      ireg = XEXP (addr, 1);
  	    }
  	}
  
        /* If REG1 is nonzero, figure out if it is a base or index register.  */
        if (reg1)
  	{
  	  if (breg != 0 || (offset && GET_CODE (offset) == MEM))
  	    {
! 	      gcc_assert (!ireg);
  	      ireg = reg1;
  	    }
  	  else
*************** print_operand_address (FILE * file, regi
*** 367,374 ****
  	{
  	  if (GET_CODE (ireg) == MULT)
  	    ireg = XEXP (ireg, 0);
! 	  if (GET_CODE (ireg) != REG)
! 	    abort ();
  	  fprintf (file, "[%s]", reg_names[REGNO (ireg)]);
  	}
        break;
--- 363,369 ----
  	{
  	  if (GET_CODE (ireg) == MULT)
  	    ireg = XEXP (ireg, 0);
! 	  gcc_assert (GET_CODE (ireg) == REG);
  	  fprintf (file, "[%s]", reg_names[REGNO (ireg)]);
  	}
        break;
*************** rev_cond_name (rtx op)
*** 405,411 ****
        return "lssu";
  
      default:
!       abort ();
      }
  }
  
--- 400,406 ----
        return "lssu";
  
      default:
!       gcc_unreachable ();
      }
  }
  
*************** vax_float_literal(register rtx c)
*** 431,442 ****
    for (i = 0; i < 7; i++)
      {
        int x = 1 << i;
        REAL_VALUE_FROM_INT (s, x, 0, mode);
  
        if (REAL_VALUES_EQUAL (r, s))
  	return 1;
!       if (!exact_real_inverse (mode, &s))
! 	abort ();
        if (REAL_VALUES_EQUAL (r, s))
  	return 1;
      }
--- 426,438 ----
    for (i = 0; i < 7; i++)
      {
        int x = 1 << i;
+       bool ok;
        REAL_VALUE_FROM_INT (s, x, 0, mode);
  
        if (REAL_VALUES_EQUAL (r, s))
  	return 1;
!       ok = exact_real_inverse (mode, &s);
!       gcc_assert (ok);
        if (REAL_VALUES_EQUAL (r, s))
  	return 1;
      }

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