* 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
+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
/* 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).
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)
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
- 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.
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
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
traverse_md_constants (print_md_constant, stdout);
+ output_predicate_decls ();
+
printf ("\n#endif /* MAX_INSN_CODE */\n");
fflush (stdout);
/* 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.
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. */
#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). */
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 */
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