Mercurial > hg > CbC > CbC_gcc
comparison gcc/gencodes.c @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | f6334be47118 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Generate from machine description: | |
2 - some macros CODE_FOR_... giving the insn_code_number value | |
3 for each of the defined standard insn names. | |
4 Copyright (C) 1987, 1991, 1995, 1998, 1999, 2000, 2001, 2003, | |
5 2004, 2007 Free Software Foundation, Inc. | |
6 | |
7 This file is part of GCC. | |
8 | |
9 GCC is free software; you can redistribute it and/or modify it under | |
10 the terms of the GNU General Public License as published by the Free | |
11 Software Foundation; either version 3, or (at your option) any later | |
12 version. | |
13 | |
14 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
15 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
17 for more details. | |
18 | |
19 You should have received a copy of the GNU General Public License | |
20 along with GCC; see the file COPYING3. If not see | |
21 <http://www.gnu.org/licenses/>. */ | |
22 | |
23 | |
24 #include "bconfig.h" | |
25 #include "system.h" | |
26 #include "coretypes.h" | |
27 #include "tm.h" | |
28 #include "rtl.h" | |
29 #include "errors.h" | |
30 #include "gensupport.h" | |
31 | |
32 static void | |
33 gen_insn (rtx insn, int code) | |
34 { | |
35 const char *name = XSTR (insn, 0); | |
36 int truth = maybe_eval_c_test (XSTR (insn, 2)); | |
37 | |
38 /* Don't mention instructions whose names are the null string | |
39 or begin with '*'. They are in the machine description just | |
40 to be recognized. */ | |
41 if (name[0] != 0 && name[0] != '*') | |
42 { | |
43 if (truth == 0) | |
44 printf ("#define CODE_FOR_%s CODE_FOR_nothing\n", name); | |
45 else | |
46 printf (" CODE_FOR_%s = %d,\n", name, code); | |
47 } | |
48 } | |
49 | |
50 int | |
51 main (int argc, char **argv) | |
52 { | |
53 rtx desc; | |
54 | |
55 progname = "gencodes"; | |
56 | |
57 /* We need to see all the possibilities. Elided insns may have | |
58 direct references to CODE_FOR_xxx in C code. */ | |
59 insn_elision = 0; | |
60 | |
61 if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE) | |
62 return (FATAL_EXIT_CODE); | |
63 | |
64 puts ("\ | |
65 /* Generated automatically by the program `gencodes'\n\ | |
66 from the machine description file `md'. */\n\ | |
67 \n\ | |
68 #ifndef GCC_INSN_CODES_H\n\ | |
69 #define GCC_INSN_CODES_H\n\ | |
70 \n\ | |
71 enum insn_code {"); | |
72 | |
73 /* Read the machine description. */ | |
74 | |
75 while (1) | |
76 { | |
77 int line_no; | |
78 int insn_code_number; | |
79 | |
80 desc = read_md_rtx (&line_no, &insn_code_number); | |
81 if (desc == NULL) | |
82 break; | |
83 | |
84 if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND) | |
85 gen_insn (desc, insn_code_number); | |
86 } | |
87 | |
88 puts (" CODE_FOR_nothing\n\ | |
89 };\n\ | |
90 \n\ | |
91 #endif /* GCC_INSN_CODES_H */"); | |
92 | |
93 if (ferror (stdout) || fflush (stdout) || fclose (stdout)) | |
94 return FATAL_EXIT_CODE; | |
95 | |
96 return SUCCESS_EXIT_CODE; | |
97 } |