Patchwork Don't include flags.h in tm.h

login
register
mail settings
Submitter Joseph S. Myers
Date Oct. 11, 2010, 5:30 p.m.
Message ID <Pine.LNX.4.64.1010111729560.30928@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/67460/
State New
Headers show

Comments

Joseph S. Myers - Oct. 11, 2010, 5:30 p.m.
This patch stops flags.h from being included in tm.h, instead moving
types required by options.h into a separate flag-types.h, as proposed
in <http://gcc.gnu.org/ml/gcc-patches/2010-10/msg00787.html>.  (I
didn't try to limit the types moved to just those required by
options.h, since it's likely more variables will end up moving to
options.h and so require more types there.)

I don't know if this will help with the Cygwin problems reported by
RTH.

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  Also
tested building cc1 for cross to mips-elf (previously broken, works
with this patch).  OK to commit?

2010-10-11  Joseph Myers  <joseph@codesourcery.com>

	* flag-types.h: New.
	* Makefile.in (TH_H): Include $(OPTIONS_H) instead of $(FLAGS_H).
	(FLAGS_H): Include flag-types.h.  Include $(OPTIONS_H) instead of
	options.h.
	(OPTIONS_H): Define.
	(c-family/c-opts.o, lto-opts.o, opts.o): Use $(OPTIONS_H) instead
	of options.h.
	* configure.ac (tm_include_list): Include options.h not flags.h.
	* configure: Regenerate.
	* flags.h: Include flag-types.h.  Include options.h at top of file
	again.
	(enum debug_info_type, enum debug_info_level, enum
	debug_info_usage, enum symbol_visibility, struct visibility_flags,
	enum ira_algorithm, enum ira_region, enum excess_precision, enum
	graph_dump_types, enum stack_check_type, enum
	warn_strict_overflow_code): Move to flag-types.h
	* opth-gen.awk: Include flag-types.h in options.h.

ada:
2010-10-11  Joseph Myers  <joseph@codesourcery.com>

	* gcc-interface/Make-lang.in (ada/misc.o): Use $(OPTIONS_H)
	instead of options.h.

java:
2010-10-11  Joseph Myers  <joseph@codesourcery.com>

	* Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of
	options.h.
Richard Guenther - Oct. 12, 2010, 10:01 a.m.
On Mon, Oct 11, 2010 at 7:30 PM, Joseph S. Myers
<joseph@codesourcery.com> wrote:
> This patch stops flags.h from being included in tm.h, instead moving
> types required by options.h into a separate flag-types.h, as proposed
> in <http://gcc.gnu.org/ml/gcc-patches/2010-10/msg00787.html>.  (I
> didn't try to limit the types moved to just those required by
> options.h, since it's likely more variables will end up moving to
> options.h and so require more types there.)
>
> I don't know if this will help with the Cygwin problems reported by
> RTH.
>
> Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  Also
> tested building cc1 for cross to mips-elf (previously broken, works
> with this patch).  OK to commit?

Ok.

Thanks,
Richard.

> 2010-10-11  Joseph Myers  <joseph@codesourcery.com>
>
>        * flag-types.h: New.
>        * Makefile.in (TH_H): Include $(OPTIONS_H) instead of $(FLAGS_H).
>        (FLAGS_H): Include flag-types.h.  Include $(OPTIONS_H) instead of
>        options.h.
>        (OPTIONS_H): Define.
>        (c-family/c-opts.o, lto-opts.o, opts.o): Use $(OPTIONS_H) instead
>        of options.h.
>        * configure.ac (tm_include_list): Include options.h not flags.h.
>        * configure: Regenerate.
>        * flags.h: Include flag-types.h.  Include options.h at top of file
>        again.
>        (enum debug_info_type, enum debug_info_level, enum
>        debug_info_usage, enum symbol_visibility, struct visibility_flags,
>        enum ira_algorithm, enum ira_region, enum excess_precision, enum
>        graph_dump_types, enum stack_check_type, enum
>        warn_strict_overflow_code): Move to flag-types.h
>        * opth-gen.awk: Include flag-types.h in options.h.
>
> ada:
> 2010-10-11  Joseph Myers  <joseph@codesourcery.com>
>
>        * gcc-interface/Make-lang.in (ada/misc.o): Use $(OPTIONS_H)
>        instead of options.h.
>
> java:
> 2010-10-11  Joseph Myers  <joseph@codesourcery.com>
>
>        * Make-lang.in (java/lang.o): Use $(OPTIONS_H) instead of
>        options.h.
>
> Index: gcc/flags.h
> ===================================================================
> --- gcc/flags.h (revision 165304)
> +++ gcc/flags.h (working copy)
> @@ -23,54 +23,20 @@ along with GCC; see the file COPYING3.
>  #define GCC_FLAGS_H
>
>  #include "coretypes.h"
> +#include "flag-types.h"
> +#include "options.h"
>
>  #if !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS) && !defined(IN_RTS)
>
> -enum debug_info_type
> -{
> -  NO_DEBUG,        /* Write no debug info.  */
> -  DBX_DEBUG,       /* Write BSD .stabs for DBX (using dbxout.c).  */
> -  SDB_DEBUG,       /* Write COFF for (old) SDB (using sdbout.c).  */
> -  DWARF2_DEBUG,            /* Write Dwarf v2 debug info (using dwarf2out.c).  */
> -  XCOFF_DEBUG,     /* Write IBM/Xcoff debug info (using dbxout.c).  */
> -  VMS_DEBUG,        /* Write VMS debug info (using vmsdbgout.c).  */
> -  VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c).
> -                          and DWARF v2 debug info (using dwarf2out.c).  */
> -};
> -
>  /* Specify which kind of debugging info to generate.  */
>  extern enum debug_info_type write_symbols;
>
>  /* Names of debug_info_type, for error messages.  */
>  extern const char *const debug_type_names[];
>
> -enum debug_info_level
> -{
> -  DINFO_LEVEL_NONE,    /* Write no debugging info.  */
> -  DINFO_LEVEL_TERSE,   /* Write minimal info to support tracebacks only.  */
> -  DINFO_LEVEL_NORMAL,  /* Write info for all declarations (and line table).  */
> -  DINFO_LEVEL_VERBOSE  /* Write normal info plus #define/#undef info.  */
> -};
> -
>  /* Specify how much debugging info to generate.  */
>  extern enum debug_info_level debug_info_level;
>
> -/* A major contribution to object and executable size is debug
> -   information size.  A major contribution to debug information
> -   size is struct descriptions replicated in several object files.
> -   The following function determines whether or not debug information
> -   should be generated for a given struct.  The indirect parameter
> -   indicates that the struct is being handled indirectly, via
> -   a pointer.  See opts.c for the implementation. */
> -
> -enum debug_info_usage
> -{
> -  DINFO_USAGE_DFN,     /* A struct definition. */
> -  DINFO_USAGE_DIR_USE, /* A direct use, such as the type of a variable. */
> -  DINFO_USAGE_IND_USE, /* An indirect use, such as through a pointer. */
> -  DINFO_USAGE_NUM_ENUMS        /* The number of enumerators. */
> -};
> -
>  extern bool should_emit_struct_debug (tree type_decl, enum debug_info_usage);
>  extern void set_struct_debug_option (const char *value);
>
> @@ -83,28 +49,9 @@ extern bool use_gnu_debug_info_extension
>    an actual variable not a macro.  */
>  extern int flag_compare_debug;
>
> -/* Enumerate visibility settings.  This is deliberately ordered from most
> -   to least visibility.  */
> -#ifndef SYMBOL_VISIBILITY_DEFINED
> -#define SYMBOL_VISIBILITY_DEFINED
> -enum symbol_visibility
> -{
> -  VISIBILITY_DEFAULT,
> -  VISIBILITY_PROTECTED,
> -  VISIBILITY_HIDDEN,
> -  VISIBILITY_INTERNAL
> -};
> -#endif
> -
>  /* The default visibility for all symbols (unless overridden).  */
>  extern enum symbol_visibility default_visibility;
>
> -struct visibility_flags
> -{
> -  unsigned inpragma : 1;       /* True when in #pragma GCC visibility.  */
> -  unsigned inlines_hidden : 1; /* True when -finlineshidden in effect.  */
> -};
> -
>  /* Global visibility options.  */
>  extern struct visibility_flags visibility_options;
>
> @@ -189,29 +136,6 @@ extern int flag_next_runtime;
>
>  extern int flag_dump_rtl_in_asm;
>
> -/* The algorithm used for the integrated register allocator (IRA).  */
> -enum ira_algorithm
> -{
> -  IRA_ALGORITHM_CB,
> -  IRA_ALGORITHM_PRIORITY
> -};
> -
> -/* The regions used for the integrated register allocator (IRA).  */
> -enum ira_region
> -{
> -  IRA_REGION_ONE,
> -  IRA_REGION_ALL,
> -  IRA_REGION_MIXED
> -};
> -
> -/* The options for excess precision.  */
> -enum excess_precision
> -{
> -  EXCESS_PRECISION_DEFAULT,
> -  EXCESS_PRECISION_FAST,
> -  EXCESS_PRECISION_STANDARD
> -};
> -
>  /* The excess precision specified on the command line, or defaulted by
>    the front end.  */
>  extern enum excess_precision flag_excess_precision_cmdline;
> @@ -263,33 +187,8 @@ extern struct target_flag_state *this_ta
>  /* Nonzero if we dump in VCG format, not plain text.  */
>  extern int dump_for_graph;
>
> -/* Selection of the graph form.  */
> -enum graph_dump_types
> -{
> -  no_graph = 0,
> -  vcg
> -};
>  extern enum graph_dump_types graph_dump_format;
>
> -/* Type of stack check.  */
> -enum stack_check_type
> -{
> -  /* Do not check the stack.  */
> -  NO_STACK_CHECK = 0,
> -
> -  /* Check the stack generically, i.e. assume no specific support
> -     from the target configuration files.  */
> -  GENERIC_STACK_CHECK,
> -
> -  /* Check the stack and rely on the target configuration files to
> -     check the static frame of functions, i.e. use the generic
> -     mechanism only for dynamic stack allocations.  */
> -  STATIC_BUILTIN_STACK_CHECK,
> -
> -  /* Check the stack and entirely rely on the target configuration
> -     files, i.e. do not use the generic mechanism at all.  */
> -  FULL_BUILTIN_STACK_CHECK
> -};
>  extern enum stack_check_type flag_stack_check;
>
>  /* Returns TRUE if generated code should match ABI version N or
> @@ -326,38 +225,9 @@ extern bool flag_instrument_functions_ex
>  /* True if pointer types have undefined overflow.  */
>  #define POINTER_TYPE_OVERFLOW_UNDEFINED (flag_strict_overflow)
>
> -/* Names for the different levels of -Wstrict-overflow=N.  The numeric
> -   values here correspond to N.  */
> -
> -enum warn_strict_overflow_code
> -{
> -  /* Overflow warning that should be issued with -Wall: a questionable
> -     construct that is easy to avoid even when using macros.  Example:
> -     folding (x + CONSTANT > x) to 1.  */
> -  WARN_STRICT_OVERFLOW_ALL = 1,
> -  /* Overflow warning about folding a comparison to a constant because
> -     of undefined signed overflow, other than cases covered by
> -     WARN_STRICT_OVERFLOW_ALL.  Example: folding (abs (x) >= 0) to 1
> -     (this is false when x == INT_MIN).  */
> -  WARN_STRICT_OVERFLOW_CONDITIONAL = 2,
> -  /* Overflow warning about changes to comparisons other than folding
> -     them to a constant.  Example: folding (x + 1 > 1) to (x > 0).  */
> -  WARN_STRICT_OVERFLOW_COMPARISON = 3,
> -  /* Overflow warnings not covered by the above cases.  Example:
> -     folding ((x * 10) / 5) to (x * 2).  */
> -  WARN_STRICT_OVERFLOW_MISC = 4,
> -  /* Overflow warnings about reducing magnitude of constants in
> -     comparison.  Example: folding (x + 2 > y) to (x + 1 >= y).  */
> -  WARN_STRICT_OVERFLOW_MAGNITUDE = 5
> -};
> -
>  /* Whether to emit an overflow warning whose code is C.  */
>  #define issue_strict_overflow_warning(c) (warn_strict_overflow >= (int) (c))
>
>  #endif
>
> -/* This is included last because options may use types declared
> -   above.  */
> -#include "options.h"
> -
>  #endif /* ! GCC_FLAGS_H */
> Index: gcc/java/Make-lang.in
> ===================================================================
> --- gcc/java/Make-lang.in       (revision 165304)
> +++ gcc/java/Make-lang.in       (working copy)
> @@ -302,7 +302,7 @@ java/jvgenmain.o: java/jvgenmain.c $(CON
>   coretypes.h $(TM_H) intl.h
>  java/lang.o: java/lang.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h input.h \
>   toplev.h $(SYSTEM_H) coretypes.h $(TM_H) $(DIAGNOSTIC_H) \
> -  langhooks.h $(LANGHOOKS_DEF_H) gt-java-lang.h opts.h options.h \
> +  langhooks.h $(LANGHOOKS_DEF_H) gt-java-lang.h opts.h $(OPTIONS_H) \
>   $(TARGET_H)
>  java/mangle.o: java/mangle.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) $(SYSTEM_H) \
>   coretypes.h $(TM_H) toplev.h $(GGC_H) gt-java-mangle.h $(LANGHOOKS_DEF_H)
> Index: gcc/configure
> ===================================================================
> --- gcc/configure       (revision 165304)
> +++ gcc/configure       (working copy)
> @@ -10843,7 +10843,7 @@ tmake_file="${tmake_file_}"
>  out_object_file=`basename $out_file .c`.o
>
>  tm_file_list="options.h"
> -tm_include_list="flags.h insn-constants.h"
> +tm_include_list="options.h insn-constants.h"
>  for f in $tm_file; do
>   case $f in
>     ./* )
> Index: gcc/ada/gcc-interface/Make-lang.in
> ===================================================================
> --- gcc/ada/gcc-interface/Make-lang.in  (revision 165304)
> +++ gcc/ada/gcc-interface/Make-lang.in  (working copy)
> @@ -1234,7 +1234,7 @@ ada/decl.o : ada/gcc-interface/decl.c $(
>  ada/misc.o : ada/gcc-interface/misc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
>    $(TM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TARGET_H) $(FUNCTION_H) \
>    $(FLAGS_H) debug.h toplev.h langhooks.h \
> -   $(LANGHOOKS_DEF_H) opts.h options.h $(TREE_INLINE_H) $(PLUGIN_H) \
> +   $(LANGHOOKS_DEF_H) opts.h $(OPTIONS_H) $(TREE_INLINE_H) $(PLUGIN_H) \
>    ada/gcc-interface/ada.h ada/adadecode.h ada/types.h ada/atree.h \
>    ada/elists.h ada/namet.h ada/nlists.h ada/stringt.h ada/uintp.h ada/fe.h \
>    ada/sinfo.h ada/einfo.h $(ADA_TREE_H) ada/gcc-interface/gigi.h \
> Index: gcc/configure.ac
> ===================================================================
> --- gcc/configure.ac    (revision 165304)
> +++ gcc/configure.ac    (working copy)
> @@ -1609,7 +1609,7 @@ tmake_file="${tmake_file_}"
>  out_object_file=`basename $out_file .c`.o
>
>  tm_file_list="options.h"
> -tm_include_list="flags.h insn-constants.h"
> +tm_include_list="options.h insn-constants.h"
>  for f in $tm_file; do
>   case $f in
>     ./* )
> Index: gcc/flag-types.h
> ===================================================================
> --- gcc/flag-types.h    (revision 0)
> +++ gcc/flag-types.h    (revision 0)
> @@ -0,0 +1,155 @@
> +/* Compilation switch flag type definitions for GCC.
> +   Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002,
> +   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
> +   Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC 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 3, or (at your option) any later
> +version.
> +
> +GCC 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 COPYING3.  If not see
> +<http://www.gnu.org/licenses/>.  */
> +
> +#ifndef GCC_FLAG_TYPES_H
> +#define GCC_FLAG_TYPES_H
> +
> +enum debug_info_type
> +{
> +  NO_DEBUG,        /* Write no debug info.  */
> +  DBX_DEBUG,       /* Write BSD .stabs for DBX (using dbxout.c).  */
> +  SDB_DEBUG,       /* Write COFF for (old) SDB (using sdbout.c).  */
> +  DWARF2_DEBUG,            /* Write Dwarf v2 debug info (using dwarf2out.c).  */
> +  XCOFF_DEBUG,     /* Write IBM/Xcoff debug info (using dbxout.c).  */
> +  VMS_DEBUG,        /* Write VMS debug info (using vmsdbgout.c).  */
> +  VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c).
> +                          and DWARF v2 debug info (using dwarf2out.c).  */
> +};
> +
> +enum debug_info_level
> +{
> +  DINFO_LEVEL_NONE,    /* Write no debugging info.  */
> +  DINFO_LEVEL_TERSE,   /* Write minimal info to support tracebacks only.  */
> +  DINFO_LEVEL_NORMAL,  /* Write info for all declarations (and line table).  */
> +  DINFO_LEVEL_VERBOSE  /* Write normal info plus #define/#undef info.  */
> +};
> +
> +/* A major contribution to object and executable size is debug
> +   information size.  A major contribution to debug information
> +   size is struct descriptions replicated in several object files.
> +   The following function determines whether or not debug information
> +   should be generated for a given struct.  The indirect parameter
> +   indicates that the struct is being handled indirectly, via
> +   a pointer.  See opts.c for the implementation. */
> +
> +enum debug_info_usage
> +{
> +  DINFO_USAGE_DFN,     /* A struct definition. */
> +  DINFO_USAGE_DIR_USE, /* A direct use, such as the type of a variable. */
> +  DINFO_USAGE_IND_USE, /* An indirect use, such as through a pointer. */
> +  DINFO_USAGE_NUM_ENUMS        /* The number of enumerators. */
> +};
> +
> +/* Enumerate visibility settings.  This is deliberately ordered from most
> +   to least visibility.  */
> +#ifndef SYMBOL_VISIBILITY_DEFINED
> +#define SYMBOL_VISIBILITY_DEFINED
> +enum symbol_visibility
> +{
> +  VISIBILITY_DEFAULT,
> +  VISIBILITY_PROTECTED,
> +  VISIBILITY_HIDDEN,
> +  VISIBILITY_INTERNAL
> +};
> +#endif
> +
> +struct visibility_flags
> +{
> +  unsigned inpragma : 1;       /* True when in #pragma GCC visibility.  */
> +  unsigned inlines_hidden : 1; /* True when -finlineshidden in effect.  */
> +};
> +
> +/* The algorithm used for the integrated register allocator (IRA).  */
> +enum ira_algorithm
> +{
> +  IRA_ALGORITHM_CB,
> +  IRA_ALGORITHM_PRIORITY
> +};
> +
> +/* The regions used for the integrated register allocator (IRA).  */
> +enum ira_region
> +{
> +  IRA_REGION_ONE,
> +  IRA_REGION_ALL,
> +  IRA_REGION_MIXED
> +};
> +
> +/* The options for excess precision.  */
> +enum excess_precision
> +{
> +  EXCESS_PRECISION_DEFAULT,
> +  EXCESS_PRECISION_FAST,
> +  EXCESS_PRECISION_STANDARD
> +};
> +
> +/* Selection of the graph form.  */
> +enum graph_dump_types
> +{
> +  no_graph = 0,
> +  vcg
> +};
> +
> +/* Type of stack check.  */
> +enum stack_check_type
> +{
> +  /* Do not check the stack.  */
> +  NO_STACK_CHECK = 0,
> +
> +  /* Check the stack generically, i.e. assume no specific support
> +     from the target configuration files.  */
> +  GENERIC_STACK_CHECK,
> +
> +  /* Check the stack and rely on the target configuration files to
> +     check the static frame of functions, i.e. use the generic
> +     mechanism only for dynamic stack allocations.  */
> +  STATIC_BUILTIN_STACK_CHECK,
> +
> +  /* Check the stack and entirely rely on the target configuration
> +     files, i.e. do not use the generic mechanism at all.  */
> +  FULL_BUILTIN_STACK_CHECK
> +};
> +
> +/* Names for the different levels of -Wstrict-overflow=N.  The numeric
> +   values here correspond to N.  */
> +
> +enum warn_strict_overflow_code
> +{
> +  /* Overflow warning that should be issued with -Wall: a questionable
> +     construct that is easy to avoid even when using macros.  Example:
> +     folding (x + CONSTANT > x) to 1.  */
> +  WARN_STRICT_OVERFLOW_ALL = 1,
> +  /* Overflow warning about folding a comparison to a constant because
> +     of undefined signed overflow, other than cases covered by
> +     WARN_STRICT_OVERFLOW_ALL.  Example: folding (abs (x) >= 0) to 1
> +     (this is false when x == INT_MIN).  */
> +  WARN_STRICT_OVERFLOW_CONDITIONAL = 2,
> +  /* Overflow warning about changes to comparisons other than folding
> +     them to a constant.  Example: folding (x + 1 > 1) to (x > 0).  */
> +  WARN_STRICT_OVERFLOW_COMPARISON = 3,
> +  /* Overflow warnings not covered by the above cases.  Example:
> +     folding ((x * 10) / 5) to (x * 2).  */
> +  WARN_STRICT_OVERFLOW_MISC = 4,
> +  /* Overflow warnings about reducing magnitude of constants in
> +     comparison.  Example: folding (x + 2 > y) to (x + 1 >= y).  */
> +  WARN_STRICT_OVERFLOW_MAGNITUDE = 5
> +};
> +
> +#endif /* ! GCC_FLAG_TYPES_H */
> Index: gcc/opth-gen.awk
> ===================================================================
> --- gcc/opth-gen.awk    (revision 165304)
> +++ gcc/opth-gen.awk    (working copy)
> @@ -70,6 +70,8 @@ print ""
>  print "#ifndef OPTIONS_H"
>  print "#define OPTIONS_H"
>  print ""
> +print "#include \"flag-types.h\""
> +print ""
>
>  have_save = 0;
>
> Index: gcc/Makefile.in
> ===================================================================
> --- gcc/Makefile.in     (revision 165304)
> +++ gcc/Makefile.in     (working copy)
> @@ -823,7 +823,7 @@ CONFIG_H  = config.h  $(host_xm_file_lis
>  TCONFIG_H = tconfig.h $(xm_file_list)
>  TM_P_H    = tm_p.h    $(tm_p_file_list)
>  GTM_H     = tm.h      $(tm_file_list) insn-constants.h
> -TM_H      = $(GTM_H) insn-flags.h $(FLAGS_H)
> +TM_H      = $(GTM_H) insn-flags.h $(OPTIONS_H)
>
>  # Variables for version information.
>  BASEVER     := $(srcdir)/BASE-VER  # 4.x.y
> @@ -897,7 +897,8 @@ DEMANGLE_H = $(srcdir)/../include/demang
>  RECOG_H = recog.h
>  ALIAS_H = alias.h coretypes.h
>  EMIT_RTL_H = emit-rtl.h
> -FLAGS_H = flags.h coretypes.h options.h
> +FLAGS_H = flags.h coretypes.h flag-types.h $(OPTIONS_H)
> +OPTIONS_H = options.h flag-types.h
>  FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) vecprim.h $(TM_H)
>  EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) $(MACHMODE_H) $(EMIT_RTL_H)
>  OPTABS_H = optabs.h insn-codes.h
> @@ -2123,7 +2124,7 @@ c-family/c-omp.o : c-family/c-omp.c $(CO
>  c-family/c-opts.o : c-family/c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
>         $(TREE_H) $(C_PRAGMA_H) $(FLAGS_H) $(TOPLEV_H) langhooks.h \
>         $(DIAGNOSTIC_H) intl.h debug.h $(C_COMMON_H)   \
> -        opts.h options.h $(MKDEPS_H) incpath.h cppdefault.h
> +        opts.h $(OPTIONS_H) $(MKDEPS_H) incpath.h cppdefault.h
>        $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
>                $< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@
>
> @@ -2324,7 +2325,7 @@ lto-symtab.o: lto-symtab.c $(CONFIG_H) $
>    toplev.h $(TREE_H) $(GIMPLE_H) $(GGC_H) $(LAMBDA_H) $(HASHTAB_H) \
>    $(LTO_STREAMER_H) $(LINKER_PLUGIN_API_H) gt-lto-symtab.h
>  lto-opts.o: lto-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
> -   $(HASHTAB_H) $(GGC_H) $(BITMAP_H) $(FLAGS_H) opts.h options.h \
> +   $(HASHTAB_H) $(GGC_H) $(BITMAP_H) $(FLAGS_H) opts.h $(OPTIONS_H) \
>    $(TARGET_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(LTO_STREAMER_H)
>  lto-streamer.o: lto-streamer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h   \
>    $(TM_H) $(TREE_H) $(GIMPLE_H) $(BITMAP_H) $(LTO_STREAMER_H) $(FLAGS_H) \
> @@ -2816,7 +2817,7 @@ fold-const.o : fold-const.c $(CONFIG_H)
>    $(GIMPLE_H) realmpfr.h $(TREE_FLOW_H)
>  diagnostic.o : diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
>    version.h $(INPUT_H) intl.h $(DIAGNOSTIC_H) diagnostic.def
> -opts.o : opts.c opts.h options.h $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) $(CONFIG_H) $(SYSTEM_H) \
> +opts.o : opts.c opts.h $(OPTIONS_H) $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) $(CONFIG_H) $(SYSTEM_H) \
>    coretypes.h $(TREE_H) $(TM_H) langhooks.h $(GGC_H) $(EXPR_H) $(RTL_H) \
>    output.h $(DIAGNOSTIC_H) $(TM_P_H) $(INSN_ATTR_H) intl.h $(TARGET_H) \
>    $(FLAGS_H) $(PARAMS_H) $(TREE_PASS_H) $(DBGCNT_H) debug.h \
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
>

Patch

Index: gcc/flags.h
===================================================================
--- gcc/flags.h	(revision 165304)
+++ gcc/flags.h	(working copy)
@@ -23,54 +23,20 @@  along with GCC; see the file COPYING3.  
 #define GCC_FLAGS_H
 
 #include "coretypes.h"
+#include "flag-types.h"
+#include "options.h"
 
 #if !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS) && !defined(IN_RTS)
 
-enum debug_info_type
-{
-  NO_DEBUG,	    /* Write no debug info.  */
-  DBX_DEBUG,	    /* Write BSD .stabs for DBX (using dbxout.c).  */
-  SDB_DEBUG,	    /* Write COFF for (old) SDB (using sdbout.c).  */
-  DWARF2_DEBUG,	    /* Write Dwarf v2 debug info (using dwarf2out.c).  */
-  XCOFF_DEBUG,	    /* Write IBM/Xcoff debug info (using dbxout.c).  */
-  VMS_DEBUG,        /* Write VMS debug info (using vmsdbgout.c).  */
-  VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c).
-                          and DWARF v2 debug info (using dwarf2out.c).  */
-};
-
 /* Specify which kind of debugging info to generate.  */
 extern enum debug_info_type write_symbols;
 
 /* Names of debug_info_type, for error messages.  */
 extern const char *const debug_type_names[];
 
-enum debug_info_level
-{
-  DINFO_LEVEL_NONE,	/* Write no debugging info.  */
-  DINFO_LEVEL_TERSE,	/* Write minimal info to support tracebacks only.  */
-  DINFO_LEVEL_NORMAL,	/* Write info for all declarations (and line table).  */
-  DINFO_LEVEL_VERBOSE	/* Write normal info plus #define/#undef info.  */
-};
-
 /* Specify how much debugging info to generate.  */
 extern enum debug_info_level debug_info_level;
 
-/* A major contribution to object and executable size is debug
-   information size.  A major contribution to debug information
-   size is struct descriptions replicated in several object files.
-   The following function determines whether or not debug information
-   should be generated for a given struct.  The indirect parameter
-   indicates that the struct is being handled indirectly, via
-   a pointer.  See opts.c for the implementation. */
-
-enum debug_info_usage
-{
-  DINFO_USAGE_DFN,	/* A struct definition. */
-  DINFO_USAGE_DIR_USE,	/* A direct use, such as the type of a variable. */
-  DINFO_USAGE_IND_USE,	/* An indirect use, such as through a pointer. */
-  DINFO_USAGE_NUM_ENUMS	/* The number of enumerators. */
-};
-
 extern bool should_emit_struct_debug (tree type_decl, enum debug_info_usage);
 extern void set_struct_debug_option (const char *value);
 
@@ -83,28 +49,9 @@  extern bool use_gnu_debug_info_extension
    an actual variable not a macro.  */
 extern int flag_compare_debug;
 
-/* Enumerate visibility settings.  This is deliberately ordered from most
-   to least visibility.  */
-#ifndef SYMBOL_VISIBILITY_DEFINED
-#define SYMBOL_VISIBILITY_DEFINED
-enum symbol_visibility
-{
-  VISIBILITY_DEFAULT,
-  VISIBILITY_PROTECTED,
-  VISIBILITY_HIDDEN,
-  VISIBILITY_INTERNAL
-};
-#endif
-
 /* The default visibility for all symbols (unless overridden).  */
 extern enum symbol_visibility default_visibility;
 
-struct visibility_flags
-{
-  unsigned inpragma : 1;	/* True when in #pragma GCC visibility.  */
-  unsigned inlines_hidden : 1;	/* True when -finlineshidden in effect.  */
-};
-
 /* Global visibility options.  */
 extern struct visibility_flags visibility_options;
 
@@ -189,29 +136,6 @@  extern int flag_next_runtime;
 
 extern int flag_dump_rtl_in_asm;
 
-/* The algorithm used for the integrated register allocator (IRA).  */
-enum ira_algorithm
-{
-  IRA_ALGORITHM_CB,
-  IRA_ALGORITHM_PRIORITY
-};
-
-/* The regions used for the integrated register allocator (IRA).  */
-enum ira_region
-{
-  IRA_REGION_ONE,
-  IRA_REGION_ALL,
-  IRA_REGION_MIXED
-};
-
-/* The options for excess precision.  */
-enum excess_precision
-{
-  EXCESS_PRECISION_DEFAULT,
-  EXCESS_PRECISION_FAST,
-  EXCESS_PRECISION_STANDARD
-};
-
 /* The excess precision specified on the command line, or defaulted by
    the front end.  */
 extern enum excess_precision flag_excess_precision_cmdline;
@@ -263,33 +187,8 @@  extern struct target_flag_state *this_ta
 /* Nonzero if we dump in VCG format, not plain text.  */
 extern int dump_for_graph;
 
-/* Selection of the graph form.  */
-enum graph_dump_types
-{
-  no_graph = 0,
-  vcg
-};
 extern enum graph_dump_types graph_dump_format;
 
-/* Type of stack check.  */
-enum stack_check_type
-{
-  /* Do not check the stack.  */
-  NO_STACK_CHECK = 0,
-
-  /* Check the stack generically, i.e. assume no specific support
-     from the target configuration files.  */
-  GENERIC_STACK_CHECK,
-
-  /* Check the stack and rely on the target configuration files to
-     check the static frame of functions, i.e. use the generic
-     mechanism only for dynamic stack allocations.  */
-  STATIC_BUILTIN_STACK_CHECK,
-
-  /* Check the stack and entirely rely on the target configuration
-     files, i.e. do not use the generic mechanism at all.  */
-  FULL_BUILTIN_STACK_CHECK
-};
 extern enum stack_check_type flag_stack_check;
 
 /* Returns TRUE if generated code should match ABI version N or
@@ -326,38 +225,9 @@  extern bool flag_instrument_functions_ex
 /* True if pointer types have undefined overflow.  */
 #define POINTER_TYPE_OVERFLOW_UNDEFINED (flag_strict_overflow)
 
-/* Names for the different levels of -Wstrict-overflow=N.  The numeric
-   values here correspond to N.  */
-
-enum warn_strict_overflow_code
-{
-  /* Overflow warning that should be issued with -Wall: a questionable
-     construct that is easy to avoid even when using macros.  Example:
-     folding (x + CONSTANT > x) to 1.  */
-  WARN_STRICT_OVERFLOW_ALL = 1,
-  /* Overflow warning about folding a comparison to a constant because
-     of undefined signed overflow, other than cases covered by
-     WARN_STRICT_OVERFLOW_ALL.  Example: folding (abs (x) >= 0) to 1
-     (this is false when x == INT_MIN).  */
-  WARN_STRICT_OVERFLOW_CONDITIONAL = 2,
-  /* Overflow warning about changes to comparisons other than folding
-     them to a constant.  Example: folding (x + 1 > 1) to (x > 0).  */
-  WARN_STRICT_OVERFLOW_COMPARISON = 3,
-  /* Overflow warnings not covered by the above cases.  Example:
-     folding ((x * 10) / 5) to (x * 2).  */
-  WARN_STRICT_OVERFLOW_MISC = 4,
-  /* Overflow warnings about reducing magnitude of constants in
-     comparison.  Example: folding (x + 2 > y) to (x + 1 >= y).  */
-  WARN_STRICT_OVERFLOW_MAGNITUDE = 5
-};
-
 /* Whether to emit an overflow warning whose code is C.  */
 #define issue_strict_overflow_warning(c) (warn_strict_overflow >= (int) (c))
 
 #endif
 
-/* This is included last because options may use types declared
-   above.  */
-#include "options.h"
-
 #endif /* ! GCC_FLAGS_H */
Index: gcc/java/Make-lang.in
===================================================================
--- gcc/java/Make-lang.in	(revision 165304)
+++ gcc/java/Make-lang.in	(working copy)
@@ -302,7 +302,7 @@  java/jvgenmain.o: java/jvgenmain.c $(CON
   coretypes.h $(TM_H) intl.h
 java/lang.o: java/lang.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h input.h \
   toplev.h $(SYSTEM_H) coretypes.h $(TM_H) $(DIAGNOSTIC_H) \
-  langhooks.h $(LANGHOOKS_DEF_H) gt-java-lang.h opts.h options.h \
+  langhooks.h $(LANGHOOKS_DEF_H) gt-java-lang.h opts.h $(OPTIONS_H) \
   $(TARGET_H)
 java/mangle.o: java/mangle.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) $(SYSTEM_H) \
   coretypes.h $(TM_H) toplev.h $(GGC_H) gt-java-mangle.h $(LANGHOOKS_DEF_H)
Index: gcc/configure
===================================================================
--- gcc/configure	(revision 165304)
+++ gcc/configure	(working copy)
@@ -10843,7 +10843,7 @@  tmake_file="${tmake_file_}"
 out_object_file=`basename $out_file .c`.o
 
 tm_file_list="options.h"
-tm_include_list="flags.h insn-constants.h"
+tm_include_list="options.h insn-constants.h"
 for f in $tm_file; do
   case $f in
     ./* )
Index: gcc/ada/gcc-interface/Make-lang.in
===================================================================
--- gcc/ada/gcc-interface/Make-lang.in	(revision 165304)
+++ gcc/ada/gcc-interface/Make-lang.in	(working copy)
@@ -1234,7 +1234,7 @@  ada/decl.o : ada/gcc-interface/decl.c $(
 ada/misc.o : ada/gcc-interface/misc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
    $(TM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TARGET_H) $(FUNCTION_H) \
    $(FLAGS_H) debug.h toplev.h langhooks.h \
-   $(LANGHOOKS_DEF_H) opts.h options.h $(TREE_INLINE_H) $(PLUGIN_H) \
+   $(LANGHOOKS_DEF_H) opts.h $(OPTIONS_H) $(TREE_INLINE_H) $(PLUGIN_H) \
    ada/gcc-interface/ada.h ada/adadecode.h ada/types.h ada/atree.h \
    ada/elists.h ada/namet.h ada/nlists.h ada/stringt.h ada/uintp.h ada/fe.h \
    ada/sinfo.h ada/einfo.h $(ADA_TREE_H) ada/gcc-interface/gigi.h \
Index: gcc/configure.ac
===================================================================
--- gcc/configure.ac	(revision 165304)
+++ gcc/configure.ac	(working copy)
@@ -1609,7 +1609,7 @@  tmake_file="${tmake_file_}"
 out_object_file=`basename $out_file .c`.o
 
 tm_file_list="options.h"
-tm_include_list="flags.h insn-constants.h"
+tm_include_list="options.h insn-constants.h"
 for f in $tm_file; do
   case $f in
     ./* )
Index: gcc/flag-types.h
===================================================================
--- gcc/flag-types.h	(revision 0)
+++ gcc/flag-types.h	(revision 0)
@@ -0,0 +1,155 @@ 
+/* Compilation switch flag type definitions for GCC.
+   Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002,
+   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC 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 3, or (at your option) any later
+version.
+
+GCC 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 COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_FLAG_TYPES_H
+#define GCC_FLAG_TYPES_H
+
+enum debug_info_type
+{
+  NO_DEBUG,	    /* Write no debug info.  */
+  DBX_DEBUG,	    /* Write BSD .stabs for DBX (using dbxout.c).  */
+  SDB_DEBUG,	    /* Write COFF for (old) SDB (using sdbout.c).  */
+  DWARF2_DEBUG,	    /* Write Dwarf v2 debug info (using dwarf2out.c).  */
+  XCOFF_DEBUG,	    /* Write IBM/Xcoff debug info (using dbxout.c).  */
+  VMS_DEBUG,        /* Write VMS debug info (using vmsdbgout.c).  */
+  VMS_AND_DWARF2_DEBUG /* Write VMS debug info (using vmsdbgout.c).
+                          and DWARF v2 debug info (using dwarf2out.c).  */
+};
+
+enum debug_info_level
+{
+  DINFO_LEVEL_NONE,	/* Write no debugging info.  */
+  DINFO_LEVEL_TERSE,	/* Write minimal info to support tracebacks only.  */
+  DINFO_LEVEL_NORMAL,	/* Write info for all declarations (and line table).  */
+  DINFO_LEVEL_VERBOSE	/* Write normal info plus #define/#undef info.  */
+};
+
+/* A major contribution to object and executable size is debug
+   information size.  A major contribution to debug information
+   size is struct descriptions replicated in several object files.
+   The following function determines whether or not debug information
+   should be generated for a given struct.  The indirect parameter
+   indicates that the struct is being handled indirectly, via
+   a pointer.  See opts.c for the implementation. */
+
+enum debug_info_usage
+{
+  DINFO_USAGE_DFN,	/* A struct definition. */
+  DINFO_USAGE_DIR_USE,	/* A direct use, such as the type of a variable. */
+  DINFO_USAGE_IND_USE,	/* An indirect use, such as through a pointer. */
+  DINFO_USAGE_NUM_ENUMS	/* The number of enumerators. */
+};
+
+/* Enumerate visibility settings.  This is deliberately ordered from most
+   to least visibility.  */
+#ifndef SYMBOL_VISIBILITY_DEFINED
+#define SYMBOL_VISIBILITY_DEFINED
+enum symbol_visibility
+{
+  VISIBILITY_DEFAULT,
+  VISIBILITY_PROTECTED,
+  VISIBILITY_HIDDEN,
+  VISIBILITY_INTERNAL
+};
+#endif
+
+struct visibility_flags
+{
+  unsigned inpragma : 1;	/* True when in #pragma GCC visibility.  */
+  unsigned inlines_hidden : 1;	/* True when -finlineshidden in effect.  */
+};
+
+/* The algorithm used for the integrated register allocator (IRA).  */
+enum ira_algorithm
+{
+  IRA_ALGORITHM_CB,
+  IRA_ALGORITHM_PRIORITY
+};
+
+/* The regions used for the integrated register allocator (IRA).  */
+enum ira_region
+{
+  IRA_REGION_ONE,
+  IRA_REGION_ALL,
+  IRA_REGION_MIXED
+};
+
+/* The options for excess precision.  */
+enum excess_precision
+{
+  EXCESS_PRECISION_DEFAULT,
+  EXCESS_PRECISION_FAST,
+  EXCESS_PRECISION_STANDARD
+};
+
+/* Selection of the graph form.  */
+enum graph_dump_types
+{
+  no_graph = 0,
+  vcg
+};
+
+/* Type of stack check.  */
+enum stack_check_type
+{
+  /* Do not check the stack.  */
+  NO_STACK_CHECK = 0,
+
+  /* Check the stack generically, i.e. assume no specific support
+     from the target configuration files.  */
+  GENERIC_STACK_CHECK,
+
+  /* Check the stack and rely on the target configuration files to
+     check the static frame of functions, i.e. use the generic
+     mechanism only for dynamic stack allocations.  */
+  STATIC_BUILTIN_STACK_CHECK,
+
+  /* Check the stack and entirely rely on the target configuration
+     files, i.e. do not use the generic mechanism at all.  */
+  FULL_BUILTIN_STACK_CHECK
+};
+
+/* Names for the different levels of -Wstrict-overflow=N.  The numeric
+   values here correspond to N.  */
+
+enum warn_strict_overflow_code
+{
+  /* Overflow warning that should be issued with -Wall: a questionable
+     construct that is easy to avoid even when using macros.  Example:
+     folding (x + CONSTANT > x) to 1.  */
+  WARN_STRICT_OVERFLOW_ALL = 1,
+  /* Overflow warning about folding a comparison to a constant because
+     of undefined signed overflow, other than cases covered by
+     WARN_STRICT_OVERFLOW_ALL.  Example: folding (abs (x) >= 0) to 1
+     (this is false when x == INT_MIN).  */
+  WARN_STRICT_OVERFLOW_CONDITIONAL = 2,
+  /* Overflow warning about changes to comparisons other than folding
+     them to a constant.  Example: folding (x + 1 > 1) to (x > 0).  */
+  WARN_STRICT_OVERFLOW_COMPARISON = 3,
+  /* Overflow warnings not covered by the above cases.  Example:
+     folding ((x * 10) / 5) to (x * 2).  */
+  WARN_STRICT_OVERFLOW_MISC = 4,
+  /* Overflow warnings about reducing magnitude of constants in
+     comparison.  Example: folding (x + 2 > y) to (x + 1 >= y).  */
+  WARN_STRICT_OVERFLOW_MAGNITUDE = 5
+};
+
+#endif /* ! GCC_FLAG_TYPES_H */
Index: gcc/opth-gen.awk
===================================================================
--- gcc/opth-gen.awk	(revision 165304)
+++ gcc/opth-gen.awk	(working copy)
@@ -70,6 +70,8 @@  print ""
 print "#ifndef OPTIONS_H"
 print "#define OPTIONS_H"
 print ""
+print "#include \"flag-types.h\""
+print ""
 
 have_save = 0;
 
Index: gcc/Makefile.in
===================================================================
--- gcc/Makefile.in	(revision 165304)
+++ gcc/Makefile.in	(working copy)
@@ -823,7 +823,7 @@  CONFIG_H  = config.h  $(host_xm_file_lis
 TCONFIG_H = tconfig.h $(xm_file_list)
 TM_P_H    = tm_p.h    $(tm_p_file_list)
 GTM_H     = tm.h      $(tm_file_list) insn-constants.h
-TM_H      = $(GTM_H) insn-flags.h $(FLAGS_H)
+TM_H      = $(GTM_H) insn-flags.h $(OPTIONS_H)
 
 # Variables for version information.
 BASEVER     := $(srcdir)/BASE-VER  # 4.x.y
@@ -897,7 +897,8 @@  DEMANGLE_H = $(srcdir)/../include/demang
 RECOG_H = recog.h
 ALIAS_H = alias.h coretypes.h
 EMIT_RTL_H = emit-rtl.h
-FLAGS_H = flags.h coretypes.h options.h
+FLAGS_H = flags.h coretypes.h flag-types.h $(OPTIONS_H)
+OPTIONS_H = options.h flag-types.h
 FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) vecprim.h $(TM_H)
 EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) $(MACHMODE_H) $(EMIT_RTL_H)
 OPTABS_H = optabs.h insn-codes.h
@@ -2123,7 +2124,7 @@  c-family/c-omp.o : c-family/c-omp.c $(CO
 c-family/c-opts.o : c-family/c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
         $(TREE_H) $(C_PRAGMA_H) $(FLAGS_H) $(TOPLEV_H) langhooks.h \
         $(DIAGNOSTIC_H) intl.h debug.h $(C_COMMON_H)	\
-        opts.h options.h $(MKDEPS_H) incpath.h cppdefault.h
+        opts.h $(OPTIONS_H) $(MKDEPS_H) incpath.h cppdefault.h
 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
 		$< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@
 
@@ -2324,7 +2325,7 @@  lto-symtab.o: lto-symtab.c $(CONFIG_H) $
    toplev.h $(TREE_H) $(GIMPLE_H) $(GGC_H) $(LAMBDA_H) $(HASHTAB_H) \
    $(LTO_STREAMER_H) $(LINKER_PLUGIN_API_H) gt-lto-symtab.h
 lto-opts.o: lto-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
-   $(HASHTAB_H) $(GGC_H) $(BITMAP_H) $(FLAGS_H) opts.h options.h \
+   $(HASHTAB_H) $(GGC_H) $(BITMAP_H) $(FLAGS_H) opts.h $(OPTIONS_H) \
    $(TARGET_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(LTO_STREAMER_H)
 lto-streamer.o: lto-streamer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h   \
    $(TM_H) $(TREE_H) $(GIMPLE_H) $(BITMAP_H) $(LTO_STREAMER_H) $(FLAGS_H) \
@@ -2816,7 +2817,7 @@  fold-const.o : fold-const.c $(CONFIG_H) 
    $(GIMPLE_H) realmpfr.h $(TREE_FLOW_H)
 diagnostic.o : diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
    version.h $(INPUT_H) intl.h $(DIAGNOSTIC_H) diagnostic.def
-opts.o : opts.c opts.h options.h $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) $(CONFIG_H) $(SYSTEM_H) \
+opts.o : opts.c opts.h $(OPTIONS_H) $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) $(CONFIG_H) $(SYSTEM_H) \
    coretypes.h $(TREE_H) $(TM_H) langhooks.h $(GGC_H) $(EXPR_H) $(RTL_H) \
    output.h $(DIAGNOSTIC_H) $(TM_P_H) $(INSN_ATTR_H) intl.h $(TARGET_H) \
    $(FLAGS_H) $(PARAMS_H) $(TREE_PASS_H) $(DBGCNT_H) debug.h \