Index: gcc/regrename.c
===================================================================
--- gcc/regrename.c	(revision 164599)
+++ gcc/regrename.c	(working copy)
@@ -200,7 +200,7 @@ regrename_optimize (void)
       if (frame_pointer_needed)
 	{
 	  add_to_hard_reg_set (&unavailable, Pmode, FRAME_POINTER_REGNUM);
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	  add_to_hard_reg_set (&unavailable, Pmode, HARD_FRAME_POINTER_REGNUM);
 #endif
 	}
@@ -233,7 +233,7 @@ regrename_optimize (void)
 #endif
 
 	  if (fixed_regs[reg] || global_regs[reg]
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	      || (frame_pointer_needed && reg == HARD_FRAME_POINTER_REGNUM)
 #else
 	      || (frame_pointer_needed && reg == FRAME_POINTER_REGNUM)
Index: gcc/doc/tm.texi
===================================================================
--- gcc/doc/tm.texi	(revision 164599)
+++ gcc/doc/tm.texi	(working copy)
@@ -3643,6 +3643,22 @@ pointer register, then you must mark it 
 (@pxref{Elimination}).
 @end defmac
 
+@defmac HARD_FRAME_POINTER_IS_FRAME_POINTER
+Define this to a preprocessor constant that is nonzero if
+@code{hard_frame_pointer_rtx} and @code{frame_pointer_rtx} should be
+the same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM
+== FRAME_POINTER_REGNUM)}; you only need to define this macro if that
+definition is not suitable for use in preprocessor conditionals.
+@end defmac
+
+@defmac HARD_FRAME_POINTER_IS_ARG_POINTER
+Define this to a preprocessor constant that is nonzero if
+@code{hard_frame_pointer_rtx} and @code{arg_pointer_rtx} should be the
+same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM ==
+ARG_POINTER_REGNUM)}; you only need to define this macro if that
+definition is not suitable for use in preprocessor conditionals.
+@end defmac
+
 @defmac RETURN_ADDRESS_POINTER_REGNUM
 The register number of the return address pointer register, which is used to
 access the current function's return address from the stack.  On some
Index: gcc/doc/tm.texi.in
===================================================================
--- gcc/doc/tm.texi.in	(revision 164599)
+++ gcc/doc/tm.texi.in	(working copy)
@@ -3643,6 +3643,22 @@ pointer register, then you must mark it 
 (@pxref{Elimination}).
 @end defmac
 
+@defmac HARD_FRAME_POINTER_IS_FRAME_POINTER
+Define this to a preprocessor constant that is nonzero if
+@code{hard_frame_pointer_rtx} and @code{frame_pointer_rtx} should be
+the same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM
+== FRAME_POINTER_REGNUM)}; you only need to define this macro if that
+definition is not suitable for use in preprocessor conditionals.
+@end defmac
+
+@defmac HARD_FRAME_POINTER_IS_ARG_POINTER
+Define this to a preprocessor constant that is nonzero if
+@code{hard_frame_pointer_rtx} and @code{arg_pointer_rtx} should be the
+same.  The default definition is @samp{(HARD_FRAME_POINTER_REGNUM ==
+ARG_POINTER_REGNUM)}; you only need to define this macro if that
+definition is not suitable for use in preprocessor conditionals.
+@end defmac
+
 @defmac RETURN_ADDRESS_POINTER_REGNUM
 The register number of the return address pointer register, which is used to
 access the current function's return address from the stack.  On some
Index: gcc/flags.h
===================================================================
--- gcc/flags.h	(revision 164599)
+++ gcc/flags.h	(working copy)
@@ -77,6 +77,11 @@ extern void set_struct_debug_option (con
    debugging information.  */
 extern bool use_gnu_debug_info_extensions;
 
+/* Run the second compilation of -fcompare-debug.  Not defined using
+   Var in common.opt because this is used in Ada code and so must be
+   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
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c	(revision 164599)
+++ gcc/c-family/c-opts.c	(working copy)
@@ -157,7 +157,7 @@ warning_as_error_callback (int option_in
 	break;
 
       case OPT_Wdeprecated:
-	cpp_opts->warn_deprecated = 1;
+	cpp_opts->cpp_warn_deprecated = 1;
 	break;
 
       case OPT_Wcomment:
@@ -173,11 +173,11 @@ warning_as_error_callback (int option_in
 	break;
 
       case OPT_Wtraditional:
-	cpp_opts->warn_traditional = 1;
+	cpp_opts->cpp_warn_traditional = 1;
 	break;
 
       case OPT_Wlong_long:
-	cpp_opts->warn_long_long = 1;
+	cpp_opts->cpp_warn_long_long = 1;
 	break;
 
       case OPT_Wendif_labels:
@@ -508,7 +508,7 @@ c_common_handle_option (size_t scode, co
       break;
 
     case OPT_Wdeprecated:
-      cpp_opts->warn_deprecated = value;
+      cpp_opts->cpp_warn_deprecated = value;
       break;
 
     case OPT_Wendif_labels:
@@ -567,7 +567,7 @@ c_common_handle_option (size_t scode, co
       break;
 
     case OPT_Wtraditional:
-      cpp_opts->warn_traditional = value;
+      cpp_opts->cpp_warn_traditional = value;
       break;
 
     case OPT_Wtrigraphs:
@@ -788,7 +788,7 @@ c_common_handle_option (size_t scode, co
 	 is not overridden.  */
     case OPT_pedantic_errors:
     case OPT_pedantic:
-      cpp_opts->pedantic = 1;
+      cpp_opts->cpp_pedantic = 1;
       cpp_opts->warn_endif_labels = 1;
       if (warn_pointer_sign == -1)
 	warn_pointer_sign = 1;
@@ -1314,7 +1314,7 @@ sanitize_cpp_opts (void)
   if (warn_long_long == -1)
     warn_long_long = ((pedantic || warn_traditional)
 		      && (c_dialect_cxx () ? cxx_dialect == cxx98 : !flag_isoc99));
-  cpp_opts->warn_long_long = warn_long_long;
+  cpp_opts->cpp_warn_long_long = warn_long_long;
 
   /* Similarly with -Wno-variadic-macros.  No check for c99 here, since
      this also turns off warnings about GCCs extension.  */
@@ -1381,7 +1381,7 @@ finish_options (void)
 	 conflict with the specified standard, and since a strictly
 	 conforming program cannot contain a '$', we do not condition
 	 their acceptance on the -std= setting.  */
-      cpp_opts->warn_dollars = (cpp_opts->pedantic && !cpp_opts->c99);
+      cpp_opts->warn_dollars = (cpp_opts->cpp_pedantic && !cpp_opts->c99);
 
       cb_file_change (parse_in,
 		      linemap_add (line_table, LC_RENAME, 0,
Index: gcc/c-family/c-common.c
===================================================================
--- gcc/c-family/c-common.c	(revision 164599)
+++ gcc/c-family/c-common.c	(working copy)
@@ -8252,7 +8252,7 @@ c_cpp_error (cpp_reader *pfile ATTRIBUTE
 {
   diagnostic_info diagnostic;
   diagnostic_t dlevel;
-  bool save_warn_system_headers = global_dc->warn_system_headers;
+  bool save_warn_system_headers = global_dc->dc_warn_system_headers;
   bool ret;
 
   switch (level)
@@ -8260,7 +8260,7 @@ c_cpp_error (cpp_reader *pfile ATTRIBUTE
     case CPP_DL_WARNING_SYSHDR:
       if (flag_no_output)
 	return false;
-      global_dc->warn_system_headers = 1;
+      global_dc->dc_warn_system_headers = 1;
       /* Fall through.  */
     case CPP_DL_WARNING:
       if (flag_no_output)
@@ -8297,7 +8297,7 @@ c_cpp_error (cpp_reader *pfile ATTRIBUTE
                                     c_option_controlling_cpp_error (reason));
   ret = report_diagnostic (&diagnostic);
   if (level == CPP_DL_WARNING_SYSHDR)
-    global_dc->warn_system_headers = save_warn_system_headers;
+    global_dc->dc_warn_system_headers = save_warn_system_headers;
   return ret;
 }
 
Index: gcc/c-family/c-cppbuiltin.c
===================================================================
--- gcc/c-family/c-cppbuiltin.c	(revision 164599)
+++ gcc/c-family/c-cppbuiltin.c	(working copy)
@@ -514,14 +514,14 @@ c_cpp_builtins_optimize_pragma (cpp_read
 
   /* Other target-independent built-ins determined by command-line
      options.  */
-  if (!prev->optimize_size && cur->optimize_size)
+  if (!prev->x_optimize_size && cur->x_optimize_size)
     cpp_define (pfile, "__OPTIMIZE_SIZE__");
-  else if (prev->optimize_size && !cur->optimize_size)
+  else if (prev->x_optimize_size && !cur->x_optimize_size)
     cpp_undef (pfile, "__OPTIMIZE_SIZE__");
 
-  if (!prev->optimize && cur->optimize)
+  if (!prev->x_optimize && cur->x_optimize)
     cpp_define (pfile, "__OPTIMIZE__");
-  else if (prev->optimize && !cur->optimize)
+  else if (prev->x_optimize && !cur->x_optimize)
     cpp_undef (pfile, "__OPTIMIZE__");
 
   prev_fast_math = fast_math_flags_struct_set_p (prev);
@@ -531,17 +531,17 @@ c_cpp_builtins_optimize_pragma (cpp_read
   else if (prev_fast_math && !cur_fast_math)
     cpp_undef (pfile, "__FAST_MATH__");
 
-  if (!prev->flag_signaling_nans && cur->flag_signaling_nans)
+  if (!prev->x_flag_signaling_nans && cur->x_flag_signaling_nans)
     cpp_define (pfile, "__SUPPORT_SNAN__");
-  else if (prev->flag_signaling_nans && !cur->flag_signaling_nans)
+  else if (prev->x_flag_signaling_nans && !cur->x_flag_signaling_nans)
     cpp_undef (pfile, "__SUPPORT_SNAN__");
 
-  if (!prev->flag_finite_math_only && cur->flag_finite_math_only)
+  if (!prev->x_flag_finite_math_only && cur->x_flag_finite_math_only)
     {
       cpp_undef (pfile, "__FINITE_MATH_ONLY__");
       cpp_define (pfile, "__FINITE_MATH_ONLY__=1");
     }
-  else if (!prev->flag_finite_math_only && cur->flag_finite_math_only)
+  else if (!prev->x_flag_finite_math_only && cur->x_flag_finite_math_only)
     {
       cpp_undef (pfile, "__FINITE_MATH_ONLY__");
       cpp_define (pfile, "__FINITE_MATH_ONLY__=0");
Index: gcc/java/jcf-dump.c
===================================================================
--- gcc/java/jcf-dump.c	(revision 164599)
+++ gcc/java/jcf-dump.c	(working copy)
@@ -76,10 +76,6 @@ int flag_print_fields = 1;
 int flag_print_methods = 1;
 int flag_print_attributes = 1;
 
-/* When nonzero, warn when source file is newer than matching class
-   file.  */
-int flag_newer = 1;
-
 /* Print names of classes that have a "main" method. */
 int flag_print_main = 0;
 
Index: gcc/java/jcf.h
===================================================================
--- gcc/java/jcf.h	(revision 164599)
+++ gcc/java/jcf.h	(working copy)
@@ -1,6 +1,6 @@
 /* Utility macros to read Java(TM) .class files and byte codes.
    Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-   2006, 2007, 2008 Free Software Foundation, Inc.
+   2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -274,7 +274,6 @@ extern const char *jcf_write_base_direct
 
 /* Debug macros, for the front end */
 
-extern int quiet_flag;
 #ifdef VERBOSE_SKELETON
 #undef SOURCE_FRONTEND_DEBUG
 #define SOURCE_FRONTEND_DEBUG(X)				\
Index: gcc/java/parse.h
===================================================================
--- gcc/java/parse.h	(revision 164599)
+++ gcc/java/parse.h	(working copy)
@@ -1,6 +1,6 @@
 /* Language parser definitions for the GNU compiler for the Java(TM) language.
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-   2005, 2006, 2007 Free Software Foundation, Inc.
+   2005, 2006, 2007, 2010 Free Software Foundation, Inc.
    Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com)
 
 This file is part of GCC.
@@ -28,7 +28,6 @@ The Free Software Foundation is independ
 
 /* Extern global variable declarations */
 extern struct obstack temporary_obstack;
-extern int quiet_flag;
 
 #ifdef VERBOSE_SKELETON
 #undef SOURCE_FRONTEND_DEBUG
Index: gcc/java/java-tree.h
===================================================================
--- gcc/java/java-tree.h	(revision 164599)
+++ gcc/java/java-tree.h	(working copy)
@@ -112,64 +112,11 @@ struct JCF;
 /* The virtual offset symbol table. Used by the runtime to fill out
    the otable. */
 
-extern int flag_filelist_file;
-
-/* When nonzero, permit the use of the assert keyword.  */
-
-extern int flag_assert;
-
-/* When nonzero, assume all native functions are implemented with
-   JNI, not CNI.  */
-
-extern int flag_jni;
-
-/* When nonzero, always check for a non gcj generated classes archive.  */
-
-extern int flag_force_classes_archive_check;
-
 /* Resource name.  */
 extern const char *resource_name;
 
 /* Turned to 1 if -Wall was encountered. See lang.c for their meanings.  */
 extern int flag_wall;
-extern int flag_redundant;
-
-/* When nonzero, warn when source file is newer than matching class
-   file.  */
-extern int flag_newer;
-
-/* When nonzero, call a library routine to do integer divisions. */
-extern int flag_use_divide_subroutine;
-
-/* When nonzero, use atomic builtins. */
-extern int flag_use_atomic_builtins;
-
-/* When nonzero, generate code for the Boehm GC.  */
-extern int flag_use_boehm_gc;
-
-/* When nonzero, assume the runtime uses a hash table to map an
-   object to its synchronization structure.  */
-extern int flag_hash_synchronization;
-
-/* When nonzero, generate checks for references to NULL.  */
-extern int flag_check_references;
-
-/* Used through STATIC_CLASS_INIT_OPT_P to check whether static
-   initialization optimization should be performed.  */
-extern int flag_optimize_sci;
-
-/* Generate instances of Class at runtime.  */
-extern int flag_indirect_classes;
-
-/* When nonzero, use offset tables for virtual method calls
-   in order to improve binary compatibility. */
-extern int flag_indirect_dispatch;
-
-/* When zero, don't generate runtime array store checks. */
-extern int flag_store_check;
-
-/* When nonzero, generate only a limited set of class meta-data. */
-extern int flag_reduced_reflection;
 
 /* The Java .class file that provides main_class;  the main input file. */
 extern GTY(()) struct JCF * current_jcf;
Index: gcc/reload.c
===================================================================
--- gcc/reload.c	(revision 164599)
+++ gcc/reload.c	(working copy)
@@ -1,6 +1,6 @@
 /* Search an insn for pseudo regs that must be in hard regs and are not.
    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -5157,7 +5157,7 @@ find_reloads_address (enum machine_mode 
       if ((regno_ok_for_base_p (REGNO (operand), mode, inner_code,
 				GET_CODE (addend))
 	   || operand == frame_pointer_rtx
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	   || operand == hard_frame_pointer_rtx
 #endif
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
Index: gcc/diagnostic.c
===================================================================
--- gcc/diagnostic.c	(revision 164599)
+++ gcc/diagnostic.c	(working copy)
@@ -107,8 +107,8 @@ diagnostic_initialize (diagnostic_contex
   context->permissive = false;
   context->opt_permissive = 0;
   context->fatal_errors = false;
-  context->inhibit_warnings = false;
-  context->warn_system_headers = false;
+  context->dc_inhibit_warnings = false;
+  context->dc_warn_system_headers = false;
   context->internal_error = NULL;
   diagnostic_starter (context) = default_diagnostic_starter;
   diagnostic_finalizer (context) = default_diagnostic_finalizer;
Index: gcc/diagnostic.h
===================================================================
--- gcc/diagnostic.h	(revision 164599)
+++ gcc/diagnostic.h	(working copy)
@@ -124,10 +124,10 @@ struct diagnostic_context
   bool fatal_errors;
 
   /* True if all warnings should be disabled.  */
-  bool inhibit_warnings;
+  bool dc_inhibit_warnings;
 
   /* True if warnings should be given in system headers.  */
-  bool warn_system_headers;
+  bool dc_warn_system_headers;
 
   /* This function is called before any message is printed out.  It is
      responsible for preparing message prefix and such.  For example, it
@@ -230,8 +230,8 @@ extern diagnostic_context *global_dc;
 
 /* Returns nonzero if warnings should be emitted.  */
 #define diagnostic_report_warnings_p(DC, LOC)				\
-  (!(DC)->inhibit_warnings						\
-   && !(in_system_header_at (LOC) && !(DC)->warn_system_headers))
+  (!(DC)->dc_inhibit_warnings						\
+   && !(in_system_header_at (LOC) && !(DC)->dc_warn_system_headers))
 
 #define report_diagnostic(D) diagnostic_report_diagnostic (global_dc, D)
 
Index: gcc/builtins.c
===================================================================
--- gcc/builtins.c	(revision 164599)
+++ gcc/builtins.c	(working copy)
@@ -835,7 +835,7 @@ expand_builtin_setjmp_receiver (rtx rece
       emit_clobber (hard_frame_pointer_rtx);
     }
 
-#if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_ARG_POINTER
   if (fixed_regs[ARG_POINTER_REGNUM])
     {
 #ifdef ELIMINABLE_REGS
Index: gcc/df-scan.c
===================================================================
--- gcc/df-scan.c	(revision 164599)
+++ gcc/df-scan.c	(working copy)
@@ -3406,7 +3406,7 @@ df_insn_refs_collect (struct df_collecti
                          regno_reg_rtx[FRAME_POINTER_REGNUM],
                          NULL, bb, insn_info,
                          DF_REF_REG_USE, 0);
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
           df_ref_record (DF_REF_BASE, collection_rec,
                          regno_reg_rtx[HARD_FRAME_POINTER_REGNUM],
                          NULL, bb, insn_info,
@@ -3604,7 +3604,7 @@ df_get_regular_block_artificial_uses (bi
 	 reference of the frame pointer.  */
       bitmap_set_bit (regular_block_artificial_uses, FRAME_POINTER_REGNUM);
 
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       bitmap_set_bit (regular_block_artificial_uses, HARD_FRAME_POINTER_REGNUM);
 #endif
 
@@ -3656,7 +3656,7 @@ df_get_eh_block_artificial_uses (bitmap 
       if (frame_pointer_needed)
 	{
 	  bitmap_set_bit (eh_block_artificial_uses, FRAME_POINTER_REGNUM);
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	  bitmap_set_bit (eh_block_artificial_uses, HARD_FRAME_POINTER_REGNUM);
 #endif
 	}
@@ -3744,7 +3744,7 @@ df_get_entry_block_def_set (bitmap entry
       /* Any reference to any pseudo before reload is a potential
 	 reference of the frame pointer.  */
       bitmap_set_bit (entry_block_defs, FRAME_POINTER_REGNUM);
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       /* If they are different, also mark the hard frame pointer as live.  */
       if (!LOCAL_REGNO (HARD_FRAME_POINTER_REGNUM))
 	bitmap_set_bit (entry_block_defs, HARD_FRAME_POINTER_REGNUM);
@@ -3877,7 +3877,7 @@ df_get_exit_block_use_set (bitmap exit_b
   if ((!reload_completed) || frame_pointer_needed)
     {
       bitmap_set_bit (exit_block_uses, FRAME_POINTER_REGNUM);
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       /* If they are different, also mark the hard frame pointer as live.  */
       if (!LOCAL_REGNO (HARD_FRAME_POINTER_REGNUM))
 	bitmap_set_bit (exit_block_uses, HARD_FRAME_POINTER_REGNUM);
Index: gcc/dbxout.c
===================================================================
--- gcc/dbxout.c	(revision 164599)
+++ gcc/dbxout.c	(working copy)
@@ -3015,7 +3015,7 @@ dbxout_symbol_location (tree decl, tree 
 	       || (REG_P (XEXP (home, 0))
 		   && REGNO (XEXP (home, 0)) != HARD_FRAME_POINTER_REGNUM
 		   && REGNO (XEXP (home, 0)) != STACK_POINTER_REGNUM
-#if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_ARG_POINTER
 		   && REGNO (XEXP (home, 0)) != ARG_POINTER_REGNUM
 #endif
 		   )))
@@ -3429,7 +3429,7 @@ dbxout_parms (tree parms)
 		 && REG_P (XEXP (DECL_RTL (parms), 0))
 		 && REGNO (XEXP (DECL_RTL (parms), 0)) != HARD_FRAME_POINTER_REGNUM
 		 && REGNO (XEXP (DECL_RTL (parms), 0)) != STACK_POINTER_REGNUM
-#if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_ARG_POINTER
 		 && REGNO (XEXP (DECL_RTL (parms), 0)) != ARG_POINTER_REGNUM
 #endif
 		 )
Index: gcc/sel-sched.c
===================================================================
--- gcc/sel-sched.c	(revision 164599)
+++ gcc/sel-sched.c	(working copy)
@@ -1236,7 +1236,7 @@ mark_unavailable_hard_regs (def_t def, s
      frame pointer, or we could not discover its class.  */
   if (fixed_regs[regno]
       || global_regs[regno]
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       || (frame_pointer_needed && regno == HARD_FRAME_POINTER_REGNUM)
 #else
       || (frame_pointer_needed && regno == FRAME_POINTER_REGNUM)
@@ -1263,7 +1263,7 @@ mark_unavailable_hard_regs (def_t def, s
 	SET_HARD_REG_BIT (reg_rename_p->unavailable_hard_regs,
                           FRAME_POINTER_REGNUM + i);
 
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       for (i = hard_regno_nregs[HARD_FRAME_POINTER_REGNUM][Pmode]; i--;)
 	SET_HARD_REG_BIT (reg_rename_p->unavailable_hard_regs,
                           HARD_FRAME_POINTER_REGNUM + i);
Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c	(revision 164599)
+++ gcc/dwarf2out.c	(working copy)
@@ -16571,7 +16571,7 @@ rtl_for_decl_location (tree decl)
 	       && (!REG_P (XEXP (rtl, 0))
 		   || REGNO (XEXP (rtl, 0)) == HARD_FRAME_POINTER_REGNUM
 		   || REGNO (XEXP (rtl, 0)) == STACK_POINTER_REGNUM
-#if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_ARG_POINTER
 		   || REGNO (XEXP (rtl, 0)) == ARG_POINTER_REGNUM
 #endif
 		     )
Index: gcc/opts.c
===================================================================
--- gcc/opts.c	(revision 164599)
+++ gcc/opts.c	(working copy)
@@ -123,6 +123,11 @@ static enum debug_struct_file debug_stru
 static enum debug_struct_file debug_struct_generic[DINFO_USAGE_NUM_ENUMS]
   = { DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY, DINFO_STRUCT_FILE_ANY };
 
+/* Run the second compilation of -fcompare-debug.  Not defined using
+   Var in common.opt because this is used in Ada code and so must be
+   an actual variable not a macro.  */
+int flag_compare_debug;
+
 /* Parse the -femit-struct-debug-detailed option value
    and set the flag variables. */
 
@@ -1624,7 +1629,7 @@ common_handle_option (const struct cl_de
       break;
 
     case OPT_Wsystem_headers:
-      global_dc->warn_system_headers = value;
+      global_dc->dc_warn_system_headers = value;
       break;
 
     case OPT_Wunused:
@@ -1689,6 +1694,10 @@ common_handle_option (const struct cl_de
       fix_register (arg, 0, 0);
       break;
 
+    case OPT_fcompare_debug_second:
+      flag_compare_debug = value;
+      break;
+
     case OPT_fdbg_cnt_:
       dbg_cnt_process_opt (arg);
       break;
@@ -2072,7 +2081,7 @@ common_handle_option (const struct cl_de
       break;
 
     case OPT_w:
-      global_dc->inhibit_warnings = true;
+      global_dc->dc_inhibit_warnings = true;
       break;
 
     case OPT_fuse_linker_plugin:
@@ -2175,11 +2184,11 @@ fast_math_flags_set_p (void)
 bool
 fast_math_flags_struct_set_p (struct cl_optimization *opt)
 {
-  return (!opt->flag_trapping_math
-	  && opt->flag_unsafe_math_optimizations
-	  && opt->flag_finite_math_only
-	  && !opt->flag_signed_zeros
-	  && !opt->flag_errno_math);
+  return (!opt->x_flag_trapping_math
+	  && opt->x_flag_unsafe_math_optimizations
+	  && opt->x_flag_finite_math_only
+	  && !opt->x_flag_signed_zeros
+	  && !opt->x_flag_errno_math);
 }
 
 /* Handle a debug output -g switch.  EXTENDED is true or false to support
Index: gcc/optc-gen.awk
===================================================================
--- gcc/optc-gen.awk	(revision 164599)
+++ gcc/optc-gen.awk	(working copy)
@@ -85,8 +85,19 @@ print "#endif /* GCC_DRIVER */"
 print ""
 
 have_save = 0;
+print "struct gcc_options global_options =\n{"
 for (i = 0; i < n_extra_vars; i++) {
-	print extra_vars[i] ";"
+	var = extra_vars[i]
+	init = extra_vars[i]
+	if (var ~ "=" ) {
+		sub(".*= *", "", init)
+		sub(" *=.*", "", var)
+		sub("^.*[ *]", "", var)
+	} else {
+		init = "0"
+	}
+	var_seen[var] = 1
+	print "  " init ", /* " var " */"
 }
 for (i = 0; i < n_opts; i++) {
 	if (flag_set_p("Save", flags[i]))
@@ -96,24 +107,31 @@ for (i = 0; i < n_opts; i++) {
 	if (name == "")
 		continue;
 
-	if (flag_set_p("VarExists", flags[i])) {
-		continue;
-	}
-	else {
-		init = opt_args("Init", flags[i])
-		if (init != "")
-			init = " = " init;
-		else if (name in var_seen)
-			continue;
+	init = opt_args("Init", flags[i])
+	if (init != "") {
+		if (name in var_init && var_init[name] != init)
+			print "#error multiple initializers for " name
+		var_init[name] = init
 	}
+}
+for (i = 0; i < n_opts; i++) {
+	name = var_name(flags[i]);
+	if (name == "")
+		continue;
+
+	if (name in var_seen)
+		continue;
+
+	if (name in var_init)
+		init = var_init[name]
+	else
+		init = "0"
 
-	print "/* Set by -" opts[i] "."
-	print "   " help[i] "  */"
-	print var_type(flags[i]) name init ";"
-	print ""
+	print "  " init ", /* " name " */"
 
 	var_seen[name] = 1;
 }
+print "};"
 
 print ""
 print "/* Local state variables.  */"
@@ -332,19 +350,19 @@ for (i = 0; i < n_opt_char; i++) {
 
 print "";
 for (i = 0; i < n_opt_other; i++) {
-	print "  ptr->" var_opt_other[i] " = " var_opt_other[i] ";";
+	print "  ptr->x_" var_opt_other[i] " = " var_opt_other[i] ";";
 }
 
 for (i = 0; i < n_opt_int; i++) {
-	print "  ptr->" var_opt_int[i] " = " var_opt_int[i] ";";
+	print "  ptr->x_" var_opt_int[i] " = " var_opt_int[i] ";";
 }
 
 for (i = 0; i < n_opt_short; i++) {
-	print "  ptr->" var_opt_short[i] " = " var_opt_short[i] ";";
+	print "  ptr->x_" var_opt_short[i] " = " var_opt_short[i] ";";
 }
 
 for (i = 0; i < n_opt_char; i++) {
-	print "  ptr->" var_opt_char[i] " = " var_opt_char[i] ";";
+	print "  ptr->x_" var_opt_char[i] " = " var_opt_char[i] ";";
 }
 
 print "}";
@@ -356,19 +374,19 @@ print "cl_optimization_restore (struct c
 print "{";
 
 for (i = 0; i < n_opt_other; i++) {
-	print "  " var_opt_other[i] " = ptr->" var_opt_other[i] ";";
+	print "  " var_opt_other[i] " = ptr->x_" var_opt_other[i] ";";
 }
 
 for (i = 0; i < n_opt_int; i++) {
-	print "  " var_opt_int[i] " = ptr->" var_opt_int[i] ";";
+	print "  " var_opt_int[i] " = ptr->x_" var_opt_int[i] ";";
 }
 
 for (i = 0; i < n_opt_short; i++) {
-	print "  " var_opt_short[i] " = ptr->" var_opt_short[i] ";";
+	print "  " var_opt_short[i] " = ptr->x_" var_opt_short[i] ";";
 }
 
 for (i = 0; i < n_opt_char; i++) {
-	print "  " var_opt_char[i] " = ptr->" var_opt_char[i] ";";
+	print "  " var_opt_char[i] " = ptr->x_" var_opt_char[i] ";";
 }
 
 print "  targetm.override_options_after_change ();";
@@ -384,38 +402,38 @@ print "{";
 
 print "  fputs (\"\\n\", file);";
 for (i = 0; i < n_opt_other; i++) {
-	print "  if (ptr->" var_opt_other[i] ")";
+	print "  if (ptr->x_" var_opt_other[i] ")";
 	print "    fprintf (file, \"%*s%s (%#lx)\\n\",";
 	print "             indent_to, \"\",";
 	print "             \"" var_opt_other[i] "\",";
-	print "             (unsigned long)ptr->" var_opt_other[i] ");";
+	print "             (unsigned long)ptr->x_" var_opt_other[i] ");";
 	print "";
 }
 
 for (i = 0; i < n_opt_int; i++) {
-	print "  if (ptr->" var_opt_int[i] ")";
+	print "  if (ptr->x_" var_opt_int[i] ")";
 	print "    fprintf (file, \"%*s%s (%#x)\\n\",";
 	print "             indent_to, \"\",";
 	print "             \"" var_opt_int[i] "\",";
-	print "             ptr->" var_opt_int[i] ");";
+	print "             ptr->x_" var_opt_int[i] ");";
 	print "";
 }
 
 for (i = 0; i < n_opt_short; i++) {
-	print "  if (ptr->" var_opt_short[i] ")";
+	print "  if (ptr->x_" var_opt_short[i] ")";
 	print "    fprintf (file, \"%*s%s (%#x)\\n\",";
 	print "             indent_to, \"\",";
 	print "             \"" var_opt_short[i] "\",";
-	print "             ptr->" var_opt_short[i] ");";
+	print "             ptr->x_" var_opt_short[i] ");";
 	print "";
 }
 
 for (i = 0; i < n_opt_char; i++) {
-	print "  if (ptr->" var_opt_char[i] ")";
+	print "  if (ptr->x_" var_opt_char[i] ")";
 	print "    fprintf (file, \"%*s%s (%#x)\\n\",";
 	print "             indent_to, \"\",";
 	print "             \"" var_opt_char[i] "\",";
-	print "             ptr->" var_opt_char[i] ");";
+	print "             ptr->x_" var_opt_char[i] ");";
 	print "";
 }
 
@@ -482,19 +500,19 @@ print "    targetm.target_option.save (p
 print "";
 
 for (i = 0; i < n_target_other; i++) {
-	print "  ptr->" var_target_other[i] " = " var_target_other[i] ";";
+	print "  ptr->x_" var_target_other[i] " = " var_target_other[i] ";";
 }
 
 for (i = 0; i < n_target_int; i++) {
-	print "  ptr->" var_target_int[i] " = " var_target_int[i] ";";
+	print "  ptr->x_" var_target_int[i] " = " var_target_int[i] ";";
 }
 
 for (i = 0; i < n_target_short; i++) {
-	print "  ptr->" var_target_short[i] " = " var_target_short[i] ";";
+	print "  ptr->x_" var_target_short[i] " = " var_target_short[i] ";";
 }
 
 for (i = 0; i < n_target_char; i++) {
-	print "  ptr->" var_target_char[i] " = " var_target_char[i] ";";
+	print "  ptr->x_" var_target_char[i] " = " var_target_char[i] ";";
 }
 
 print "}";
@@ -506,19 +524,19 @@ print "cl_target_option_restore (struct 
 print "{";
 
 for (i = 0; i < n_target_other; i++) {
-	print "  " var_target_other[i] " = ptr->" var_target_other[i] ";";
+	print "  " var_target_other[i] " = ptr->x_" var_target_other[i] ";";
 }
 
 for (i = 0; i < n_target_int; i++) {
-	print "  " var_target_int[i] " = ptr->" var_target_int[i] ";";
+	print "  " var_target_int[i] " = ptr->x_" var_target_int[i] ";";
 }
 
 for (i = 0; i < n_target_short; i++) {
-	print "  " var_target_short[i] " = ptr->" var_target_short[i] ";";
+	print "  " var_target_short[i] " = ptr->x_" var_target_short[i] ";";
 }
 
 for (i = 0; i < n_target_char; i++) {
-	print "  " var_target_char[i] " = ptr->" var_target_char[i] ";";
+	print "  " var_target_char[i] " = ptr->x_" var_target_char[i] ";";
 }
 
 # This must occur after the normal variables in case the code depends on those
@@ -539,38 +557,38 @@ print "{";
 
 print "  fputs (\"\\n\", file);";
 for (i = 0; i < n_target_other; i++) {
-	print "  if (ptr->" var_target_other[i] ")";
+	print "  if (ptr->x_" var_target_other[i] ")";
 	print "    fprintf (file, \"%*s%s (%#lx)\\n\",";
 	print "             indent, \"\",";
 	print "             \"" var_target_other[i] "\",";
-	print "             (unsigned long)ptr->" var_target_other[i] ");";
+	print "             (unsigned long)ptr->x_" var_target_other[i] ");";
 	print "";
 }
 
 for (i = 0; i < n_target_int; i++) {
-	print "  if (ptr->" var_target_int[i] ")";
+	print "  if (ptr->x_" var_target_int[i] ")";
 	print "    fprintf (file, \"%*s%s (%#x)\\n\",";
 	print "             indent, \"\",";
 	print "             \"" var_target_int[i] "\",";
-	print "             ptr->" var_target_int[i] ");";
+	print "             ptr->x_" var_target_int[i] ");";
 	print "";
 }
 
 for (i = 0; i < n_target_short; i++) {
-	print "  if (ptr->" var_target_short[i] ")";
+	print "  if (ptr->x_" var_target_short[i] ")";
 	print "    fprintf (file, \"%*s%s (%#x)\\n\",";
 	print "             indent, \"\",";
 	print "             \"" var_target_short[i] "\",";
-	print "             ptr->" var_target_short[i] ");";
+	print "             ptr->x_" var_target_short[i] ");";
 	print "";
 }
 
 for (i = 0; i < n_target_char; i++) {
-	print "  if (ptr->" var_target_char[i] ")";
+	print "  if (ptr->x_" var_target_char[i] ")";
 	print "    fprintf (file, \"%*s%s (%#x)\\n\",";
 	print "             indent, \"\",";
 	print "             \"" var_target_char[i] "\",";
-	print "             ptr->" var_target_char[i] ");";
+	print "             ptr->x_" var_target_char[i] ");";
 	print "";
 }
 
Index: gcc/fortran/intrinsic.c
===================================================================
--- gcc/fortran/intrinsic.c	(revision 164599)
+++ gcc/fortran/intrinsic.c	(working copy)
@@ -4271,7 +4271,7 @@ gfc_convert_type_warn (gfc_expr *expr, g
 	    gfc_warning_now ("Conversion from %s to %s at %L",
 			     gfc_typename (&from_ts), gfc_typename (ts),
 			     &expr->where);
-	  else if (gfc_option.warn_conversion
+	  else if (gfc_option.gfc_warn_conversion
 		   && from_ts.kind > ts->kind)
 	    gfc_warning_now ("Possible change of value in conversion "
 			     "from %s to %s at %L", gfc_typename (&from_ts),
@@ -4284,7 +4284,7 @@ gfc_convert_type_warn (gfc_expr *expr, g
 	  /* Conversion from REAL/COMPLEX to INTEGER or COMPLEX to REAL
 	     usually comes with a loss of information, regardless of kinds.  */
 	  if (gfc_option.warn_conversion_extra
-	      || gfc_option.warn_conversion)
+	      || gfc_option.gfc_warn_conversion)
 	    gfc_warning_now ("Possible change of value in conversion "
 			     "from %s to %s at %L", gfc_typename (&from_ts),
 			     gfc_typename (ts), &expr->where);
@@ -4293,7 +4293,7 @@ gfc_convert_type_warn (gfc_expr *expr, g
 	{
 	  /* If HOLLERITH is involved, all bets are off.  */
 	  if (gfc_option.warn_conversion_extra
-	      || gfc_option.warn_conversion)
+	      || gfc_option.gfc_warn_conversion)
 	    gfc_warning_now ("Conversion from %s to %s at %L",
 			     gfc_typename (&from_ts), gfc_typename (ts),
 			     &expr->where);
Index: gcc/fortran/cpp.c
===================================================================
--- gcc/fortran/cpp.c	(revision 164599)
+++ gcc/fortran/cpp.c	(working copy)
@@ -176,7 +176,7 @@ cpp_define_builtins (cpp_reader *pfile)
   cpp_define (pfile, "__GFORTRAN__=1");
   cpp_define (pfile, "_LANGUAGE_FORTRAN=1");
 
-  if (gfc_option.flag_openmp)
+  if (gfc_option.gfc_flag_openmp)
     cpp_define (pfile, "_OPENMP=200805");
 
 
@@ -526,7 +526,7 @@ gfc_cpp_post_options (void)
   cpp_option->traditional = 1;
   cpp_option->cplusplus_comments = 0;
 
-  cpp_option->pedantic = pedantic;
+  cpp_option->cpp_pedantic = pedantic;
 
   cpp_option->dollars_in_ident = gfc_option.flag_dollar_ok;
   cpp_option->discard_comments = gfc_cpp_option.discard_comments;
@@ -1075,13 +1075,13 @@ cb_cpp_error (cpp_reader *pfile ATTRIBUT
 {
   diagnostic_info diagnostic;
   diagnostic_t dlevel;
-  bool save_warn_system_headers = global_dc->warn_system_headers;
+  bool save_warn_system_headers = global_dc->dc_warn_system_headers;
   bool ret;
 
   switch (level)
     {
     case CPP_DL_WARNING_SYSHDR:
-      global_dc->warn_system_headers = 1;
+      global_dc->dc_warn_system_headers = 1;
       /* Fall through.  */
     case CPP_DL_WARNING:
       dlevel = DK_WARNING;
@@ -1112,7 +1112,7 @@ cb_cpp_error (cpp_reader *pfile ATTRIBUT
     diagnostic_override_option_index (&diagnostic, OPT_Wcpp);
   ret = report_diagnostic (&diagnostic);
   if (level == CPP_DL_WARNING_SYSHDR)
-    global_dc->warn_system_headers = save_warn_system_headers;
+    global_dc->dc_warn_system_headers = save_warn_system_headers;
   return ret;
 }
 
Index: gcc/fortran/gfortran.h
===================================================================
--- gcc/fortran/gfortran.h	(revision 164599)
+++ gcc/fortran/gfortran.h	(working copy)
@@ -2182,7 +2182,7 @@ typedef struct
 
   int warn_aliasing;
   int warn_ampersand;
-  int warn_conversion;
+  int gfc_warn_conversion;
   int warn_conversion_extra;
   int warn_implicit_interface;
   int warn_implicit_procedure;
@@ -2222,7 +2222,7 @@ typedef struct
   int blas_matmul_limit;
   int flag_cray_pointer;
   int flag_d_lines;
-  int flag_openmp;
+  int gfc_flag_openmp;
   int flag_sign_zero;
   int flag_module_private;
   int flag_recursive;
Index: gcc/fortran/scanner.c
===================================================================
--- gcc/fortran/scanner.c	(revision 164599)
+++ gcc/fortran/scanner.c	(working copy)
@@ -1,6 +1,6 @@
 /* Character scanner.
-   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-   Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+   2010 Free Software Foundation, Inc.
    Contributed by Andy Vaught
 
 This file is part of GCC.
@@ -76,8 +76,6 @@ const char *gfc_source_file;
 static FILE *gfc_src_file;
 static gfc_char_t *gfc_src_preprocessor_lines[2];
 
-extern int pedantic;
-
 static struct gfc_file_change
 {
   const char *filename;
@@ -747,7 +745,7 @@ skip_free_comments (void)
 	     2) handle OpenMP conditional compilation, where
 		!$ should be treated as 2 spaces (for initial lines
 		only if followed by space).  */
-	  if (gfc_option.flag_openmp && at_bol)
+	  if (gfc_option.gfc_flag_openmp && at_bol)
 	    {
 	      locus old_loc = gfc_current_locus;
 	      if (next_char () == '$')
@@ -873,7 +871,7 @@ skip_fixed_comments (void)
 	      && continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
 	    continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
 
-	  if (gfc_option.flag_openmp)
+	  if (gfc_option.gfc_flag_openmp)
 	    {
 	      if (next_char () == '$')
 		{
@@ -1814,7 +1812,7 @@ include_line (gfc_char_t *line)
 
   c = line;
 
-  if (gfc_option.flag_openmp)
+  if (gfc_option.gfc_flag_openmp)
     {
       if (gfc_current_form == FORM_FREE)
 	{
Index: gcc/fortran/f95-lang.c
===================================================================
--- gcc/fortran/f95-lang.c	(revision 164599)
+++ gcc/fortran/f95-lang.c	(working copy)
@@ -1087,7 +1087,7 @@ gfc_init_builtin_functions (void)
 #include "../sync-builtins.def"
 #undef DEF_SYNC_BUILTIN
 
-  if (gfc_option.flag_openmp || flag_tree_parallelize_loops)
+  if (gfc_option.gfc_flag_openmp || flag_tree_parallelize_loops)
     {
 #undef DEF_GOMP_BUILTIN
 #define DEF_GOMP_BUILTIN(code, name, type, attr) \
Index: gcc/fortran/trans-decl.c
===================================================================
--- gcc/fortran/trans-decl.c	(revision 164599)
+++ gcc/fortran/trans-decl.c	(working copy)
@@ -4681,7 +4681,7 @@ gfc_generate_function_code (gfc_namespac
   /* Reset recursion-check variable.  */
   if ((gfc_option.rtcheck & GFC_RTCHECK_RECURSION)
 	 && !is_recursive
-	 && !gfc_option.flag_openmp
+	 && !gfc_option.gfc_flag_openmp
 	 && recurcheckvar != NULL_TREE)
     {
       gfc_add_modify (&cleanup, recurcheckvar, boolean_false_node);
Index: gcc/fortran/parse.c
===================================================================
--- gcc/fortran/parse.c	(revision 164599)
+++ gcc/fortran/parse.c	(working copy)
@@ -693,7 +693,7 @@ next_free (void)
 	  return decode_gcc_attribute ();
 
 	}
-      else if (c == '$' && gfc_option.flag_openmp)
+      else if (c == '$' && gfc_option.gfc_flag_openmp)
 	{
 	  int i;
 
@@ -780,7 +780,7 @@ next_fixed (void)
 
 	      return decode_gcc_attribute ();
 	    }
-	  else if (c == '$' && gfc_option.flag_openmp)
+	  else if (c == '$' && gfc_option.gfc_flag_openmp)
 	    {
 	      for (i = 0; i < 4; i++, c = gfc_next_char_literal (0))
 		gcc_assert ((char) gfc_wide_tolower (c) == "$omp"[i]);
Index: gcc/fortran/options.c
===================================================================
--- gcc/fortran/options.c	(revision 164599)
+++ gcc/fortran/options.c	(working copy)
@@ -87,7 +87,7 @@ gfc_init_options (unsigned int decoded_o
   gfc_option.warn_ampersand = 0;
   gfc_option.warn_character_truncation = 0;
   gfc_option.warn_array_temp = 0;
-  gfc_option.warn_conversion = 0;
+  gfc_option.gfc_warn_conversion = 0;
   gfc_option.warn_conversion_extra = 0;
   gfc_option.warn_implicit_interface = 0;
   gfc_option.warn_line_truncation = 0;
@@ -128,7 +128,7 @@ gfc_init_options (unsigned int decoded_o
   gfc_option.blas_matmul_limit = 30;
   gfc_option.flag_cray_pointer = 0;
   gfc_option.flag_d_lines = -1;
-  gfc_option.flag_openmp = 0;
+  gfc_option.gfc_flag_openmp = 0;
   gfc_option.flag_sign_zero = 1;
   gfc_option.flag_recursive = 0;
   gfc_option.flag_init_integer = GFC_INIT_INTEGER_OFF;
@@ -356,7 +356,7 @@ gfc_post_options (const char **pfilename
 		     gfc_option.flag_max_stack_var_size);
   else if (!gfc_option.flag_automatic && gfc_option.flag_recursive)
     gfc_warning_now ("Flag -fno-automatic overwrites -frecursive");
-  else if (!gfc_option.flag_automatic && gfc_option.flag_openmp)
+  else if (!gfc_option.flag_automatic && gfc_option.gfc_flag_openmp)
     gfc_warning_now ("Flag -fno-automatic overwrites -frecursive implied by "
 		     "-fopenmp");
   else if (gfc_option.flag_max_stack_var_size != -2
@@ -364,7 +364,7 @@ gfc_post_options (const char **pfilename
     gfc_warning_now ("Flag -frecursive overwrites -fmax-stack-var-size=%d",
 		     gfc_option.flag_max_stack_var_size);
   else if (gfc_option.flag_max_stack_var_size != -2
-	   && gfc_option.flag_openmp)
+	   && gfc_option.gfc_flag_openmp)
     gfc_warning_now ("Flag -fmax-stack-var-size=%d overwrites -frecursive "
 		     "implied by -fopenmp", 
 		     gfc_option.flag_max_stack_var_size);
@@ -374,7 +374,7 @@ gfc_post_options (const char **pfilename
     gfc_option.flag_max_stack_var_size = -1;
 
   /* Implied -frecursive; implemented as -fmax-stack-var-size=-1.  */
-  if (gfc_option.flag_max_stack_var_size == -2 && gfc_option.flag_openmp
+  if (gfc_option.flag_max_stack_var_size == -2 && gfc_option.gfc_flag_openmp
       && gfc_option.flag_automatic)
     {
       gfc_option.flag_recursive = 1;
@@ -418,7 +418,7 @@ set_Wall (int setting)
 {
   gfc_option.warn_aliasing = setting;
   gfc_option.warn_ampersand = setting;
-  gfc_option.warn_conversion = setting;
+  gfc_option.gfc_warn_conversion = setting;
   gfc_option.warn_line_truncation = setting;
   gfc_option.warn_surprising = setting;
   gfc_option.warn_tabs = !setting;
@@ -580,7 +580,7 @@ gfc_handle_option (size_t scode, const c
       break;
 
     case OPT_Wconversion:
-      gfc_option.warn_conversion = value;
+      gfc_option.gfc_warn_conversion = value;
       break;
 
     case OPT_Wconversion_extra:
@@ -706,7 +706,7 @@ gfc_handle_option (size_t scode, const c
       break;
 
     case OPT_fopenmp:
-      gfc_option.flag_openmp = value;
+      gfc_option.gfc_flag_openmp = value;
       break;
 
     case OPT_ffree_line_length_none:
Index: gcc/alias.c
===================================================================
--- gcc/alias.c	(revision 164599)
+++ gcc/alias.c	(working copy)
@@ -2688,7 +2688,7 @@ init_alias_target (void)
     = gen_rtx_ADDRESS (Pmode, arg_pointer_rtx);
   static_reg_base_value[FRAME_POINTER_REGNUM]
     = gen_rtx_ADDRESS (Pmode, frame_pointer_rtx);
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
   static_reg_base_value[HARD_FRAME_POINTER_REGNUM]
     = gen_rtx_ADDRESS (Pmode, hard_frame_pointer_rtx);
 #endif
Index: gcc/emit-rtl.c
===================================================================
--- gcc/emit-rtl.c	(revision 164599)
+++ gcc/emit-rtl.c	(working copy)
@@ -589,12 +589,12 @@ gen_rtx_REG (enum machine_mode mode, uns
       if (regno == FRAME_POINTER_REGNUM
 	  && (!reload_completed || frame_pointer_needed))
 	return frame_pointer_rtx;
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       if (regno == HARD_FRAME_POINTER_REGNUM
 	  && (!reload_completed || frame_pointer_needed))
 	return hard_frame_pointer_rtx;
 #endif
-#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM && HARD_FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
+#if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM && !HARD_FRAME_POINTER_IS_ARG_POINTER
       if (regno == ARG_POINTER_REGNUM)
 	return arg_pointer_rtx;
 #endif
Index: gcc/opth-gen.awk
===================================================================
--- gcc/opth-gen.awk	(revision 164599)
+++ gcc/opth-gen.awk	(working copy)
@@ -75,10 +75,25 @@ print ""
 
 have_save = 0;
 
+print "#ifndef GENERATOR_FILE"
+print "struct gcc_options\n{"
+print "#endif"
+
 for (i = 0; i < n_extra_vars; i++) {
 	var = extra_vars[i]
 	sub(" *=.*", "", var)
-	print "extern " var ";"
+	orig_var = var
+	name = var
+	type = var
+	sub("^.*[ *]", "", name)
+	sub(" *" name "$", "", type)
+	var_seen[name] = 1
+	print "#ifdef GENERATOR_FILE"
+	print "extern " orig_var ";"
+	print "#else"
+	print "  " type " x_" name ";"
+	print "#define " name " global_options.x_" name
+	print "#endif"
 }
 
 for (i = 0; i < n_opts; i++) {
@@ -93,8 +108,17 @@ for (i = 0; i < n_opts; i++) {
 		continue;
 
 	var_seen[name] = 1;
+	print "#ifdef GENERATOR_FILE"
 	print "extern " var_type(flags[i]) name ";"
+	print "#else"
+	print "  " var_type(flags[i]) "x_" name ";"
+	print "#define " name " global_options.x_" name
+	print "#endif"
 }
+print "#ifndef GENERATOR_FILE"
+print "};"
+print "extern struct gcc_options global_options;"
+print "#endif"
 print ""
 
 # All of the optimization switches gathered together so they can be saved and restored.
@@ -114,8 +138,8 @@ n_opt_char = 2;
 n_opt_short = 0;
 n_opt_int = 0;
 n_opt_other = 0;
-var_opt_char[0] = "unsigned char optimize";
-var_opt_char[1] = "unsigned char optimize_size";
+var_opt_char[0] = "unsigned char x_optimize";
+var_opt_char[1] = "unsigned char x_optimize_size";
 
 for (i = 0; i < n_opts; i++) {
 	if (flag_set_p("Optimization", flags[i])) {
@@ -129,16 +153,16 @@ for (i = 0; i < n_opts; i++) {
 		var_opt_seen[name]++;
 		otype = var_type_struct(flags[i]);
 		if (otype ~ "^((un)?signed +)?int *$")
-			var_opt_int[n_opt_int++] = otype name;
+			var_opt_int[n_opt_int++] = otype "x_" name;
 
 		else if (otype ~ "^((un)?signed +)?short *$")
-			var_opt_short[n_opt_short++] = otype name;
+			var_opt_short[n_opt_short++] = otype "x_" name;
 
 		else if (otype ~ "^((un)?signed +)?char *$")
-			var_opt_char[n_opt_char++] = otype name;
+			var_opt_char[n_opt_char++] = otype "x_" name;
 
 		else
-			var_opt_other[n_opt_other++] = otype name;
+			var_opt_other[n_opt_other++] = otype "x_" name;
 	}
 }
 
@@ -198,20 +222,20 @@ if (have_save) {
 			var_save_seen[name]++;
 			otype = var_type_struct(flags[i])
 			if (otype ~ "^((un)?signed +)?int *$")
-				var_target_int[n_target_int++] = otype name;
+				var_target_int[n_target_int++] = otype "x_" name;
 
 			else if (otype ~ "^((un)?signed +)?short *$")
-				var_target_short[n_target_short++] = otype name;
+				var_target_short[n_target_short++] = otype "x_" name;
 
 			else if (otype ~ "^((un)?signed +)?char *$")
-				var_target_char[n_target_char++] = otype name;
+				var_target_char[n_target_char++] = otype "x_" name;
 
 			else
-				var_target_other[n_target_other++] = otype name;
+				var_target_other[n_target_other++] = otype "x_" name;
 		}
 	}
 } else {
-	var_target_int[n_target_int++] = "int target_flags";
+	var_target_int[n_target_int++] = "int x_target_flags";
 }
 
 for (i = 0; i < n_target_other; i++) {
Index: gcc/common.opt
===================================================================
--- gcc/common.opt	(revision 164599)
+++ gcc/common.opt	(working copy)
@@ -647,7 +647,7 @@ Common Driver JoinedOrMissing RejectNega
 -fcompare-debug[=<opts>]	Compile with and without e.g. -gtoggle, and compare the final-insns dump
 
 fcompare-debug-second
-Common Driver RejectNegative Var(flag_compare_debug)
+Common Driver RejectNegative
 Run only the second compilation of -fcompare-debug
 
 fconserve-stack
Index: gcc/ira.c
===================================================================
--- gcc/ira.c	(revision 164599)
+++ gcc/ira.c	(working copy)
@@ -1389,7 +1389,7 @@ ira_setup_eliminable_regset (void)
       else
 	df_set_regs_ever_live (eliminables[i].from, true);
     }
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
   if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
     {
       SET_HARD_REG_BIT (eliminable_regset, HARD_FRAME_POINTER_REGNUM);
Index: gcc/rtl.h
===================================================================
--- gcc/rtl.h	(revision 164599)
+++ gcc/rtl.h	(working copy)
@@ -1980,6 +1980,16 @@ extern GTY(()) rtx const_tiny_rtx[3][(in
 #define HARD_FRAME_POINTER_REGNUM FRAME_POINTER_REGNUM
 #endif
 
+#ifndef HARD_FRAME_POINTER_IS_FRAME_POINTER
+#define HARD_FRAME_POINTER_IS_FRAME_POINTER \
+  (HARD_FRAME_POINTER_REGNUM == FRAME_POINTER_REGNUM)
+#endif
+
+#ifndef HARD_FRAME_POINTER_IS_ARG_POINTER
+#define HARD_FRAME_POINTER_IS_ARG_POINTER \
+  (HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM)
+#endif
+
 /* Index labels for global_rtl.  */
 enum global_rtl_index
 {
@@ -1993,13 +2003,13 @@ enum global_rtl_index
 #if FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM
   GR_ARG_POINTER = GR_FRAME_POINTER,
 #endif
-#if HARD_FRAME_POINTER_REGNUM == FRAME_POINTER_REGNUM
+#if HARD_FRAME_POINTER_IS_FRAME_POINTER
   GR_HARD_FRAME_POINTER = GR_FRAME_POINTER,
 #else
   GR_HARD_FRAME_POINTER,
 #endif
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
-#if HARD_FRAME_POINTER_REGNUM == ARG_POINTER_REGNUM
+#if HARD_FRAME_POINTER_IS_ARG_POINTER
   GR_ARG_POINTER = GR_HARD_FRAME_POINTER,
 #else
   GR_ARG_POINTER,
Index: gcc/combine.c
===================================================================
--- gcc/combine.c	(revision 164599)
+++ gcc/combine.c	(working copy)
@@ -962,7 +962,7 @@ create_log_links (void)
               /* Do not make the log link for frame pointer.  */
               if ((regno == FRAME_POINTER_REGNUM
                    && (! reload_completed || frame_pointer_needed))
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
                   || (regno == HARD_FRAME_POINTER_REGNUM
                       && (! reload_completed || frame_pointer_needed))
 #endif
@@ -2049,7 +2049,7 @@ combinable_i3pat (rtx i3, rtx *loc, rtx 
 	  && REG_P (subdest)
 	  && reg_referenced_p (subdest, PATTERN (i3))
 	  && REGNO (subdest) != FRAME_POINTER_REGNUM
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	  && REGNO (subdest) != HARD_FRAME_POINTER_REGNUM
 #endif
 #if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM
@@ -12802,7 +12802,7 @@ mark_used_regs_combine (rtx x)
 	{
 	  /* None of this applies to the stack, frame or arg pointers.  */
 	  if (regno == STACK_POINTER_REGNUM
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	      || regno == HARD_FRAME_POINTER_REGNUM
 #endif
 #if FRAME_POINTER_REGNUM != ARG_POINTER_REGNUM
Index: gcc/resource.c
===================================================================
--- gcc/resource.c	(revision 164599)
+++ gcc/resource.c	(working copy)
@@ -1,6 +1,6 @@
 /* Definitions for computing resource usage of specific insns.
    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-   2009 Free Software Foundation, Inc.
+   2009, 2010 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -335,7 +335,7 @@ mark_referenced_resources (rtx x, struct
 	  if (frame_pointer_needed)
 	    {
 	      SET_HARD_REG_BIT (res->regs, FRAME_POINTER_REGNUM);
-#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	      SET_HARD_REG_BIT (res->regs, HARD_FRAME_POINTER_REGNUM);
 #endif
 	    }
@@ -1148,7 +1148,7 @@ init_resource_info (rtx epilogue_insn)
   if (frame_pointer_needed)
     {
       SET_HARD_REG_BIT (end_of_function_needs.regs, FRAME_POINTER_REGNUM);
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       SET_HARD_REG_BIT (end_of_function_needs.regs, HARD_FRAME_POINTER_REGNUM);
 #endif
       if (! EXIT_IGNORE_STACK
Index: gcc/reginfo.c
===================================================================
--- gcc/reginfo.c	(revision 164599)
+++ gcc/reginfo.c	(working copy)
@@ -1,7 +1,7 @@
 /* Compute different info about registers.
    Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996
    1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-   2009  Free Software Foundation, Inc.
+   2009, 2010  Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -487,7 +487,7 @@ init_reg_sets_1 (void)
 	}
       else if (i == FRAME_POINTER_REGNUM)
 	;
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
       else if (i == HARD_FRAME_POINTER_REGNUM)
 	;
 #endif
Index: gcc/c-parser.c
===================================================================
--- gcc/c-parser.c	(revision 164599)
+++ gcc/c-parser.c	(working copy)
@@ -861,11 +861,11 @@ disable_extension_diagnostics (void)
 	     | (flag_iso << 3)
 	     | (warn_long_long << 4)
 	     | (warn_cxx_compat << 5));
-  cpp_opts->pedantic = pedantic = 0;
+  cpp_opts->cpp_pedantic = pedantic = 0;
   warn_pointer_arith = 0;
-  cpp_opts->warn_traditional = warn_traditional = 0;
+  cpp_opts->cpp_warn_traditional = warn_traditional = 0;
   flag_iso = 0;
-  cpp_opts->warn_long_long = warn_long_long = 0;
+  cpp_opts->cpp_warn_long_long = warn_long_long = 0;
   warn_cxx_compat = 0;
   return ret;
 }
@@ -876,11 +876,11 @@ disable_extension_diagnostics (void)
 static inline void
 restore_extension_diagnostics (int flags)
 {
-  cpp_opts->pedantic = pedantic = flags & 1;
+  cpp_opts->cpp_pedantic = pedantic = flags & 1;
   warn_pointer_arith = (flags >> 1) & 1;
-  cpp_opts->warn_traditional = warn_traditional = (flags >> 2) & 1;
+  cpp_opts->cpp_warn_traditional = warn_traditional = (flags >> 2) & 1;
   flag_iso = (flags >> 3) & 1;
-  cpp_opts->warn_long_long = warn_long_long = (flags >> 4) & 1;
+  cpp_opts->cpp_warn_long_long = warn_long_long = (flags >> 4) & 1;
   warn_cxx_compat = (flags >> 5) & 1;
 }
 
Index: gcc/config/alpha/alpha.h
===================================================================
--- gcc/config/alpha/alpha.h	(revision 164599)
+++ gcc/config/alpha/alpha.h	(working copy)
@@ -144,8 +144,6 @@ enum alpha_fp_trap_mode
   ALPHA_FPTM_SUI	/* Software completion, w/underflow & inexact traps */
 };
 
-extern int target_flags;
-
 extern enum alpha_trap_precision alpha_tp;
 extern enum alpha_fp_rounding_mode alpha_fprm;
 extern enum alpha_fp_trap_mode alpha_fptm;
Index: gcc/config/s390/s390.h
===================================================================
--- gcc/config/s390/s390.h	(revision 164599)
+++ gcc/config/s390/s390.h	(working copy)
@@ -869,8 +869,6 @@ do {									\
 
 /* Position independent code.  */
 
-extern int flag_pic;
-
 #define PIC_OFFSET_TABLE_REGNUM (flag_pic ? 12 : INVALID_REGNUM)
 
 #define LEGITIMATE_PIC_OPERAND_P(X)  legitimate_pic_operand_p (X)
Index: gcc/config/spu/spu.h
===================================================================
--- gcc/config/spu/spu.h	(revision 164599)
+++ gcc/config/spu/spu.h	(working copy)
@@ -24,9 +24,6 @@
 
 #define INIT_EXPANDERS spu_init_expanders()
 
-extern int target_flags;
-extern const char *spu_fixed_range_string;
-
 /* Which processor to generate code or schedule for.  */
 enum processor_type
 {
Index: gcc/config/mep/mep.h
===================================================================
--- gcc/config/mep/mep.h	(revision 164599)
+++ gcc/config/mep/mep.h	(working copy)
@@ -108,8 +108,6 @@ crtbegin.o%s"
     }						\
   while (0)
 
-extern int target_flags;
-
 /* Controlled by MeP-Integrator.  */
 #define TARGET_H1		0
 
Index: gcc/config/i386/i386.h
===================================================================
--- gcc/config/i386/i386.h	(revision 164599)
+++ gcc/config/i386/i386.h	(working copy)
@@ -447,8 +447,6 @@ extern int x86_prefetch_sse;
 #define TARGET_ANY_GNU_TLS	(TARGET_GNU_TLS || TARGET_GNU2_TLS)
 #define TARGET_SUN_TLS		0
 
-extern int ix86_isa_flags;
-
 #ifndef TARGET_64BIT_DEFAULT
 #define TARGET_64BIT_DEFAULT 0
 #endif
Index: gcc/config/i386/i386-c.c
===================================================================
--- gcc/config/i386/i386-c.c	(revision 164599)
+++ gcc/config/i386/i386-c.c	(working copy)
@@ -1,5 +1,5 @@
 /* Subroutines used for macro/preprocessor support on the ia-32.
-   Copyright (C) 2008, 2009
+   Copyright (C) 2008, 2009, 2010
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -297,8 +297,8 @@ ix86_pragma_target_parse (tree args, tre
   /* Figure out the previous/current isa, arch, tune and the differences.  */
   prev_opt  = TREE_TARGET_OPTION (prev_tree);
   cur_opt   = TREE_TARGET_OPTION (cur_tree);
-  prev_isa  = prev_opt->ix86_isa_flags;
-  cur_isa   = cur_opt->ix86_isa_flags;
+  prev_isa  = prev_opt->x_ix86_isa_flags;
+  cur_isa   = cur_opt->x_ix86_isa_flags;
   diff_isa  = (prev_isa ^ cur_isa);
   prev_arch = (enum processor_type) prev_opt->arch;
   prev_tune = (enum processor_type) prev_opt->tune;
Index: gcc/config/i386/i386.c
===================================================================
--- gcc/config/i386/i386.c	(revision 164599)
+++ gcc/config/i386/i386.c	(working copy)
@@ -1898,7 +1898,6 @@ int x86_prefetch_sse;
 static int ix86_regparm;
 
 /* -mstackrealign option */
-extern int ix86_force_align_arg_pointer;
 static const char ix86_force_align_arg_pointer_string[]
   = "force_align_arg_pointer";
 
@@ -3857,7 +3856,7 @@ ix86_function_specific_print (FILE *file
 			      struct cl_target_option *ptr)
 {
   char *target_string
-    = ix86_target_string (ptr->ix86_isa_flags, ptr->target_flags,
+    = ix86_target_string (ptr->x_ix86_isa_flags, ptr->x_target_flags,
 			  NULL, NULL, NULL, false);
 
   fprintf (file, "%*sarch = %d (%s)\n",
@@ -4114,8 +4113,8 @@ ix86_valid_target_attribute_tree (tree a
      ix86_option_override_internal, and then save the options away.
      The string options are are attribute options, and will be undone
      when we copy the save structure.  */
-  if (ix86_isa_flags != def->ix86_isa_flags
-      || target_flags != def->target_flags
+  if (ix86_isa_flags != def->x_ix86_isa_flags
+      || target_flags != def->x_target_flags
       || option_strings[IX86_FUNCTION_SPECIFIC_ARCH]
       || option_strings[IX86_FUNCTION_SPECIFIC_TUNE]
       || option_strings[IX86_FUNCTION_SPECIFIC_FPMATH])
@@ -4232,12 +4231,12 @@ ix86_can_inline_p (tree caller, tree cal
       /* Callee's isa options should a subset of the caller's, i.e. a SSE4 function
 	 can inline a SSE2 function but a SSE2 function can't inline a SSE4
 	 function.  */
-      if ((caller_opts->ix86_isa_flags & callee_opts->ix86_isa_flags)
-	  != callee_opts->ix86_isa_flags)
+      if ((caller_opts->x_ix86_isa_flags & callee_opts->x_ix86_isa_flags)
+	  != callee_opts->x_ix86_isa_flags)
 	ret = false;
 
       /* See if we have the same non-isa options.  */
-      else if (caller_opts->target_flags != callee_opts->target_flags)
+      else if (caller_opts->x_target_flags != callee_opts->x_target_flags)
 	ret = false;
 
       /* See if arch, tune, etc. are the same.  */
Index: gcc/config/sh/sh.h
===================================================================
--- gcc/config/sh/sh.h	(revision 164599)
+++ gcc/config/sh/sh.h	(working copy)
@@ -503,8 +503,6 @@ extern enum sh_divide_strategy_e sh_div_
 
 #define SUBTARGET_OVERRIDE_OPTIONS (void) 0
 
-extern const char *sh_fixed_range_str;
-
 
 /* Target machine storage layout.  */
 
Index: gcc/config/lm32/lm32.h
===================================================================
--- gcc/config/lm32/lm32.h	(revision 164599)
+++ gcc/config/lm32/lm32.h	(working copy)
@@ -68,8 +68,6 @@
 #undef  LIB_SPEC
 #define LIB_SPEC "%{!T*:-T sim.ld}"
 
-extern int target_flags;
-
 /* Add -G xx support.  */
 
 #undef  SWITCH_TAKES_ARG
Index: gcc/config/cris/cris.h
===================================================================
--- gcc/config/cris/cris.h	(revision 164599)
+++ gcc/config/cris/cris.h	(working copy)
@@ -280,9 +280,6 @@ extern int cris_cpu_version;
     }						\
   while (0)
 
-/* This needs to be at least 32 bits.  */
-extern int target_flags;
-
 /* Previously controlled by target_flags.  */
 #define TARGET_ELF 1
 
Index: gcc/config/rs6000/rs6000.h
===================================================================
--- gcc/config/rs6000/rs6000.h	(revision 164599)
+++ gcc/config/rs6000/rs6000.h	(working copy)
@@ -471,7 +471,6 @@ extern int rs6000_float_gprs;
 extern int rs6000_alignment_flags;
 extern const char *rs6000_sched_insert_nops_str;
 extern enum rs6000_nop_insertion rs6000_sched_insert_nops;
-extern int rs6000_xilinx_fpu;
 
 /* Describe which vector unit to use for a given machine mode.  */
 enum rs6000_vector {
@@ -2417,9 +2416,7 @@ extern char rs6000_reg_names[][8];	/* re
 /* #define  MACHINE_no_sched_speculative_load */
 
 /* General flags.  */
-extern int flag_pic;
 extern int optimize;
-extern int flag_expensive_optimizations;
 extern int frame_pointer_needed;
 
 /* Classification of the builtin functions to properly set the declaration tree
Index: gcc/config/mcore/mcore.md
===================================================================
--- gcc/config/mcore/mcore.md	(revision 164599)
+++ gcc/config/mcore/mcore.md	(working copy)
@@ -1,5 +1,5 @@
 ;;  Machine description the Motorola MCore
-;;  Copyright (C) 1993, 1999, 2000, 2004, 2005, 2007
+;;  Copyright (C) 1993, 1999, 2000, 2004, 2005, 2007, 2009, 2010
 ;;  Free Software Foundation, Inc.
 ;;  Contributed by Motorola.
 
@@ -697,8 +697,6 @@
   ""
   "
 {
-  extern int flag_omit_frame_pointer;
-
   /* If this is an add to the frame pointer, then accept it as is so
      that we can later fold in the fp/sp offset from frame pointer
      elimination.  */
Index: gcc/config/mcore/mcore.h
===================================================================
--- gcc/config/mcore/mcore.h	(revision 164599)
+++ gcc/config/mcore/mcore.h	(working copy)
@@ -134,7 +134,6 @@ extern char * mcore_current_function_nam
 #define STACK_BOUNDARY  (TARGET_8ALIGN ? 64 : 32)
 
 /* Largest increment in UNITS we allow the stack to grow in a single operation.  */
-extern int mcore_stack_increment;
 #define STACK_UNITS_MAXSTEP  4096
 
 /* Allocation boundary (in *bits*) for the code of a function.  */
Index: gcc/config/score/score-conv.h
===================================================================
--- gcc/config/score/score-conv.h	(revision 164599)
+++ gcc/config/score/score-conv.h	(working copy)
@@ -1,5 +1,5 @@
 /* score-conv.h for Sunplus S+CORE processor
-   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
 
    This file is part of GCC.
 
@@ -20,8 +20,6 @@
 #ifndef GCC_SCORE_CONV_H
 #define GCC_SCORE_CONV_H
 
-extern int target_flags;
-
 #define GP_REG_FIRST                    0U
 #define GP_REG_LAST                     31U
 #define GP_REG_NUM                      (GP_REG_LAST - GP_REG_FIRST + 1U)
Index: gcc/config/arm/arm.h
===================================================================
--- gcc/config/arm/arm.h	(revision 164599)
+++ gcc/config/arm/arm.h	(working copy)
@@ -992,6 +992,9 @@ extern int arm_structure_size_boundary;
    ? ARM_HARD_FRAME_POINTER_REGNUM		\
    : THUMB_HARD_FRAME_POINTER_REGNUM)
 
+#define HARD_FRAME_POINTER_IS_FRAME_POINTER 0
+#define HARD_FRAME_POINTER_IS_ARG_POINTER 0
+
 #define FP_REGNUM	                HARD_FRAME_POINTER_REGNUM
 
 /* Register to use for pushing function arguments.  */
Index: gcc/config/mips/mips.h
===================================================================
--- gcc/config/mips/mips.h	(revision 164599)
+++ gcc/config/mips/mips.h	(working copy)
@@ -1736,6 +1736,9 @@ enum mips_code_readable_setting {
 #define HARD_FRAME_POINTER_REGNUM \
   (TARGET_MIPS16 ? GP_REG_FIRST + 17 : GP_REG_FIRST + 30)
 
+#define HARD_FRAME_POINTER_IS_FRAME_POINTER 0
+#define HARD_FRAME_POINTER_IS_ARG_POINTER 0
+
 /* Register in which static-chain is passed to a function.  */
 #define STATIC_CHAIN_REGNUM (GP_REG_FIRST + 15)
 
Index: gcc/config/mmix/mmix.h
===================================================================
--- gcc/config/mmix/mmix.h	(revision 164599)
+++ gcc/config/mmix/mmix.h	(working copy)
@@ -140,8 +140,6 @@ struct GTY(()) machine_function
     }								\
   while (0)
 
-extern int target_flags;
-
 #define TARGET_DEFAULT \
  (MASK_BRANCH_PREDICT | MASK_BASE_ADDRESSES | MASK_USE_RETURN_INSN)
 
Index: gcc/config/bfin/bfin.h
===================================================================
--- gcc/config/bfin/bfin.h	(revision 164599)
+++ gcc/config/bfin/bfin.h	(working copy)
@@ -72,10 +72,6 @@ extern unsigned int bfin_workarounds;
 /* Print subsidiary information on the compiler version in use.  */
 #define TARGET_VERSION fprintf (stderr, " (BlackFin bfin)")
 
-/* Run-time compilation parameters selecting different hardware subsets.  */
-
-extern int target_flags;
-
 /* Predefinition in the preprocessor for this target machine */
 #ifndef TARGET_CPU_CPP_BUILTINS
 #define TARGET_CPU_CPP_BUILTINS()		\
Index: gcc/stmt.c
===================================================================
--- gcc/stmt.c	(revision 164599)
+++ gcc/stmt.c	(working copy)
@@ -1834,7 +1834,7 @@ expand_nl_goto_receiver (void)
        decrementing fp by STARTING_FRAME_OFFSET.  */
     emit_move_insn (virtual_stack_vars_rtx, hard_frame_pointer_rtx);
 
-#if ARG_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_ARG_POINTER
   if (fixed_regs[ARG_POINTER_REGNUM])
     {
 #ifdef ELIMINABLE_REGS
Index: gcc/reload1.c
===================================================================
--- gcc/reload1.c	(revision 164599)
+++ gcc/reload1.c	(working copy)
@@ -831,7 +831,7 @@ reload (rtx first, int global)
 	spill_hard_reg (from, 1);
     }
 
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
   if (frame_pointer_needed)
     spill_hard_reg (HARD_FRAME_POINTER_REGNUM, 1);
 #endif
@@ -3232,7 +3232,7 @@ eliminate_regs_in_insn (rtx insn, int re
       for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
 	if (ep->from_rtx == SET_DEST (old_set) && ep->can_eliminate)
 	  {
-#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
+#if !HARD_FRAME_POINTER_IS_FRAME_POINTER
 	    /* If this is setting the frame pointer register to the
 	       hardware frame pointer register and this is an elimination
 	       that will be done (tested above), this insn is really
Index: libcpp/directives.c
===================================================================
--- libcpp/directives.c	(revision 164599)
+++ libcpp/directives.c	(working copy)
@@ -354,7 +354,7 @@ directive_diagnostics (cpp_reader *pfile
 	cpp_error (pfile, CPP_DL_PEDWARN, "#%s is a GCC extension", dir->name);
       else if (((dir->flags & DEPRECATED) != 0
 		|| (dir == &dtable[T_IMPORT] && !CPP_OPTION (pfile, objc)))
-	       && CPP_OPTION (pfile, warn_deprecated))
+	       && CPP_OPTION (pfile, cpp_warn_deprecated))
 	cpp_warning (pfile, CPP_W_DEPRECATED,
                      "#%s is a deprecated GCC extension", dir->name);
     }
@@ -400,7 +400,7 @@ _cpp_handle_directive (cpp_reader *pfile
 
   if (was_parsing_args)
     {
-      if (CPP_OPTION (pfile, pedantic))
+      if (CPP_OPTION (pfile, cpp_pedantic))
 	cpp_error (pfile, CPP_DL_PEDWARN,
 	     "embedding a directive within macro arguments is not portable");
       pfile->state.parsing_args = 0;
Index: libcpp/macro.c
===================================================================
--- libcpp/macro.c	(revision 164599)
+++ libcpp/macro.c	(working copy)
@@ -1,7 +1,7 @@
 /* Part of CPP library.  (Macro and #define handling.)
    Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
    1999, 2000, 2001, 2002, 2003, 2004, 2005,
-   2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+   2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
    Written by Per Bothner, 1994.
    Based on CCCP program by Paul Rubin, June 1986
    Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -1589,13 +1589,13 @@ parse_params (cpp_reader *pfile, cpp_mac
 				   pfile->spec_nodes.n__VA_ARGS__);
 	      pfile->state.va_args_ok = 1;
 	      if (! CPP_OPTION (pfile, c99)
-		  && CPP_OPTION (pfile, pedantic)
+		  && CPP_OPTION (pfile, cpp_pedantic)
 		  && CPP_OPTION (pfile, warn_variadic_macros))
 		cpp_pedwarning
                   (pfile, CPP_W_VARIADIC_MACROS,
 		   "anonymous variadic macros were introduced in C99");
 	    }
-	  else if (CPP_OPTION (pfile, pedantic)
+	  else if (CPP_OPTION (pfile, cpp_pedantic)
 		   && CPP_OPTION (pfile, warn_variadic_macros))
 	    cpp_pedwarning (pfile, CPP_W_VARIADIC_MACROS,
 		            "ISO C does not permit named variadic macros");
Index: libcpp/include/cpplib.h
===================================================================
--- libcpp/include/cpplib.h	(revision 164599)
+++ libcpp/include/cpplib.h	(working copy)
@@ -319,7 +319,7 @@ struct cpp_options
   unsigned char print_include_names;
 
   /* Nonzero means complain about deprecated features.  */
-  unsigned char warn_deprecated;
+  unsigned char cpp_warn_deprecated;
 
   /* Nonzero means warn if slash-star appears in a comment.  */
   unsigned char warn_comments;
@@ -336,10 +336,10 @@ struct cpp_options
 
   /* Nonzero means warn about various incompatibilities with
      traditional C.  */
-  unsigned char warn_traditional;
+  unsigned char cpp_warn_traditional;
 
   /* Nonzero means warn about long long numeric constants.  */
-  unsigned char warn_long_long;
+  unsigned char cpp_warn_long_long;
 
   /* Nonzero means warn about text after an #endif (or #else).  */
   unsigned char warn_endif_labels;
@@ -383,7 +383,7 @@ struct cpp_options
   unsigned char std;
 
   /* Nonzero means give all the error messages the ANSI standard requires.  */
-  unsigned char pedantic;
+  unsigned char cpp_pedantic;
 
   /* Nonzero means we're looking at already preprocessed code, so don't
      bother trying to do macro expansion and whatnot.  */
Index: libcpp/init.c
===================================================================
--- libcpp/init.c	(revision 164599)
+++ libcpp/init.c	(working copy)
@@ -160,8 +160,8 @@ cpp_create_reader (enum c_lang lang, has
   CPP_OPTION (pfile, operator_names) = 1;
   CPP_OPTION (pfile, warn_trigraphs) = 2;
   CPP_OPTION (pfile, warn_endif_labels) = 1;
-  CPP_OPTION (pfile, warn_deprecated) = 1;
-  CPP_OPTION (pfile, warn_long_long) = 0;
+  CPP_OPTION (pfile, cpp_warn_deprecated) = 1;
+  CPP_OPTION (pfile, cpp_warn_long_long) = 0;
   CPP_OPTION (pfile, dollars_in_ident) = 1;
   CPP_OPTION (pfile, warn_dollars) = 1;
   CPP_OPTION (pfile, warn_variadic_macros) = 1;
@@ -698,7 +698,7 @@ post_options (cpp_reader *pfile)
 {
   /* -Wtraditional is not useful in C++ mode.  */
   if (CPP_OPTION (pfile, cplusplus))
-    CPP_OPTION (pfile, warn_traditional) = 0;
+    CPP_OPTION (pfile, cpp_warn_traditional) = 0;
 
   /* Permanently disable macro expansion if we are rescanning
      preprocessed text.  Read preprocesed source in ISO mode.  */
Index: libcpp/expr.c
===================================================================
--- libcpp/expr.c	(revision 164599)
+++ libcpp/expr.c	(working copy)
@@ -418,7 +418,7 @@ cpp_classify_number (cpp_reader *pfile, 
 	{
 	  int u_or_i = (result & (CPP_N_UNSIGNED|CPP_N_IMAGINARY));
 	  int large = (result & CPP_N_WIDTH) == CPP_N_LARGE
-		       && CPP_OPTION (pfile, warn_long_long);
+		       && CPP_OPTION (pfile, cpp_warn_long_long);
 
 	  if (u_or_i || large)
 	    cpp_warning (pfile, large ? CPP_W_LONG_LONG : CPP_W_TRADITIONAL,
@@ -427,7 +427,7 @@ cpp_classify_number (cpp_reader *pfile, 
 	}
 
       if ((result & CPP_N_WIDTH) == CPP_N_LARGE
-	  && CPP_OPTION (pfile, warn_long_long))
+	  && CPP_OPTION (pfile, cpp_warn_long_long))
         {
           const char *message = CPP_OPTION (pfile, cplusplus) 
 		                ? N_("use of C++0x long long integer constant")
@@ -814,7 +814,7 @@ eval_token (cpp_reader *pfile, const cpp
 	  if (CPP_PEDANTIC (pfile))
 	    cpp_error (pfile, CPP_DL_PEDWARN,
 		       "assertions are a GCC extension");
-	  else if (CPP_OPTION (pfile, warn_deprecated))
+	  else if (CPP_OPTION (pfile, cpp_warn_deprecated))
 	    cpp_warning (pfile, CPP_W_DEPRECATED,
 		         "assertions are a deprecated extension");
 	}
Index: libcpp/internal.h
===================================================================
--- libcpp/internal.h	(revision 164599)
+++ libcpp/internal.h	(working copy)
@@ -1,6 +1,6 @@
 /* Part of CPP library.
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
-   2008, 2009 Free Software Foundation, Inc.
+   2008, 2009, 2010 Free Software Foundation, Inc.
 
 This program is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License as published by the
@@ -526,8 +526,8 @@ cpp_in_system_header (cpp_reader *pfile)
 {
   return pfile->buffer ? pfile->buffer->sysp : 0;
 }
-#define CPP_PEDANTIC(PF) CPP_OPTION (PF, pedantic)
-#define CPP_WTRADITIONAL(PF) CPP_OPTION (PF, warn_traditional)
+#define CPP_PEDANTIC(PF) CPP_OPTION (PF, cpp_pedantic)
+#define CPP_WTRADITIONAL(PF) CPP_OPTION (PF, cpp_warn_traditional)
 
 static inline int cpp_in_primary_file (cpp_reader *);
 static inline int
