aboutsummaryrefslogtreecommitdiffstats
path: root/ortho/agcc/gen_tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'ortho/agcc/gen_tree.c')
-rw-r--r--ortho/agcc/gen_tree.c575
1 files changed, 0 insertions, 575 deletions
diff --git a/ortho/agcc/gen_tree.c b/ortho/agcc/gen_tree.c
deleted file mode 100644
index ff826b408..000000000
--- a/ortho/agcc/gen_tree.c
+++ /dev/null
@@ -1,575 +0,0 @@
-/* Ada bindings for GCC internals - generate Ada files.
- Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold
-
- GHDL is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 2, or (at your option) any later
- version.
-
- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- for more details.
-
- You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA.
-*/
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "flags.h"
-#include "tree.h"
-#include "real.h"
-#include "options.h"
-#undef abort
-
-static const char *progname;
-
-/* Taken from tree.h. */
-
-
-#define XSTR(X) #X
-#define STR(X) XSTR(X)
-static const char *treecode_sym[] =
-{
-#define DEFTREECODE(SYM, STRING, TYPE, NARGS) #SYM,
-#include "tree.def"
-#undef DEFTREECODE
- NULL
-};
-
-static const char *treecode_string[] =
-{
-#define DEFTREECODE(SYM, STRING, TYPE, NARGS) STRING,
-#include "tree.def"
-#undef DEFTREECODE
- NULL
-};
-
-void
-gen_tree_code (void)
-{
- int i, j;
- size_t len;
- const size_t indent = 24;
-
- for (i = 0; treecode_sym[i] != NULL; i++)
- {
- len = strlen (treecode_sym[i]);
- printf (" %s, ", treecode_sym[i]);
- for (j = len; j < indent; j++)
- putchar (' ');
- printf ("-- %s\n", treecode_string[i]);
- }
- printf (" LAST_AND_UNUSED_TREE_CODE\n");
-}
-
-static const char *built_in_function_sym[] =
-{
-#if 0
-#define DEF_BUILTIN(x) #x,
-#else
-#define DEF_BUILTIN(ENUM, N, C, T, LT, B, F, NA, ATTR, IMP) #ENUM,
-#endif
-#include "builtins.def"
-#undef DEF_BUILTIN
- NULL
-};
-
-static void
-print_underscore (const char *sym)
-{
- for (; *sym != 0; sym++)
- {
- if (sym[0] == '_' && (sym[1] == '_' || sym[1] == 0))
- fputs ("_u", stdout);
- else
- fputc (sym[0], stdout);
- }
-}
-
-void
-gen_built_in_function (void)
-{
- int i;
-
- for (i = 0; built_in_function_sym[i] != NULL; i++)
- {
- fputs (" ", stdout);
- print_underscore (built_in_function_sym[i]);
- fputs (",\n", stdout);
- }
-
- printf (" END_BUILTINS\n");
-}
-
-#if 0
-static const char *machmode_sym[] =
-{
-#if 0
-#define DEF_MACHMODE(SYM, NAME, TYPE, BITSIZE, SIZE, UNIT, WIDER) #SYM,
-#else
-#define DEF_MACHMODE(SYM, NAME, TYPE, BITSIZE, SIZE, UNIT, WIDER, INNER) \
- #SYM,
-#endif
-#include "machmode.def"
-#undef DEF_MACHMODE
- NULL
-};
-#endif
-
-static void
-gen_machmode (void)
-{
- int i;
- char line[128];
- FILE *f;
- int do_emit;
- char *p;
-
- f = fopen ("insn-modes.h", "r");
- if (f == NULL)
- {
- fprintf (stderr, "cannot open insn-modes\n");
- exit (1);
- }
-
- do_emit = 0;
- while (1)
- {
- if (fgets (line, sizeof (line), f) == NULL)
- break;
- if (!do_emit)
- {
- if (strncmp (line, "enum machine_mode", 17) == 0)
- do_emit = 1;
- }
- else if (memcmp (line, " MAX_MACHINE_MODE,", 19) == 0)
- {
- fclose (f);
- break;
- }
- else
- {
- /* Search for " [A-Z0-9_]*mode,". */
- p = line;
- if (p[0] != ' ' || p[1] != ' ')
- continue;
- p += 2;
- while ((*p >= 'A' && *p <= 'Z')
- || (*p >= '0' && *p <= '9')
- || (*p == '_'))
- p++;
- if (memcmp (p, "mode,", 5) == 0)
- {
- p[4] = 0;
- printf (" %s,\n", line + 2);
- }
- }
-
- }
- printf (" MAX_MACHINE_MODE\n");
-}
-
-static void
-gen_options_CL (void)
-{
- printf (" CL_C : constant Integer := %d;\n", CL_C);
- printf (" CL_vhdl : constant Integer := %d;\n", CL_vhdl);
-}
-
-static void
-gen_options_OPTs (void)
-{
- char line[128];
- FILE *f;
- int do_emit;
- char *p;
-
- f = fopen ("options.h", "r");
- if (f == NULL)
- {
- fprintf (stderr, "cannot open options.h\n");
- exit (1);
- }
-
- do_emit = 0;
- while (1)
- {
- if (fgets (line, sizeof (line), f) == NULL)
- break;
- if (!do_emit)
- {
- if (strncmp (line, "enum opt_code", 13) == 0)
- do_emit = 1;
- }
- else if (memcmp (line, " N_OPTS", 9) == 0)
- {
- fclose (f);
- break;
- }
- else
- {
- /* Search for " [A-Z0-9]*mode,". */
- p = line;
- if (memcmp (p, " OPT_", 6) != 0)
- continue;
- printf (" OPT");
- for (p = line + 5; *p != ','; p++)
- {
- if (p[0] == '_' && (p[1] == ',' || p[1] == '_'))
- fputs ("_U", stdout);
- else
- {
- if (p[0] >= 'A' && p[0] <= 'Z')
- putchar ('U');
- putchar (p[0]);
- }
- }
- printf (",\n");
- }
-
- }
- printf (" N_OPTS\n");
-}
-
-struct xtab_t
-{
- int val;
- const char *name;
-};
-
-void
-gen_enumeration (const struct xtab_t *xtab, int max, const char *max_name)
-{
- int i;
-
- for (i = 0; i < max; i++)
- {
- const struct xtab_t *t;
-
- for (t = xtab; t->name; t++)
- if (t->val == i)
- break;
-
- if (t->name == NULL)
- {
- fprintf (stderr, "gen_enumeration: kind %d unknown (max is %s)\n",
- i, max_name);
- exit (1);
- }
-
- printf (" %s,\n", t->name);
- }
- printf (" %s\n", max_name);
-}
-
-const struct xtab_t size_type_names[] =
-{
- { SIZETYPE, "TK_SIZETYPE" },
- { SSIZETYPE, "TK_SSIZETYPE" },
- { USIZETYPE, "TK_USIZETYPE" },
- { BITSIZETYPE, "TK_BITSIZETYPE" },
- { SBITSIZETYPE, "TK_SBITSIZETYPE" },
- { UBITSIZETYPE, "TK_UBITSIZETYPE" },
- { 0, NULL}
-};
-
-static void
-gen_size_type (void)
-{
- gen_enumeration (size_type_names, TYPE_KIND_LAST, "TYPE_KIND_LAST");
-}
-
-
-const struct xtab_t type_qual_tab[] =
-{
- { TYPE_UNQUALIFIED, "TYPE_UNQUALIFIED" },
- { TYPE_QUAL_CONST, "TYPE_QUAL_CONST" },
- { TYPE_QUAL_VOLATILE, "TYPE_QUAL_VOLATILE" },
- { TYPE_QUAL_RESTRICT, "TYPE_QUAL_RESTRICT" },
- { 0, NULL}
-};
-
-void
-gen_type_qual (void)
-{
- const struct xtab_t *t;
- for (t = type_qual_tab; t->name; t++)
- printf (" %s : constant Type_Qual_Type := %d;\n", t->name, t->val);
-}
-
-const struct xtab_t tree_index_tab[] =
-{
- /* Defined in tree.h */
- { TI_ERROR_MARK, "TI_ERROR_MARK" },
- { TI_INTQI_TYPE, "TI_INTQI_TYPE" },
- { TI_INTHI_TYPE, "TI_INTHI_TYPE" },
- { TI_INTSI_TYPE, "TI_INTSI_TYPE" },
- { TI_INTDI_TYPE, "TI_INTDI_TYPE" },
- { TI_INTTI_TYPE, "TI_INTTI_TYPE" },
-
- { TI_UINTQI_TYPE, "TI_UINTQI_TYPE" },
- { TI_UINTHI_TYPE, "TI_UINTHI_TYPE" },
- { TI_UINTSI_TYPE, "TI_UINTSI_TYPE" },
- { TI_UINTDI_TYPE, "TI_UINTDI_TYPE" },
- { TI_UINTTI_TYPE, "TI_UINTTI_TYPE" },
-
- { TI_INTEGER_ZERO, "TI_INTEGER_ZERO" },
- { TI_INTEGER_ONE, "TI_INTEGER_ONE" },
- { TI_INTEGER_MINUS_ONE, "TI_INTEGER_MINUS_ONE" },
- { TI_NULL_POINTER, "TI_NULL_POINTER" },
-
- { TI_SIZE_ZERO, "TI_SIZE_ZERO" },
- { TI_SIZE_ONE, "TI_SIZE_ONE" },
-
- { TI_BITSIZE_ZERO, "TI_BITSIZE_ZERO" },
- { TI_BITSIZE_ONE, "TI_BITSIZE_ONE" },
- { TI_BITSIZE_UNIT, "TI_BITSIZE_UNIT" },
-
- { TI_PUBLIC, "TI_PUBLIC" },
- { TI_PROTECTED, "TI_PROTECTED" },
- { TI_PRIVATE, "TI_PRIVATE" },
-
- { TI_BOOLEAN_FALSE, "TI_BOOLEAN_FALSE" },
- { TI_BOOLEAN_TRUE, "TI_BOOLEAN_TRUE" },
-
- { TI_COMPLEX_INTEGER_TYPE, "TI_COMPLEX_INTEGER_TYPE" },
- { TI_COMPLEX_FLOAT_TYPE, "TI_COMPLEX_FLOAT_TYPE" },
- { TI_COMPLEX_DOUBLE_TYPE, "TI_COMPLEX_DOUBLE_TYPE" },
- { TI_COMPLEX_LONG_DOUBLE_TYPE, "TI_COMPLEX_LONG_DOUBLE_TYPE" },
-
- { TI_FLOAT_TYPE, "TI_FLOAT_TYPE" },
- { TI_DOUBLE_TYPE, "TI_DOUBLE_TYPE" },
- { TI_LONG_DOUBLE_TYPE, "TI_LONG_DOUBLE_TYPE" },
-
- { TI_FLOAT_PTR_TYPE, "TI_FLOAT_PTR_TYPE" },
- { TI_DOUBLE_PTR_TYPE, "TI_DOUBLE_PTR_TYPE" },
- { TI_LONG_DOUBLE_PTR_TYPE, "TI_LONG_DOUBLE_PTR_TYPE" },
- { TI_INTEGER_PTR_TYPE, "TI_INTEGER_PTR_TYPE" },
-
- { TI_VOID_TYPE, "TI_VOID_TYPE" },
- { TI_PTR_TYPE, "TI_PTR_TYPE" },
- { TI_CONST_PTR_TYPE, "TI_CONST_PTR_TYPE" },
- { TI_SIZE_TYPE, "TI_SIZE_TYPE" },
- { TI_PTRDIFF_TYPE, "TI_PTRDIFF_TYPE" },
- { TI_VA_LIST_TYPE, "TI_VA_LIST_TYPE" },
- { TI_BOOLEAN_TYPE, "TI_BOOLEAN_TYPE" },
-
- { TI_VOID_LIST_NODE, "TI_VOID_LIST_NODE" },
-
- { TI_UV4SF_TYPE, "TI_UV4SF_TYPE" },
- { TI_UV4SI_TYPE, "TI_UV4SI_TYPE" },
- { TI_UV8HI_TYPE, "TI_UV8HI_TYPE" },
- { TI_UV8QI_TYPE, "TI_UV8QI_TYPE" },
- { TI_UV4HI_TYPE, "TI_UV4HI_TYPE" },
- { TI_UV2HI_TYPE, "TI_UV2HI_TYPE" },
- { TI_UV2SI_TYPE, "TI_UV2SI_TYPE" },
- { TI_UV2SF_TYPE, "TI_UV2SF_TYPE" },
- { TI_UV2DI_TYPE, "TI_UV2DI_TYPE" },
- { TI_UV1DI_TYPE, "TI_UV1DI_TYPE" },
- { TI_UV16QI_TYPE, "TI_UV16QI_TYPE" },
-
- { TI_V4SF_TYPE, "TI_V4SF_TYPE" },
- { TI_V16SF_TYPE, "TI_V16SF_TYPE" },
- { TI_V4SI_TYPE, "TI_V4SI_TYPE" },
- { TI_V8HI_TYPE, "TI_V8HI_TYPE" },
- { TI_V8QI_TYPE, "TI_V8QI_TYPE" },
- { TI_V4HI_TYPE, "TI_V4HI_TYPE" },
- { TI_V2HI_TYPE, "TI_V2HI_TYPE" },
- { TI_V2SI_TYPE, "TI_V2SI_TYPE" },
- { TI_V2SF_TYPE, "TI_V2SF_TYPE" },
- { TI_V2DF_TYPE, "TI_V2DF_TYPE" },
- { TI_V2DI_TYPE, "TI_V2DI_TYPE" },
- { TI_V1DI_TYPE, "TI_V1DI_TYPE" },
- { TI_V16QI_TYPE, "TI_V16QI_TYPE" },
- { TI_V4DF_TYPE, "TI_V4DF_TYPE" },
-
- { TI_MAIN_IDENTIFIER, "TI_MAIN_IDENTIFIER" },
-
- { 0, NULL }
-};
-
-const struct xtab_t integer_types_tab[] =
-{
- { itk_char, "itk_char" },
- { itk_signed_char, "itk_signed_char" },
- { itk_unsigned_char, "itk_unsigned_char" },
- { itk_short, "itk_short" },
- { itk_unsigned_short, "itk_unsigned_short" },
- { itk_int, "itk_int" },
- { itk_unsigned_int, "itk_unsigned_int" },
- { itk_long, "itk_long" },
- { itk_unsigned_long, "itk_unsigned_long" },
- { itk_long_long, "itk_long_long" },
- { itk_unsigned_long_long, "itk_unsigned_long_long" },
- { 0, NULL }
-};
-
-
-void
-gen_tree_index (void)
-{
- gen_enumeration (tree_index_tab, TI_MAX, "TI_MAX");
-}
-
-void
-gen_integer_types (void)
-{
- gen_enumeration (integer_types_tab, itk_none, "itk_none");
-}
-
-static void
-gen_host_wide_int_decl (void)
-{
- int l;
- switch (sizeof (HOST_WIDE_INT))
- {
- case 4:
- l = 32;
- break;
- case 8:
- l = 64;
- break;
- default:
- fprintf (stderr, "%s: cannot handle sizeof (HOST_WIDE_INT) %d\n",
- progname, sizeof (HOST_WIDE_INT));
- exit (1);
- }
- printf (" type HOST_WIDE_INT is new Interfaces.Integer_%d;\n", l);
- printf (" type UNSIGNED_HOST_WIDE_INT is new Interfaces.Unsigned_%d;\n",
- l);
-}
-
-static void
-gen_host_big_endian (void)
-{
-#ifdef HOST_WORDS_BIG_ENDIAN
- printf (" HOST_WORDS_BIG_ENDIAN : constant Boolean := True;\n");
-#else
- printf (" HOST_WORDS_BIG_ENDIAN : constant Boolean := False;\n");
-#endif
-}
-
-static void
-gen_real (void)
-{
- printf (" type Real_Value_Type_Arr is array (0 .. %d) of HOST_WIDE_INT;\n",
- (sizeof (REAL_VALUE_TYPE) / sizeof (HOST_WIDE_INT)) - 1);
- printf (" type REAL_VALUE_TYPE is record\n"
- " r : Real_Value_Type_Arr;\n"
- " end record;\n");
-}
-
-static void
-gen_tm (void)
-{
-#ifndef MAX_BITS_PER_WORD
-#define MAX_BITS_PER_WORD BITS_PER_WORD
-#endif
- /* This is a constant. */
- printf (" MAX_BITS_PER_WORD : constant Natural := %d;\n",
- MAX_BITS_PER_WORD);
-}
-
-int
-main (int argc, char *argv[])
-{
- FILE *infile;
- char line[2048];
- const char *filename;
- int c;
-
- progname = argv[0];
-
- while ((c = getopt (argc, argv, "C:")) != -1)
- switch (c)
- {
- case 'C':
- chdir (optarg);
- break;
- case '?':
- fprintf (stderr, "%s: unknown option '%s'\n", progname, optopt);
- exit (1);
- default:
- abort ();
- }
-
- if (argc - optind != 1)
- {
- fprintf (stderr, "usage: %s FILENAME\n", progname);
- exit (1);
- }
- filename = argv[optind];
- if (strcmp (filename, "-") == 0)
- infile = stdin;
- else
- infile = fopen (filename, "r");
- if (infile == NULL)
- {
- fprintf (stderr, "%s: cannot open %s (%s)\n", progname, filename,
- strerror (errno));
- exit (1);
- }
-#if 0
-#ifdef REAL_IS_NOT_DOUBLE
- printf ("-- REAL_IS_NOT_DOUBLE is not yet implemented\n");
- printf ("You loose\n");
- return 1;
-#endif
-#endif
- printf ("-- Automatically generated by %s\n", progname);
- printf ("-- from %s\n", filename);
- printf ("-- DO NOT EDIT THIS FILE\n");
-
- while (fgets (line, sizeof (line), infile) != NULL)
- {
- if (line[0] != '@')
- fputs (line, stdout);
- else
- {
- char *p;
-
- for (p = line + 1; isalpha (*p) || *p == '_'; p++)
- ;
- *p = 0;
-
- if (!strcmp (line, "@tree_code"))
- gen_tree_code ();
- else if (!strcmp (line, "@built_in_function"))
- gen_built_in_function ();
- else if (!strcmp (line, "@size_type_kind"))
- gen_size_type ();
- else if (!strcmp (line, "@type_qual"))
- gen_type_qual ();
- else if (!strcmp (line, "@host_wide_int"))
- gen_host_wide_int_decl ();
- else if (!strcmp (line, "@tree_index"))
- gen_tree_index ();
- else if (!strcmp (line, "@integer_types"))
- gen_integer_types ();
- else if (!strcmp (line, "@host_big_endian"))
- gen_host_big_endian ();
- else if (!strcmp (line, "@real"))
- gen_real ();
- else if (!strcmp (line, "@machmode"))
- gen_machmode ();
- else if (!strcmp (line, "@tm"))
- gen_tm ();
- else if (!strcmp (line, "@options_CL"))
- gen_options_CL ();
- else if (!strcmp (line, "@options_OPTs"))
- gen_options_OPTs ();
- else
- {
- fprintf (stderr, "unknown code `%s'\n", line);
- exit (1);
- }
- }
- }
- return 0;
-}