/* RTL utility routines.
Copyright (C) 1987, 1988, 1991, 1994, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
+Software Foundation; either version 3, or (at your option) any later
version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
for more details.
You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING. If not, write to the Free
-Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA. */
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
/* This file is compiled twice: once for the generator programs
once for the compiler. */
const unsigned char rtx_code_size[NUM_RTX_CODE] = {
#define DEF_RTL_EXPR(ENUM, NAME, FORMAT, CLASS) \
- ((ENUM) == CONST_INT || (ENUM) == CONST_DOUBLE \
+ ((ENUM) == CONST_INT || (ENUM) == CONST_DOUBLE || (ENUM) == CONST_FIXED\
? RTX_HDR_SIZE + (sizeof FORMAT - 1) * sizeof (HOST_WIDE_INT) \
: RTX_HDR_SIZE + (sizeof FORMAT - 1) * sizeof (rtunion)),
/* Return the number of bytes occupied by rtx value X. */
unsigned int
-rtx_size (rtx x)
+rtx_size (const_rtx x)
{
if (GET_CODE (x) == SYMBOL_REF && SYMBOL_REF_HAS_BLOCK_INFO_P (x))
return RTX_HDR_SIZE + sizeof (struct block_symbol);
/* Return true if ORIG is a sharable CONST. */
bool
-shared_const_p (rtx orig)
+shared_const_p (const_rtx orig)
{
gcc_assert (GET_CODE (orig) == CONST);
case REG:
case CONST_INT:
case CONST_DOUBLE:
+ case CONST_FIXED:
case CONST_VECTOR:
case SYMBOL_REF:
case CODE_LABEL:
/* Create a new copy of an rtx. Only copy just one level. */
rtx
-shallow_copy_rtx_stat (rtx orig MEM_STAT_DECL)
+shallow_copy_rtx_stat (const_rtx orig MEM_STAT_DECL)
{
- unsigned int size;
- rtx copy;
-
- size = rtx_size (orig);
- copy = (rtx) ggc_alloc_zone_pass_stat (size, &rtl_zone);
- memcpy (copy, orig, size);
- return copy;
+ const unsigned int size = rtx_size (orig);
+ rtx const copy = (rtx) ggc_alloc_zone_pass_stat (size, &rtl_zone);
+ return memcpy (copy, orig, size);
}
\f
/* Nonzero when we are generating CONCATs. */
This is the Lisp function EQUAL for rtx arguments. */
int
-rtx_equal_p (rtx x, rtx y)
+rtx_equal_p (const_rtx x, const_rtx y)
{
int i;
int j;
case SCRATCH:
case CONST_DOUBLE:
case CONST_INT:
+ case CONST_FIXED:
return 0;
default:
\f
#if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007)
void
-rtl_check_failed_bounds (rtx r, int n, const char *file, int line,
+rtl_check_failed_bounds (const_rtx r, int n, const char *file, int line,
const char *func)
{
internal_error
}
void
-rtl_check_failed_type1 (rtx r, int n, int c1, const char *file, int line,
+rtl_check_failed_type1 (const_rtx r, int n, int c1, const char *file, int line,
const char *func)
{
internal_error
}
void
-rtl_check_failed_type2 (rtx r, int n, int c1, int c2, const char *file,
+rtl_check_failed_type2 (const_rtx r, int n, int c1, int c2, const char *file,
int line, const char *func)
{
internal_error
}
void
-rtl_check_failed_code1 (rtx r, enum rtx_code code, const char *file,
+rtl_check_failed_code1 (const_rtx r, enum rtx_code code, const char *file,
int line, const char *func)
{
internal_error ("RTL check: expected code '%s', have '%s' in %s, at %s:%d",
}
void
-rtl_check_failed_code2 (rtx r, enum rtx_code code1, enum rtx_code code2,
+rtl_check_failed_code2 (const_rtx r, enum rtx_code code1, enum rtx_code code2,
const char *file, int line, const char *func)
{
internal_error
}
void
-rtl_check_failed_code_mode (rtx r, enum rtx_code code, enum machine_mode mode,
+rtl_check_failed_code_mode (const_rtx r, enum rtx_code code, enum machine_mode mode,
bool not_mode, const char *file, int line,
const char *func)
{
/* XXX Maybe print the vector? */
void
-rtvec_check_failed_bounds (rtvec r, int n, const char *file, int line,
+rtvec_check_failed_bounds (const_rtvec r, int n, const char *file, int line,
const char *func)
{
internal_error
#if defined ENABLE_RTL_FLAG_CHECKING
void
-rtl_check_failed_flag (const char *name, rtx r, const char *file,
+rtl_check_failed_flag (const char *name, const_rtx r, const char *file,
int line, const char *func)
{
internal_error