/* Process machine description and calculate constant conditions.
- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
#include "hashtab.h"
#include "gensupport.h"
-/* so we can include except.h in the generated file */
+/* so we can include except.h in the generated file. */
static int saw_eh_return;
static htab_t condition_table;
-static void add_condition PARAMS ((const char *));
-static void write_header PARAMS ((void));
-static void write_conditions PARAMS ((void));
-static int write_one_condition PARAMS ((PTR *, PTR));
-
-extern int main PARAMS ((int, char **));
+static void add_condition (const char *);
+static void write_header (void);
+static void write_conditions (void);
+static int write_one_condition (void **, void *);
/* Record the C test expression EXPR in the condition_table.
Duplicates clobber previous entries, which leaks memory, but
we don't care for this application. */
static void
-add_condition (expr)
- const char *expr;
+add_condition (const char *expr)
{
struct c_test *test;
if (expr[0] == 0)
return;
- test = (struct c_test *) xmalloc (sizeof (struct c_test));
+ test = XNEW (struct c_test);
test->expr = expr;
*(htab_find_slot (condition_table, test, INSERT)) = test;
/* Generate the header for insn-conditions.c. */
static void
-write_header ()
+write_header (void)
{
puts ("\
/* Generated automatically by the program `genconditions' from the target\n\
/* Dummy external declarations. */\n\
extern rtx insn;\n\
extern rtx ins1;\n\
-extern rtx operands[];\n\
-extern int next_insn_tests_no_inequality PARAMS ((rtx));\n");
+extern rtx operands[];\n");
puts ("\
/* If we don't have __builtin_constant_p, or it's not acceptable in\n\
MAYBE_EVAL (! optimize_size && ! TARGET_READ_MODIFY_WRITE) }, */
static int
-write_one_condition (slot, dummy)
- PTR *slot;
- PTR dummy ATTRIBUTE_UNUSED;
+write_one_condition (void **slot, void * ARG_UNUSED (dummy))
{
const struct c_test *test = * (const struct c_test **) slot;
const char *p;
/* Write out the complete conditions table, its size, and a flag
indicating that gensupport.c can now do insn elision. */
static void
-write_conditions ()
+write_conditions (void)
{
puts ("\
/* This table lists each condition found in the machine description.\n\
}
int
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
rtx desc;
int pattern_lineno; /* not used */
progname = "genconditions";
- if (argc <= 1)
- fatal ("No input file name.");
-
- if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
+ if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
condition_table = htab_create (1000, hash_c_test, cmp_c_test, NULL);