Annotation of gcc/genflags.c, revision 1.1.1.4

1.1       root        1: /* Generate from machine description:
                      2: 
                      3:    - some flags HAVE_... saying which simple standard instructions are
                      4:    available for this machine.
                      5:    Copyright (C) 1987 Free Software Foundation, Inc.
                      6: 
                      7: This file is part of GNU CC.
                      8: 
1.1.1.4 ! root        9: GNU CC is free software; you can redistribute it and/or modify
        !            10: it under the terms of the GNU General Public License as published by
        !            11: the Free Software Foundation; either version 1, or (at your option)
        !            12: any later version.
        !            13: 
1.1       root       14: GNU CC is distributed in the hope that it will be useful,
1.1.1.4 ! root       15: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            17: GNU General Public License for more details.
        !            18: 
        !            19: You should have received a copy of the GNU General Public License
        !            20: along with GNU CC; see the file COPYING.  If not, write to
        !            21: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
1.1       root       22: 
                     23: 
                     24: #include <stdio.h>
1.1.1.2   root       25: #include "config.h"
1.1       root       26: #include "rtl.h"
1.1.1.2   root       27: #include "obstack.h"
1.1       root       28: 
                     29: struct obstack obstack;
1.1.1.2   root       30: struct obstack *rtl_obstack = &obstack;
1.1       root       31: 
                     32: #define obstack_chunk_alloc xmalloc
                     33: #define obstack_chunk_free free
                     34: extern int xmalloc ();
                     35: extern void free ();
                     36: 
                     37: void fatal ();
                     38: 
                     39: void
                     40: gen_insn (insn)
                     41:      rtx insn;
                     42: {
                     43:   /* Don't mention instructions whose names are the null string.
                     44:      They are in the machine description just to be recognized.  */
                     45:   if (strlen (XSTR (insn, 0)) == 0)
                     46:     return;
                     47: 
1.1.1.3   root       48:   printf ("#define HAVE_%s (%s)\n", XSTR (insn, 0),
1.1       root       49:          strlen (XSTR (insn, 2)) ? XSTR (insn, 2) : "1");
                     50:   printf ("extern rtx gen_%s ();\n", XSTR (insn, 0));
                     51: }
                     52: 
1.1.1.2   root       53: int
1.1       root       54: xmalloc (size)
                     55: {
                     56:   register int val = malloc (size);
                     57: 
                     58:   if (val == 0)
1.1.1.2   root       59:     fatal ("virtual memory exhausted");
1.1       root       60: 
                     61:   return val;
                     62: }
                     63: 
                     64: int
                     65: xrealloc (ptr, size)
                     66:      char *ptr;
                     67:      int size;
                     68: {
                     69:   int result = realloc (ptr, size);
                     70:   if (!result)
1.1.1.2   root       71:     fatal ("virtual memory exhausted");
1.1       root       72:   return result;
                     73: }
                     74: 
                     75: void
                     76: fatal (s, a1, a2)
                     77: {
                     78:   fprintf (stderr, "genflags: ");
                     79:   fprintf (stderr, s, a1, a2);
                     80:   fprintf (stderr, "\n");
1.1.1.2   root       81:   exit (FATAL_EXIT_CODE);
1.1       root       82: }
                     83: 
1.1.1.2   root       84: int
1.1       root       85: main (argc, argv)
                     86:      int argc;
                     87:      char **argv;
                     88: {
                     89:   rtx desc;
                     90:   FILE *infile;
                     91:   extern rtx read_rtx ();
                     92:   register int c;
                     93: 
1.1.1.2   root       94:   obstack_init (rtl_obstack);
1.1       root       95: 
                     96:   if (argc <= 1)
                     97:     fatal ("No input file name.");
                     98: 
                     99:   infile = fopen (argv[1], "r");
                    100:   if (infile == 0)
                    101:     {
                    102:       perror (argv[1]);
1.1.1.2   root      103:       exit (FATAL_EXIT_CODE);
1.1       root      104:     }
                    105: 
                    106:   init_rtl ();
                    107: 
                    108:   printf ("/* Generated automatically by the program `genflags'\n\
                    109: from the machine description file `md'.  */\n\n");
                    110: 
                    111:   /* Read the machine description.  */
                    112: 
                    113:   while (1)
                    114:     {
                    115:       c = read_skip_spaces (infile);
                    116:       if (c == EOF)
                    117:        break;
                    118:       ungetc (c, infile);
                    119: 
                    120:       desc = read_rtx (infile);
1.1.1.2   root      121:       if (GET_CODE (desc) == DEFINE_INSN || GET_CODE (desc) == DEFINE_EXPAND)
                    122:        gen_insn (desc);
1.1       root      123:     }
                    124: 
1.1.1.2   root      125:   fflush (stdout);
                    126:   exit (ferror (stdout) != 0 ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE);
1.1       root      127: }

unix.superglobalmegacorp.com

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