This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] VAX: Use gcc_{assert,unreachable}()
- From: Nathan Sidwell <nathan at codesourcery dot com>
- To: Jan-Benedict Glaw <jbglaw at microdata-pos dot de>, Matt Thomas <matt at 3am-software dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 27 Apr 2005 09:54:08 +0100
- Subject: Re: [PATCH] VAX: Use gcc_{assert,unreachable}()
- Organization: CodeSourcery LLC
- References: <20050426213856.C24280@microdata-pos.de> <20050427090831.D27409@microdata-pos.de>
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;
}