diff options
author | John Carr <jfc@mit.edu> | 1998-01-13 09:06:31 +0000 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-01-13 01:06:31 -0800 |
commit | 4b8140a62f0e2560f55cca0866b5b16edb6e5b98 (patch) | |
tree | bd55dcbcc5d1c4c2283b7758d4c0d2c4bde53f67 /gcc/gengenrtl.c | |
parent | 82de9b284f6d50ce36ad0839e2cb98b2ccbdb61c (diff) | |
download | gcc-4b8140a62f0e2560f55cca0866b5b16edb6e5b98.tar.gz |
gengenrtl.c (gencode): Emit new function obstack_alloc_rtx to allocate rtx.
* gengenrtl.c (gencode): Emit new function obstack_alloc_rtx
to allocate rtx.
(gendef): Call obstack_alloc_rtx.
From-SVN: r17327
Diffstat (limited to 'gcc/gengenrtl.c')
-rw-r--r-- | gcc/gengenrtl.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/gcc/gengenrtl.c b/gcc/gengenrtl.c index 977305d9a82..b929f67e307 100644 --- a/gcc/gengenrtl.c +++ b/gcc/gengenrtl.c @@ -184,16 +184,8 @@ gendef (f, format) /* See rtx_alloc in rtl.c for comments. */ fprintf (f, "{\n"); - fprintf (f, " register int length = sizeof (struct rtx_def)"); - fprintf (f, " + %d * sizeof (rtunion);\n", strlen (format) - 1); - fprintf (f, " rtx rt = (rtx)obstack_alloc (rtl_obstack, length);\n"); - - fprintf (f, " if (sizeof(struct rtx_def) - sizeof(rtunion) == sizeof(int))\n"); - fprintf (f, " *(int *)rt = 0;\n"); - fprintf (f, " else if (sizeof(struct rtx_def) - sizeof(rtunion) == sizeof(HOST_WIDE_INT))\n"); - fprintf (f, " *(HOST_WIDE_INT *)rt = 0;\n"); - fprintf (f, " else\n"); - fprintf (f, " bzero(rt, sizeof(struct rtx_def) - sizeof(rtunion));\n\n"); + fprintf (f, " rtx rt = obstack_alloc_rtx (sizeof (struct rtx_def) + %d * sizeof (rtunion));\n", + (int) strlen (format) - 1); fprintf (f, " PUT_CODE (rt, code);\n"); fprintf (f, " PUT_MODE (rt, mode);\n"); @@ -242,10 +234,21 @@ gencode (f) { const char **fmt; - fprintf(f, "#include \"config.h\"\n"); - fprintf(f, "#include \"obstack.h\"\n"); - fprintf(f, "#include \"rtl.h\"\n\n"); - fprintf(f, "extern struct obstack *rtl_obstack;\n\n"); + fputs ("#include \"config.h\"\n", f); + fputs ("#include \"obstack.h\"\n", f); + fputs ("#include \"rtl.h\"\n\n", f); + fputs ("extern struct obstack *rtl_obstack;\n\n", f); + fputs ("static rtx obstack_alloc_rtx PROTO((int length));\n", f); + fputs ("static rtx obstack_alloc_rtx (length)\n", f); + fputs (" register int length;\n{\n", f); + fputs (" rtx rt = (rtx) obstack_alloc (rtl_obstack, length);\n\n", f); + fputs (" if (sizeof(struct rtx_def) - sizeof(rtunion) == sizeof(int))\n", f); + fputs (" *(int *)rt = 0;\n", f); + fputs (" else if (sizeof(struct rtx_def) - sizeof(rtunion) == sizeof(HOST_WIDE_INT))\n", f); + fputs (" *(HOST_WIDE_INT *)rt = 0;\n", f); + fputs (" else\n", f); + fputs (" bzero(rt, sizeof(struct rtx_def) - sizeof(rtunion));\n\n", f); + fputs (" return rt;\n}\n\n", f); for (fmt = formats; *fmt; ++fmt) gendef (f, *fmt); |