gencodes.c (output_predicate_decls): New function.

* gencodes.c (output_predicate_decls): New function.
(main): Call it.
* machmode.h (GET_MODE_MASK): Arrange for it to be defined
even if it is not the first time machmode.h is #included.
* config/sh/sh.c (fpul_operand): Declare MODE argument.
* tm.texi (PREDICATE_CODES): Document predicate declarations.
* gcc.texi (Copyright): Added 2001.

From-SVN: r38673
This commit is contained in:
Alexandre Oliva 2001-01-03 21:13:29 +00:00 committed by Alexandre Oliva
parent 03dc032560
commit 975d393ab8
6 changed files with 55 additions and 7 deletions

View File

@ -1,3 +1,13 @@
2001-01-03 Alexandre Oliva <aoliva@redhat.com>
* gencodes.c (output_predicate_decls): New function.
(main): Call it.
* machmode.h (GET_MODE_MASK): Arrange for it to be defined
even if it is not the first time machmode.h is #included.
* config/sh/sh.c (fpul_operand): Declare MODE argument.
* tm.texi (PREDICATE_CODES): Document predicate declarations.
* gcc.texi (Copyright): Added 2001.
2001-01-03 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (c_common_lang_init): New function. Warn if format

View File

@ -1,5 +1,5 @@
/* Output routines for GCC for Hitachi Super-H.
Copyright (C) 1993, 1994, 1995, 1997, 1997, 1998, 1999, 2000
Copyright (C) 1993, 1994, 1995, 1997, 1997, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com).
Improved by Jim Wilson (wilson@cygnus.com).
@ -4793,6 +4793,7 @@ fpscr_operand (op, mode)
int
fpul_operand (op, mode)
rtx op;
enum machine_mode mode;
{
return (GET_CODE (op) == REG
&& (REGNO (op) == FPUL_REG || REGNO (op) >= FIRST_PSEUDO_REGISTER)

View File

@ -100,7 +100,8 @@ Published by the Free Software Foundation@*
59 Temple Place - Suite 330@*
Boston, MA 02111-1307 USA
@sp 1
Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001 Free Software Foundation, Inc.
@sp 1
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice

View File

@ -2,7 +2,7 @@
- some macros CODE_FOR_... giving the insn_code_number value
for each of the defined standard insn names.
Copyright (C) 1987, 1991, 1995, 1998,
1999, 2000 Free Software Foundation, Inc.
1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -32,6 +32,7 @@ Boston, MA 02111-1307, USA. */
static int insn_code_number;
static void gen_insn PARAMS ((rtx));
static void output_predicate_decls PARAMS ((void));
static int print_md_constant PARAMS ((void **, void *));
static void
@ -46,6 +47,30 @@ gen_insn (insn)
insn_code_number);
}
/* Print out declarations for all predicates mentioned in
PREDICATE_CODES. */
static void
output_predicate_decls ()
{
#ifdef PREDICATE_CODES
static struct {
const char *name;
RTX_CODE codes[NUM_RTX_CODE];
} *p, predicate[] = {
PREDICATE_CODES
{NULL, {}}
};
putc ('\n', stdout);
puts ("struct rtx_def;\n#include \"machmode.h\"\n");
for (p = predicate; p->name; p++)
printf ("extern int %s PARAMS ((struct rtx_def *, enum machine_mode));\n",
p->name);
putc ('\n', stdout);
#endif
}
extern int main PARAMS ((int, char **));
int
@ -91,6 +116,8 @@ from the machine description file `md'. */\n\n");
traverse_md_constants (print_md_constant, stdout);
output_predicate_decls ();
printf ("\n#endif /* MAX_INSN_CODE */\n");
fflush (stdout);

View File

@ -1,5 +1,5 @@
/* Machine mode definitions for GNU C-Compiler; included by rtl.h and tree.h.
Copyright (C) 1991, 1993, 1994, 1996, 1998, 1999, 2000
Copyright (C) 1991, 1993, 1994, 1996, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
This file is part of GNU CC.
@ -96,7 +96,9 @@ extern const unsigned int mode_unit_size[];
extern const unsigned int mode_bitsize[];
#define GET_MODE_BITSIZE(MODE) (mode_bitsize[(int) (MODE)])
#ifdef HOST_WIDE_INT
#endif /* not HAVE_MACHINE_MODES */
#if defined HOST_WIDE_INT && ! defined GET_MODE_MASK
/* Get a bitmask containing 1 for all bits in a word
that fit within mode MODE. */
@ -105,7 +107,10 @@ extern const unsigned HOST_WIDE_INT mode_mask_array[];
#define GET_MODE_MASK(MODE) mode_mask_array[(int) (MODE)]
#endif /* HOST_WIDE_INT */
#endif /* defined (HOST_WIDE_INT) && ! defined GET_MODE_MASK */
#if ! defined GET_MODE_WIDER_MODE || ! defined GET_MODE_ALIGNMENT \
|| ! defined GET_CLASS_NARROWEST_MODE
/* Get the next wider natural mode (eg, QI -> HI -> SI -> DI -> TI). */
@ -153,4 +158,5 @@ extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
#endif /* not HAVE_MACHINE_MODES */
#endif /* ! defined GET_MODE_WIDER_MODE || ! defined GET_MODE_ALIGNMENT
|| ! defined GET_CLASS_NARROWEST_MODE */

View File

@ -7576,6 +7576,9 @@ thus speeding up the compiler. The most important predicates to include
in the list specified by this macro are those used in the most insn
patterns.
For each predicate function named in @var{PREDICATE_CODES}, a
declaration will be generated in @file{insn-codes.h}.
@item SPECIAL_MODE_PREDICATES
@findex SPECIAL_MODE_PREDICATES
Define this if you have special predicates that know special things