]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/genconstants.c
configure.ac (tm_include_list): Add insn-constants.h.
[thirdparty/gcc.git] / gcc / genconstants.c
CommitLineData
1b0c37d7
ZW
1/* Generate from machine description:
2 a series of #define statements, one for each constant named in
3 a (define_constants ...) pattern.
4
9dcd6f09
NC
5 Copyright (C) 1987, 1991, 1995, 1998, 1999, 2000, 2001, 2003, 2004,
6 2007 Free Software Foundation, Inc.
1b0c37d7 7
40803cd5 8This file is part of GCC.
1b0c37d7 9
40803cd5 10GCC is free software; you can redistribute it and/or modify
1b0c37d7 11it under the terms of the GNU General Public License as published by
9dcd6f09 12the Free Software Foundation; either version 3, or (at your option)
1b0c37d7
ZW
13any later version.
14
40803cd5 15GCC is distributed in the hope that it will be useful,
1b0c37d7
ZW
16but WITHOUT ANY WARRANTY; without even the implied warranty of
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18GNU General Public License for more details.
19
20You should have received a copy of the GNU General Public License
9dcd6f09
NC
21along with GCC; see the file COPYING3. If not see
22<http://www.gnu.org/licenses/>. */
1b0c37d7
ZW
23
24/* This program does not use gensupport.c because it does not need to
25 look at insn patterns, only (define_constants), and we want to
26 minimize dependencies. */
27
4977bab6 28#include "bconfig.h"
1b0c37d7 29#include "system.h"
4977bab6 30#include "coretypes.h"
1b0c37d7 31#include "errors.h"
9f418533 32#include "read-md.h"
1b0c37d7 33
1b0c37d7
ZW
34/* Called via traverse_md_constants; emit a #define for
35 the current constant definition. */
36
37static int
3d7aafde 38print_md_constant (void **slot, void *info)
1b0c37d7 39{
28dab132
BI
40 struct md_constant *def = (struct md_constant *) *slot;
41 FILE *file = (FILE *) info;
1b0c37d7
ZW
42
43 fprintf (file, "#define %s %s\n", def->name, def->value);
44 return 1;
45}
46
47int
3d7aafde 48main (int argc, char **argv)
1b0c37d7 49{
1b0c37d7
ZW
50 progname = "genconstants";
51
9b68b6ea 52 if (!read_md_files (argc, argv, NULL, NULL))
1b0c37d7
ZW
53 return (FATAL_EXIT_CODE);
54
f9942f4e
ZW
55 /* Initializing the MD reader has the side effect of loading up
56 the constants table that we wish to scan. */
1b0c37d7
ZW
57
58 puts ("/* Generated automatically by the program `genconstants'");
59 puts (" from the machine description file `md'. */\n");
60 puts ("#ifndef GCC_INSN_CONSTANTS_H");
61 puts ("#define GCC_INSN_CONSTANTS_H\n");
62
63 traverse_md_constants (print_md_constant, stdout);
64
65 puts ("\n#endif /* GCC_INSN_CONSTANTS_H */");
66
67 if (ferror (stdout) || fflush (stdout) || fclose (stdout))
68 return FATAL_EXIT_CODE;
69
70 return SUCCESS_EXIT_CODE;
71}