Annotation of researchv10dc/cmd/gcc/gencodes.c, revision 1.1.1.1

1.1       root        1: /* Generate from machine description:
                      2: 
                      3:    - some macros CODE_FOR_... giving the insn_code_number value
                      4:    for each of the defined standard insn names.
                      5:    Copyright (C) 1987 Free Software Foundation, Inc.
                      6: 
                      7: This file is part of GNU CC.
                      8: 
                      9: GNU CC is distributed in the hope that it will be useful,
                     10: but WITHOUT ANY WARRANTY.  No author or distributor
                     11: accepts responsibility to anyone for the consequences of using it
                     12: or for whether it serves any particular purpose or works at all,
                     13: unless he says so in writing.  Refer to the GNU CC General Public
                     14: License for full details.
                     15: 
                     16: Everyone is granted permission to copy, modify and redistribute
                     17: GNU CC, but only under the conditions described in the
                     18: GNU CC General Public License.   A copy of this license is
                     19: supposed to have been given to you along with GNU CC so you
                     20: can know your rights and responsibilities.  It should be in a
                     21: file named COPYING.  Among other things, the copyright notice
                     22: and this notice must be preserved on all copies.  */
                     23: 
                     24: 
                     25: #include <stdio.h>
                     26: #include "config.h"
                     27: #include "rtl.h"
                     28: #include "obstack.h"
                     29: 
                     30: struct obstack obstack;
                     31: struct obstack *rtl_obstack = &obstack;
                     32: 
                     33: #define obstack_chunk_alloc xmalloc
                     34: #define obstack_chunk_free free
                     35: extern int xmalloc ();
                     36: extern void free ();
                     37: 
                     38: void fatal ();
                     39: 
                     40: int insn_code_number;
                     41: 
                     42: void
                     43: gen_insn (insn)
                     44:      rtx insn;
                     45: {
                     46:   /* Don't mention instructions whose names are the null string.
                     47:      They are in the machine description just to be recognized.  */
                     48:   if (strlen (XSTR (insn, 0)) != 0)
                     49:     printf ("  CODE_FOR_%s = %d,\n", XSTR (insn, 0),
                     50:            insn_code_number);
                     51: }
                     52: 
                     53: int
                     54: xmalloc (size)
                     55: {
                     56:   register int val = malloc (size);
                     57: 
                     58:   if (val == 0)
                     59:     fatal ("virtual memory exhausted");
                     60:   return val;
                     61: }
                     62: 
                     63: int
                     64: xrealloc (ptr, size)
                     65:      char *ptr;
                     66:      int size;
                     67: {
                     68:   int result = realloc (ptr, size);
                     69:   if (!result)
                     70:     fatal ("virtual memory exhausted");
                     71:   return result;
                     72: }
                     73: 
                     74: void
                     75: fatal (s, a1, a2)
                     76: {
                     77:   fprintf (stderr, "gencodes: ");
                     78:   fprintf (stderr, s, a1, a2);
                     79:   fprintf (stderr, "\n");
                     80:   exit (FATAL_EXIT_CODE);
                     81: }
                     82: 
                     83: int
                     84: main (argc, argv)
                     85:      int argc;
                     86:      char **argv;
                     87: {
                     88:   rtx desc;
                     89:   FILE *infile;
                     90:   extern rtx read_rtx ();
                     91:   register int c;
                     92: 
                     93:   obstack_init (rtl_obstack);
                     94: 
                     95:   if (argc <= 1)
                     96:     fatal ("No input file name.");
                     97: 
                     98:   infile = fopen (argv[1], "r");
                     99:   if (infile == 0)
                    100:     {
                    101:       perror (argv[1]);
                    102:       exit (FATAL_EXIT_CODE);
                    103:     }
                    104: 
                    105:   init_rtl ();
                    106: 
                    107:   printf ("/* Generated automatically by the program `gencodes'\n\
                    108: from the machine description file `md'.  */\n\n");
                    109: 
                    110:   printf ("#ifndef MAX_INSN_CODE\n\n");
                    111: 
                    112:   /* Read the machine description.  */
                    113: 
                    114:   insn_code_number = 0;
                    115:   printf ("enum insn_code {\n");
                    116: 
                    117:   while (1)
                    118:     {
                    119:       c = read_skip_spaces (infile);
                    120:       if (c == EOF)
                    121:        break;
                    122:       ungetc (c, infile);
                    123: 
                    124:       desc = read_rtx (infile);
                    125:       if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)
                    126:        {
                    127:          gen_insn (desc);
                    128:          insn_code_number++;
                    129:        }
                    130:       if (GET_CODE (desc) == DEFINE_PEEPHOLE)
                    131:        {
                    132:          insn_code_number++;
                    133:        }
                    134:     }
                    135: 
                    136:   printf ("  CODE_FOR_nothing };\n");
                    137: 
                    138:   printf ("\n#define MAX_INSN_CODE ((int) CODE_FOR_nothing)\n");
                    139: 
                    140:   printf ("#endif /* MAX_INSN_CODE */\n");
                    141: 
                    142:   fflush (stdout);
                    143:   exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
                    144: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.