summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog38
-rw-r--r--gcc/genattr.c3
-rw-r--r--gcc/genattrtab.c3
-rw-r--r--gcc/gencodes.c3
-rw-r--r--gcc/genconditions.c5
-rw-r--r--gcc/genconfig.c3
-rw-r--r--gcc/genconstants.c18
-rw-r--r--gcc/genemit.c3
-rw-r--r--gcc/genextract.c3
-rw-r--r--gcc/genflags.c3
-rw-r--r--gcc/genopinit.c3
-rw-r--r--gcc/genoutput.c3
-rw-r--r--gcc/genpeep.c3
-rw-r--r--gcc/genrecog.c3
-rw-r--r--gcc/gensupport.c57
-rw-r--r--gcc/gensupport.h2
16 files changed, 65 insertions, 88 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14c2b37a537..fb925f8c9c4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,21 @@
+2004-08-03 Zack Weinberg <zack@codesourcery.com>
+
+ * gensupport.c (init_md_reader_args_cb): Renamed from
+ init_md_reader_args. Add third option, callback function for
+ parsing program-specific options. Add diagnosis of incorrect
+ number of input files.
+ (init_md_reader): Fold into init_md_reader_args_cb.
+ (init_md_reader_args): Now a thin wrapper around
+ init_md_reader_args_cb.
+ * gensupport.h: Update prototypes.
+
+ * genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
+ * genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
+ * genrecog.c: No need to diagnose lack of an input file;
+ init_md_reader_args will handle it.
+ * genconditions.c: Likewise, and use init_md_reader_args.
+ * genconstants.c: Likewise, and no need to call read_md_rtx.
+
2004-08-03 Joseph S. Myers <jsm@polyomino.org.uk>
* c-decl.c (implicitly_declare): Diagnose incompatible implicit
@@ -26,8 +44,8 @@
2004-08-03 Maciej W. Rozycki <macro@linux-mips.org>
- * aclocal.m4 (gcc_AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
- and mmap() explicitly instead of relying on preset autoconf cache
+ * aclocal.m4 (gcc_AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
+ and mmap() explicitly instead of relying on preset autoconf cache
variables.
* configure: Regenerate.
@@ -42,7 +60,7 @@
* config/i386/t-gmm_malloc: New file.
* config/i386/t-pmm_malloc: Likewise.
-
+
* config/i386/xmmintrin.h: Include <mm_malloc.h>.
2004-08-03 H.J. Lu <hongjiu.lu@intel.com>
@@ -58,7 +76,7 @@
* config/rs6000/rs6000.c (machopic_output_stub): Align Darwin stubs.
* c-common.c: Include opts.h.
- (c_common_get_alias_set): Fix check for a single input file.
+ (c_common_get_alias_set): Fix check for a single input file.
* toplev.c: Remove current_file_decl.
* tree.h: Ditto.
@@ -144,9 +162,9 @@
(warn_B, warn_std_ptr): Remove.
2004-08-03 Yossi Markovich <yossim@il.ibm.com>
- Mostafa Hagog <mustafa@il.ibm.com>
+ Mostafa Hagog <mustafa@il.ibm.com>
- * config/rs6000/altivec.md (altivec_vnmsubfp): Fix wrong pattern.
+ * config/rs6000/altivec.md (altivec_vnmsubfp): Fix wrong pattern.
2004-08-02 Geoffrey Keating <geoffk@apple.com>
@@ -168,7 +186,7 @@
2004-08-02 Gabriel Dos Reis <gdr@integrable-solutions.net>
* vec.h (DEF_VEC_P): Add proper cast to uses of vec_o_reserve and
- vec_p_reserve.
+ vec_p_reserve.
* langhooks.h (lang_hooks::builtin_function): Rename parameter
from "class" to "bt_class".
@@ -184,7 +202,7 @@
* gengtype.c (create_option): Convert initializer for option::info to
appropiate type.
(adjust_field_type, walk_type, write_func_for_structure,
- write_root, write_roots): Remove pointless cast.
+ write_root, write_roots): Remove pointless cast.
2004-08-02 J"orn Rennecke <joern.rennecke@superh.com>
@@ -195,10 +213,10 @@
* rtl.h (union rtunion_def): Have all members start with the
prefix "rt_".
(XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE, XBBDEF, XTMPL,
- X0INT, X0UINT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
+ X0INT, X0UINT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
X0MEMATTR, X0BBDEF, X0REGATTR, XCINT, XCUINT, XCSTR, XCEXP,
XCVEC, XCMODE, XCBITMAP, XCTREE, XCBBDEF, XC2EXP): Adjust members
- access.
+ access.
* gengtype.c (adjust_field_rtx_def): Likewise.
* rtlanal.c (loc_mentioned_in_p): Likewise.
diff --git a/gcc/genattr.c b/gcc/genattr.c
index 0be30352567..44ba0e00714 100644
--- a/gcc/genattr.c
+++ b/gcc/genattr.c
@@ -97,9 +97,6 @@ main (int argc, char **argv)
progname = "genattr";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index f1bbaf52314..fde4933c3b0 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -4407,9 +4407,6 @@ main (int argc, char **argv)
progname = "genattrtab";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/gencodes.c b/gcc/gencodes.c
index 13aa2c58773..2008597791c 100644
--- a/gcc/gencodes.c
+++ b/gcc/gencodes.c
@@ -59,9 +59,6 @@ main (int argc, char **argv)
direct references to CODE_FOR_xxx in C code. */
insn_elision = 0;
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genconditions.c b/gcc/genconditions.c
index 94a6bc43929..3f05706f46c 100644
--- a/gcc/genconditions.c
+++ b/gcc/genconditions.c
@@ -188,10 +188,7 @@ main (int argc, char **argv)
progname = "genconditions";
- if (argc <= 1)
- fatal ("No input file name.");
-
- if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
+ if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
condition_table = htab_create (1000, hash_c_test, cmp_c_test, NULL);
diff --git a/gcc/genconfig.c b/gcc/genconfig.c
index 4e7195391f4..6f77e984c27 100644
--- a/gcc/genconfig.c
+++ b/gcc/genconfig.c
@@ -264,9 +264,6 @@ main (int argc, char **argv)
progname = "genconfig";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genconstants.c b/gcc/genconstants.c
index a4daa22027a..fcebc4439ca 100644
--- a/gcc/genconstants.c
+++ b/gcc/genconstants.c
@@ -34,8 +34,6 @@ Boston, MA 02111-1307, USA. */
#include "errors.h"
#include "gensupport.h"
-static int print_md_constant (void **, void *);
-
/* Called via traverse_md_constants; emit a #define for
the current constant definition. */
@@ -52,22 +50,13 @@ print_md_constant (void **slot, void *info)
int
main (int argc, char **argv)
{
- int dummy1, dummy2;
- rtx desc;
-
progname = "genconstants";
- if (argc <= 1)
- fatal ("no input file name");
-
- if (init_md_reader (argv[1]) != SUCCESS_EXIT_CODE)
+ if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
- /* Scan and discard the entire file. This has the side effect
- of loading up the constants table that we wish to scan. */
- do
- desc = read_md_rtx (&dummy1, &dummy2);
- while (desc);
+ /* Initializing the MD reader has the side effect of loading up
+ the constants table that we wish to scan. */
puts ("/* Generated automatically by the program `genconstants'");
puts (" from the machine description file `md'. */\n");
@@ -83,4 +72,3 @@ main (int argc, char **argv)
return SUCCESS_EXIT_CODE;
}
-
diff --git a/gcc/genemit.c b/gcc/genemit.c
index 1198123fad1..e7ace350569 100644
--- a/gcc/genemit.c
+++ b/gcc/genemit.c
@@ -799,9 +799,6 @@ main (int argc, char **argv)
progname = "genemit";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genextract.c b/gcc/genextract.c
index 95a358d8b80..94b38c09d2b 100644
--- a/gcc/genextract.c
+++ b/gcc/genextract.c
@@ -354,9 +354,6 @@ main (int argc, char **argv)
progname = "genextract";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genflags.c b/gcc/genflags.c
index 27296c9f239..ad835bcb1e2 100644
--- a/gcc/genflags.c
+++ b/gcc/genflags.c
@@ -245,9 +245,6 @@ main (int argc, char **argv)
direct calls to their generators in C code. */
insn_elision = 0;
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genopinit.c b/gcc/genopinit.c
index 2740b757e53..23b6e28b9d4 100644
--- a/gcc/genopinit.c
+++ b/gcc/genopinit.c
@@ -352,9 +352,6 @@ main (int argc, char **argv)
progname = "genopinit";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genoutput.c b/gcc/genoutput.c
index 44bc412d488..112017d8cbd 100644
--- a/gcc/genoutput.c
+++ b/gcc/genoutput.c
@@ -982,9 +982,6 @@ main (int argc, char **argv)
progname = "genoutput";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genpeep.c b/gcc/genpeep.c
index 6ed1307e773..66ded4df292 100644
--- a/gcc/genpeep.c
+++ b/gcc/genpeep.c
@@ -359,9 +359,6 @@ main (int argc, char **argv)
progname = "genpeep";
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index 2694e839383..f1bce6c78a5 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -2636,9 +2636,6 @@ main (int argc, char **argv)
memset (&split_tree, 0, sizeof split_tree);
memset (&peephole2_tree, 0, sizeof peephole2_tree);
- if (argc <= 1)
- fatal ("no input file name");
-
if (init_md_reader_args (argc, argv) != SUCCESS_EXIT_CODE)
return (FATAL_EXIT_CODE);
diff --git a/gcc/gensupport.c b/gcc/gensupport.c
index 37535d18a5d..2acfc8a3efd 100644
--- a/gcc/gensupport.c
+++ b/gcc/gensupport.c
@@ -898,9 +898,12 @@ save_string (const char *s, int len)
/* The entry point for initializing the reader. */
int
-init_md_reader_args (int argc, char **argv)
+init_md_reader_args_cb (int argc, char **argv, bool (*parse_opt)(const char *))
{
+ FILE *input_file;
int i;
+ size_t ix;
+ char *lastsl;
const char *in_fname;
max_include_len = 0;
@@ -909,8 +912,10 @@ init_md_reader_args (int argc, char **argv)
{
if (argv[i][0] != '-')
{
- if (in_fname == NULL)
- in_fname = argv[i];
+ if (in_fname)
+ fatal ("too many input files");
+
+ in_fname = argv[i];
}
else
{
@@ -939,33 +944,28 @@ init_md_reader_args (int argc, char **argv)
}
break;
default:
- fatal ("invalid option `%s'", argv[i]);
+ /* The program may have provided a callback so it can
+ accept its own options. */
+ if (parse_opt && parse_opt (argv[i]))
+ break;
+ fatal ("invalid option `%s'", argv[i]);
}
}
}
- return init_md_reader (in_fname);
-}
-
-/* The entry point for initializing the reader. */
-int
-init_md_reader (const char *filename)
-{
- FILE *input_file;
- int c;
- size_t i;
- char *lastsl;
+ if (!in_fname)
+ fatal ("no input file name");
- lastsl = strrchr (filename, '/');
+ lastsl = strrchr (in_fname, '/');
if (lastsl != NULL)
- base_dir = save_string (filename, lastsl - filename + 1 );
+ base_dir = save_string (in_fname, lastsl - in_fname + 1 );
- read_rtx_filename = filename;
- input_file = fopen (filename, "r");
+ read_rtx_filename = in_fname;
+ input_file = fopen (in_fname, "r");
if (input_file == 0)
{
- perror (filename);
+ perror (in_fname);
return FATAL_EXIT_CODE;
}
@@ -973,9 +973,9 @@ init_md_reader (const char *filename)
condition_table = htab_create (n_insn_conditions,
hash_c_test, cmp_c_test, NULL);
- for (i = 0; i < n_insn_conditions; i++)
- *(htab_find_slot (condition_table, &insn_conditions[i], INSERT))
- = (void *) &insn_conditions[i];
+ for (ix = 0; ix < n_insn_conditions; ix++)
+ *(htab_find_slot (condition_table, &insn_conditions[ix], INSERT))
+ = (void *) &insn_conditions[ix];
obstack_init (rtl_obstack);
errors = 0;
@@ -986,8 +986,7 @@ init_md_reader (const char *filename)
{
rtx desc;
int lineno;
-
- c = read_skip_spaces (input_file);
+ int c = read_skip_spaces (input_file);
if (c == EOF)
break;
@@ -1005,6 +1004,14 @@ init_md_reader (const char *filename)
return errors ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE;
}
+/* Programs that don't have their own options can use this entry point
+ instead. */
+int
+init_md_reader_args (int argc, char **argv)
+{
+ return init_md_reader_args_cb (argc, argv, 0);
+}
+
/* The entry point for reading a single rtx from an md file. */
rtx
diff --git a/gcc/gensupport.h b/gcc/gensupport.h
index 7ceccfbaeb1..ea78b247d5d 100644
--- a/gcc/gensupport.h
+++ b/gcc/gensupport.h
@@ -24,8 +24,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
struct obstack;
extern struct obstack *rtl_obstack;
+extern int init_md_reader_args_cb (int, char **, bool (*)(const char *));
extern int init_md_reader_args (int, char **);
-extern int init_md_reader (const char *);
extern rtx read_md_rtx (int *, int *);
extern void message_with_line (int, const char *, ...)