aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2005-05-16 12:30:06 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2005-05-16 12:30:06 +0000
commitaeb70e782ac3089f3931b58b1291c1196a8e6c8f (patch)
tree1a880bfd7d5dee689ffa88c4d78e2661c5086ffd /gcc
parent8b37cc6429c7771e6501354521446cfe47f157ff (diff)
downloadgcc-aeb70e782ac3089f3931b58b1291c1196a8e6c8f.zip
gcc-aeb70e782ac3089f3931b58b1291c1196a8e6c8f.tar.gz
gcc-aeb70e782ac3089f3931b58b1291c1196a8e6c8f.tar.bz2
Makefile.in (options.c): Tell optc-gen.awk to include config.h, system.h, coretypes.h and tm.h.
* Makefile.in (options.c): Tell optc-gen.awk to include config.h, system.h, coretypes.h and tm.h. (options.o): Update dependencies accordingly. * optc-gen.awk: Allow header_name to be a list of filenames. Handle the "Condition" flag. * opts.h (CL_DISABLED): New flag. * opts.c (handle_option): Print an error for CL_DISABLED options. * doc/options.texi: Document the "Condition" option flag. From-SVN: r99774
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/Makefile.in4
-rw-r--r--gcc/doc/options.texi7
-rw-r--r--gcc/optc-gen.awk22
-rw-r--r--gcc/opts.c8
-rw-r--r--gcc/opts.h1
6 files changed, 46 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 866c8b2..061d63e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2005-05-16 Richard Sandiford <rsandifo@redhat.com>
+
+ * Makefile.in (options.c): Tell optc-gen.awk to include config.h,
+ system.h, coretypes.h and tm.h.
+ (options.o): Update dependencies accordingly.
+ * optc-gen.awk: Allow header_name to be a list of filenames.
+ Handle the "Condition" flag.
+ * opts.h (CL_DISABLED): New flag.
+ * opts.c (handle_option): Print an error for CL_DISABLED options.
+ * doc/options.texi: Document the "Condition" option flag.
+
2005-05-16 Paolo Bonzini <bonzini@gnu.org>
* tree-inline.c (estimate_num_insns_1): Handle VEC_COND_EXPR.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 517d5d8..8d0d15c 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1569,7 +1569,7 @@ s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
options.c: optionlist $(srcdir)/opt-functions.awk $(srcdir)/optc-gen.awk
$(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/optc-gen.awk \
- -v header_name="options.h" < $< > $@
+ -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
options.h: s-options-h ; @true
s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opth-gen.awk
@@ -1578,7 +1578,7 @@ s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opth-gen.awk
$(SHELL) $(srcdir)/../move-if-change tmp-options.h options.h
$(STAMP) $@
-options.o: options.c options.h opts.h intl.h
+options.o: options.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) opts.h intl.h
dumpvers: dumpvers.c
diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi
index 2ab1893..307a325 100644
--- a/gcc/doc/options.texi
+++ b/gcc/doc/options.texi
@@ -191,4 +191,11 @@ The state of the option should be printed by @option{-fverbose-asm}.
@item Undocumented
The option is deliberately missing documentation and should not
be included in the @option{--help} output.
+
+@item Condition(@var{cond})
+The option should only be accepted if preprocessor condition
+@var{cond} is true. Note that any C declarations associated with the
+option will be present even if @var{cond} is false; @var{cond} simply
+controls whether the option is accepted and whether it is printed in
+the @option{--help} output.
@end table
diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk
index 5476674..e647cd9 100644
--- a/gcc/optc-gen.awk
+++ b/gcc/optc-gen.awk
@@ -57,7 +57,9 @@ END {
print "/* This file is auto-generated by opts.sh. */"
print ""
print "#include <intl.h>"
-print "#include " quote header_name quote
+n_headers = split(header_name, headers, " ")
+for (i = 1; i <= n_headers; i++)
+ print "#include " quote headers[i] quote
print "#include " quote "opts.h" quote
print ""
@@ -135,10 +137,20 @@ for (i = 0; i < n_opts; i++) {
else
hlp = quote help[i] quote;
- printf(" { %c-%s%c,\n %s,\n %s, %u, %s, %s, %s }%s\n",
- quote, opts[i], quote, hlp, back_chain[i], len,
- switch_flags(flags[i]),
- var_ref(flags[i]), var_set(flags[i]), comma)
+ printf(" { %c-%s%c,\n %s,\n %s, %u,\n",
+ quote, opts[i], quote, hlp, back_chain[i], len)
+ condition = opt_args("Condition", flags[i])
+ cl_flags = switch_flags(flags[i])
+ if (condition != "")
+ printf("#if %s\n" \
+ " %s,\n" \
+ "#else\n" \
+ " CL_DISABLED,\n" \
+ "#endif\n",
+ condition, cl_flags, cl_flags)
+ else
+ printf(" %s,\n", cl_flags)
+ printf(" %s, %s }%s\n", var_ref(flags[i]), var_set(flags[i]), comma)
}
print "};"
diff --git a/gcc/opts.c b/gcc/opts.c
index 97f8931..896728c 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -315,6 +315,14 @@ handle_option (const char **argv, unsigned int lang_mask)
/* We've recognized this switch. */
result = 1;
+ /* Check to see if the option is disabled for this configuration. */
+ if (option->flags & CL_DISABLED)
+ {
+ error ("command line option %qs"
+ " is not supported by this configuration", opt);
+ goto done;
+ }
+
/* Sort out any argument the switch takes. */
if (option->flags & CL_JOINED)
{
diff --git a/gcc/opts.h b/gcc/opts.h
index bed419e..758f830 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -52,6 +52,7 @@ extern const struct cl_option cl_options[];
extern const unsigned int cl_options_count;
extern const char *const lang_names[];
+#define CL_DISABLED (1 << 21) /* Disabled in this configuration. */
#define CL_TARGET (1 << 22) /* Target-specific option. */
#define CL_REPORT (1 << 23) /* Report argument with -fverbose-asm */
#define CL_JOINED (1 << 24) /* If takes joined argument. */