- 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];
+ } predicate[] = {
+ PREDICATE_CODES
+ };
+ size_t i;
+
+ putc ('\n', stdout);
+ puts ("struct rtx_def;\n#include \"machmode.h\"\n");
+ for (i = 0; i < sizeof predicate / sizeof *predicate; i++)
+ printf ("extern int %s PARAMS ((struct rtx_def *, enum machine_mode));\n",
+ predicate[i].name);
+ putc ('\n', stdout);
+#endif
+}
+
extern int main PARAMS ((int, char **));
int
if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
- printf ("/* Generated automatically by the program `gencodes'\n\
-from the machine description file `md'. */\n\n");
-
- printf ("#ifndef MAX_INSN_CODE\n\n");
+ puts ("/* Generated automatically by the program `gencodes'");
+ puts (" from the machine description file `md'. */\n");
+ puts ("#ifndef GCC_INSN_CODES_H");
+ puts ("#define GCC_INSN_CODES_H\n");
/* Read the machine description. */
traverse_md_constants (print_md_constant, stdout);
- printf ("\n#endif /* MAX_INSN_CODE */\n");
+ output_predicate_decls ();
+
+ puts("\n#endif /* GCC_INSN_CODES_H */");
+
+ if (ferror (stdout) || fflush (stdout) || fclose (stdout))
+ return FATAL_EXIT_CODE;
- fflush (stdout);
- return (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
+ return SUCCESS_EXIT_CODE;
}
/* Define this so we can link with print-rtl.o to get debug_rtx function. */