diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 11 | ||||
| -rw-r--r-- | gcc/Makefile.in | 4 | ||||
| -rw-r--r-- | gcc/doc/options.texi | 7 | ||||
| -rw-r--r-- | gcc/optc-gen.awk | 22 | ||||
| -rw-r--r-- | gcc/opts.c | 8 | ||||
| -rw-r--r-- | gcc/opts.h | 1 | 
6 files changed, 46 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 866c8b25d72..061d63e1bfd 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 517d5d8b2ca..8d0d15ca798 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 2ab189317da..307a325e5de 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 5476674a163..e647cd9ad21 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 97f89314fb1..896728c3727 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 bed419e820d..758f8309abd 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.  */  | 

