Mercurial > hg > CbC > CbC_gcc
annotate gcc/gencodes.c @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
rev | line source |
---|---|
0 | 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. | |
145 | 4 Copyright (C) 1987-2020 Free Software Foundation, Inc. |
0 | 5 |
6 This file is part of GCC. | |
7 | |
8 GCC is free software; you can redistribute it and/or modify it under | |
9 the terms of the GNU General Public License as published by the Free | |
10 Software Foundation; either version 3, or (at your option) any later | |
11 version. | |
12 | |
13 GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with GCC; see the file COPYING3. If not see | |
20 <http://www.gnu.org/licenses/>. */ | |
21 | |
22 | |
23 #include "bconfig.h" | |
24 #include "system.h" | |
25 #include "coretypes.h" | |
26 #include "tm.h" | |
27 #include "rtl.h" | |
28 #include "errors.h" | |
29 #include "gensupport.h" | |
30 | |
31 static void | |
111 | 32 gen_insn (md_rtx_info *info) |
0 | 33 { |
111 | 34 const char *name = XSTR (info->def, 0); |
35 int truth = maybe_eval_c_test (XSTR (info->def, 2)); | |
0 | 36 |
37 /* Don't mention instructions whose names are the null string | |
38 or begin with '*'. They are in the machine description just | |
39 to be recognized. */ | |
40 if (name[0] != 0 && name[0] != '*') | |
41 { | |
42 if (truth == 0) | |
111 | 43 printf (",\n CODE_FOR_%s = CODE_FOR_nothing", name); |
0 | 44 else |
111 | 45 printf (",\n CODE_FOR_%s = %d", name, info->index); |
0 | 46 } |
47 } | |
48 | |
49 int | |
111 | 50 main (int argc, const char **argv) |
0 | 51 { |
52 progname = "gencodes"; | |
53 | |
54 /* We need to see all the possibilities. Elided insns may have | |
55 direct references to CODE_FOR_xxx in C code. */ | |
56 insn_elision = 0; | |
57 | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
58 if (!init_rtx_reader_args (argc, argv)) |
0 | 59 return (FATAL_EXIT_CODE); |
60 | |
111 | 61 printf ("\ |
0 | 62 /* Generated automatically by the program `gencodes'\n\ |
63 from the machine description file `md'. */\n\ | |
64 \n\ | |
65 #ifndef GCC_INSN_CODES_H\n\ | |
66 #define GCC_INSN_CODES_H\n\ | |
67 \n\ | |
111 | 68 enum insn_code {\n\ |
69 CODE_FOR_nothing = 0"); | |
0 | 70 |
71 /* Read the machine description. */ | |
72 | |
111 | 73 md_rtx_info info; |
74 while (read_md_rtx (&info)) | |
75 switch (GET_CODE (info.def)) | |
76 { | |
77 case DEFINE_INSN: | |
78 case DEFINE_EXPAND: | |
79 gen_insn (&info); | |
0 | 80 break; |
81 | |
111 | 82 default: |
83 break; | |
0 | 84 } |
85 | |
111 | 86 printf ("\n};\n\ |
0 | 87 \n\ |
111 | 88 const unsigned int NUM_INSN_CODES = %d;\n\ |
89 #endif /* GCC_INSN_CODES_H */\n", get_num_insn_codes ()); | |
0 | 90 |
91 if (ferror (stdout) || fflush (stdout) || fclose (stdout)) | |
92 return FATAL_EXIT_CODE; | |
93 | |
94 return SUCCESS_EXIT_CODE; | |
95 } |