Patchwork Remove VarExists

login
register
mail settings
Submitter Joseph S. Myers
Date Sept. 29, 2010, 2:19 p.m.
Message ID <Pine.LNX.4.64.1009291418490.21724@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/66070/
State New
Headers show

Comments

Joseph S. Myers - Sept. 29, 2010, 2:19 p.m.
This patch (including Fortran and Java pieces, though I consider those
obvious), relative to a tree with
<http://gcc.gnu.org/ml/gcc-patches/2010-09/msg02171.html> (pending
review of the non-front-end pieces) applied, removes the VarExists
markers from .opt files and the documentation for VarExists.  As
discussed in that previous message, nothing makes use of VarExists
information after that patch.

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  OK to
commit?

2010-09-29  Joseph Myers  <joseph@codesourcery.com>

	* doc/options.texi (Variable, Var, Init): Update documentation
	without reference to VarExists.
	(VarExists): Remove.
	* common.opt, config/i386/i386.opt, config/linux.opt,
	config/rs6000/rs6000.opt, config/sh/sh.opt, config/spu/spu.opt:
	Don't use VarExists.

c-family:
2010-09-29  Joseph Myers  <joseph@codesourcery.com>

	* c.opt: Don't use VarExists.

fortran:
2010-09-29  Joseph Myers  <joseph@codesourcery.com>

	* lang.opt: Don't use VarExists.

java:
2010-09-29  Joseph Myers  <joseph@codesourcery.com>

	* lang.opt: Don't use VarExists.
Richard Guenther - Sept. 29, 2010, 2:23 p.m.
On Wed, Sep 29, 2010 at 4:19 PM, Joseph S. Myers
<joseph@codesourcery.com> wrote:
> This patch (including Fortran and Java pieces, though I consider those
> obvious), relative to a tree with
> <http://gcc.gnu.org/ml/gcc-patches/2010-09/msg02171.html> (pending
> review of the non-front-end pieces) applied, removes the VarExists
> markers from .opt files and the documentation for VarExists.  As
> discussed in that previous message, nothing makes use of VarExists
> information after that patch.
>
> Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  OK to
> commit?

Ok.

Thanks,
Richard.

> 2010-09-29  Joseph Myers  <joseph@codesourcery.com>
>
>        * doc/options.texi (Variable, Var, Init): Update documentation
>        without reference to VarExists.
>        (VarExists): Remove.
>        * common.opt, config/i386/i386.opt, config/linux.opt,
>        config/rs6000/rs6000.opt, config/sh/sh.opt, config/spu/spu.opt:
>        Don't use VarExists.
>
> c-family:
> 2010-09-29  Joseph Myers  <joseph@codesourcery.com>
>
>        * c.opt: Don't use VarExists.
>
> fortran:
> 2010-09-29  Joseph Myers  <joseph@codesourcery.com>
>
>        * lang.opt: Don't use VarExists.
>
> java:
> 2010-09-29  Joseph Myers  <joseph@codesourcery.com>
>
>        * lang.opt: Don't use VarExists.
>
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/c-family/c.opt gcc-mainline/gcc/c-family/c.opt
> --- gcc-mainline-0struct/gcc/c-family/c.opt     2010-09-22 13:21:02.000000000 -0700
> +++ gcc-mainline/gcc/c-family/c.opt     2010-09-29 05:34:21.000000000 -0700
> @@ -966,11 +966,11 @@ C++ ObjC++ Optimization Var(flag_threads
>  -fno-threadsafe-statics        Do not generate thread-safe code for initializing local statics
>
>  funsigned-bitfields
> -C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0) VarExists
> +C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
>  When \"signed\" or \"unsigned\" is not given make the bitfield unsigned
>
>  funsigned-char
> -C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0) VarExists
> +C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
>  Make \"char\" unsigned by default
>
>  fuse-cxa-atexit
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/common.opt gcc-mainline/gcc/common.opt
> --- gcc-mainline-0struct/gcc/common.opt 2010-09-27 17:01:33.000000000 -0700
> +++ gcc-mainline/gcc/common.opt 2010-09-29 05:34:15.000000000 -0700
> @@ -1064,7 +1064,7 @@ Common Report Var(flag_merge_constants,2
>  Attempt to merge identical constants and constant variables
>
>  fmerge-constants
> -Common Report Var(flag_merge_constants,1) VarExists Optimization
> +Common Report Var(flag_merge_constants,1) Optimization
>  Attempt to merge identical constants across compilation units
>
>  fmerge-debug-strings
> @@ -1092,7 +1092,7 @@ Common RejectNegative Report Var(flag_mu
>  Add mudflap bounds-checking instrumentation for single-threaded program
>
>  fmudflapth
> -Common RejectNegative Report VarExists Var(flag_mudflap,2)
> +Common RejectNegative Report Var(flag_mudflap,2)
>  Add mudflap bounds-checking instrumentation for multi-threaded program
>
>  fmudflapir
> @@ -1172,11 +1172,11 @@ Common Report Var(flag_pie,2)
>  Generate position-independent code for executables if possible (large mode)
>
>  fpic
> -Common Report Var(flag_pic,1) VarExists
> +Common Report Var(flag_pic,1)
>  Generate position-independent code if possible (small mode)
>
>  fpie
> -Common Report Var(flag_pie,1) VarExists
> +Common Report Var(flag_pie,1)
>  Generate position-independent code for executables if possible (small mode)
>
>  fplugin=
> @@ -1250,7 +1250,7 @@ Common Report Var(flag_record_gcc_switch
>  Record gcc command line switches in the object file.
>
>  freg-struct-return
> -Common Report Var(flag_pcc_struct_return,0) VarExists Optimization
> +Common Report Var(flag_pcc_struct_return,0) Optimization
>  Return small aggregates in registers
>
>  fregmove
> @@ -1458,7 +1458,7 @@ Common Report Var(flag_stack_protect, 1)
>  Use propolice as a stack protection method
>
>  fstack-protector-all
> -Common Report RejectNegative Var(flag_stack_protect, 2) VarExists
> +Common Report RejectNegative Var(flag_stack_protect, 2)
>  Use a stack protection method for every function
>
>  fstack-usage
> @@ -1818,7 +1818,7 @@ Common RejectNegative Var(dwarf_strict,0
>  Emit DWARF additions beyond selected version
>
>  gstrict-dwarf
> -Common Report RejectNegative Var(dwarf_strict,1) VarExists
> +Common Report RejectNegative Var(dwarf_strict,1)
>  Don't emit DWARF additions beyond selected version
>
>  gtoggle
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/i386/i386.opt gcc-mainline/gcc/config/i386/i386.opt
> --- gcc-mainline-0struct/gcc/config/i386/i386.opt       2010-09-17 07:11:45.000000000 -0700
> +++ gcc-mainline/gcc/config/i386/i386.opt       2010-09-29 05:35:13.000000000 -0700
> @@ -266,111 +266,111 @@ is selected.
>  ;; ISA support
>
>  m32
> -Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
> +Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
>  Generate 32bit i386 code
>
>  m64
> -Target RejectNegative Negative(m32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
> +Target RejectNegative Negative(m32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) Save
>  Generate 64bit x86-64 code
>
>  mmmx
> -Target Report Mask(ISA_MMX) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
>  Support MMX built-in functions
>
>  m3dnow
> -Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
>  Support 3DNow! built-in functions
>
>  m3dnowa
> -Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) VarExists Save
> +Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
>  Support Athlon 3Dnow! built-in functions
>
>  msse
> -Target Report Mask(ISA_SSE) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
>  Support MMX and SSE built-in functions and code generation
>
>  msse2
> -Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
>  Support MMX, SSE and SSE2 built-in functions and code generation
>
>  msse3
> -Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
>  Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation
>
>  mssse3
> -Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
>  Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation
>
>  msse4.1
> -Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
>  Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation
>
>  msse4.2
> -Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
>  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
>
>  msse4
> -Target RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) VarExists Save
> +Target RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) Save
>  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
>
>  mno-sse4
> -Target RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) VarExists Save
> +Target RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) Save
>  Do not support SSE4.1 and SSE4.2 built-in functions and code generation
>
>  mavx
> -Target Report Mask(ISA_AVX) Var(ix86_isa_flags) VarExists
> +Target Report Mask(ISA_AVX) Var(ix86_isa_flags)
>  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation
>
>  mfma
> -Target Report Mask(ISA_FMA) Var(ix86_isa_flags) VarExists
> +Target Report Mask(ISA_FMA) Var(ix86_isa_flags)
>  Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation
>
>  msse4a
> -Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
>  Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation
>
>  mfma4
> -Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
>  Support FMA4 built-in functions and code generation
>
>  mxop
> -Target Report Mask(ISA_XOP) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
>  Support XOP built-in functions and code generation
>
>  mlwp
> -Target Report Mask(ISA_LWP) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
>  Support LWP built-in functions and code generation
>
>  mabm
> -Target Report Mask(ISA_ABM) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
>  Support code generation of Advanced Bit Manipulation (ABM) instructions.
>
>  mpopcnt
> -Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
>  Support code generation of popcnt instruction.
>
>  mcx16
> -Target Report Mask(ISA_CX16) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_CX16) Var(ix86_isa_flags) Save
>  Support code generation of cmpxchg16b instruction.
>
>  msahf
> -Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
>  Support code generation of sahf instruction in 64bit x86-64 code.
>
>  mmovbe
> -Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) Save
>  Support code generation of movbe instruction.
>
>  mcrc32
> -Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
>  Support code generation of crc32 instruction.
>
>  maes
> -Target Report Mask(ISA_AES) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
>  Support AES built-in functions and code generation
>
>  mpclmul
> -Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
>  Support PCLMUL built-in functions and code generation
>
>  msse2avx
> @@ -378,15 +378,15 @@ Target Report Var(ix86_sse2avx)
>  Encode SSE instructions with VEX prefix
>
>  mfsgsbase
> -Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
>  Support FSGSBASE built-in functions and code generation
>
>  mrdrnd
> -Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
>  Support RDRND built-in functions and code generation
>
>  mf16c
> -Target Report Mask(ISA_F16C) Var(ix86_isa_flags) VarExists Save
> +Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
>  Support F16C built-in functions and code generation
>
>  mfentry
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/linux.opt gcc-mainline/gcc/config/linux.opt
> --- gcc-mainline-0struct/gcc/config/linux.opt   2010-05-27 13:13:55.000000000 -0700
> +++ gcc-mainline/gcc/config/linux.opt   2010-09-29 05:34:31.000000000 -0700
> @@ -24,9 +24,9 @@ Target Report RejectNegative Var(linux_l
>  Use Bionic C library
>
>  mglibc
> -Target Report RejectNegative Var(linux_libc,LIBC_GLIBC) VarExists Negative(muclibc)
> +Target Report RejectNegative Var(linux_libc,LIBC_GLIBC) Negative(muclibc)
>  Use GNU C library
>
>  muclibc
> -Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) VarExists Negative(mbionic)
> +Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
>  Use uClibc C library
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/rs6000/rs6000.opt gcc-mainline/gcc/config/rs6000/rs6000.opt
> --- gcc-mainline-0struct/gcc/config/rs6000/rs6000.opt   2010-09-03 13:58:42.000000000 -0700
> +++ gcc-mainline/gcc/config/rs6000/rs6000.opt   2010-09-29 05:35:28.000000000 -0700
> @@ -188,7 +188,7 @@ msched-epilog
>  Target Undocumented Var(TARGET_SCHED_PROLOG) Init(1)
>
>  msched-prolog
> -Target Report Var(TARGET_SCHED_PROLOG) VarExists
> +Target Report Var(TARGET_SCHED_PROLOG)
>  Schedule the start and end of the procedure
>
>  maix-struct-return
> @@ -196,7 +196,7 @@ Target Report RejectNegative Var(aix_str
>  Return all structures in memory (AIX default)
>
>  msvr4-struct-return
> -Target Report RejectNegative Var(aix_struct_return,0) VarExists
> +Target Report RejectNegative Var(aix_struct_return,0)
>  Return small structures in registers (SVR4 default)
>
>  mxl-compat
> @@ -228,7 +228,7 @@ Target RejectNegative Var(TARGET_NO_SUM_
>  Do not place symbol+offset constants in TOC
>
>  msum-in-toc
> -Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0) VarExists
> +Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0)
>  Place symbol+offset constants in TOC
>
>  ;  Output only one TOC entry per module.  Normally linking fails if
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/sh/sh.opt gcc-mainline/gcc/config/sh/sh.opt
> --- gcc-mainline-0struct/gcc/config/sh/sh.opt   2010-04-24 14:15:09.000000000 -0700
> +++ gcc-mainline/gcc/config/sh/sh.opt   2010-09-29 05:35:51.000000000 -0700
> @@ -1,6 +1,7 @@
>  ; Options for the SH port of the compiler.
>
> -; Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
> +; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
> +; Free Software Foundation, Inc.
>  ;
>  ; This file is part of GCC.
>  ;
> @@ -106,11 +107,11 @@ Target RejectNegative Condition(SUPPORT_
>  Generate SH4-200 FPU-less code
>
>  m4-300-nofpu
> -Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300) VarExists
> +Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300)
>  Generate SH4-300 FPU-less code
>
>  m4-340
> -Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300) VarExists
> +Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300)
>  Generate code for SH4 340 series (MMU/FPU-less)
>  ;; passes -isa=sh4-nommu-nofpu to the assembler.
>
> @@ -137,7 +138,7 @@ Target RejectNegative Condition(SUPPORT_
>  Generate default single-precision SH4-200 code
>
>  m4-300-single
> -Target RejectNegative Condition(SUPPORT_SH4_SINGLE) Var(TARGET_SH4_300) VarExists
> +Target RejectNegative Condition(SUPPORT_SH4_SINGLE) Var(TARGET_SH4_300)
>  Generate default single-precision SH4-300 code
>
>  m4-single-only
> @@ -153,7 +154,7 @@ Target RejectNegative Condition(SUPPORT_
>  Generate only single-precision SH4-200 code
>
>  m4-300-single-only
> -Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) Var(TARGET_SH4_300) VarExists
> +Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) Var(TARGET_SH4_300)
>  Generate only single-precision SH4-300 code
>
>  m4a
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/spu/spu.opt gcc-mainline/gcc/config/spu/spu.opt
> --- gcc-mainline-0struct/gcc/config/spu/spu.opt 2009-12-30 09:05:24.000000000 -0800
> +++ gcc-mainline/gcc/config/spu/spu.opt 2010-09-29 05:36:32.000000000 -0700
> @@ -1,5 +1,5 @@
>  ; Options for the SPU port of the compiler
> -; Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
> +; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
>
>  ; This file 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
> @@ -88,7 +88,7 @@ Target Report RejectNegative Var(spu_ea_
>  Access variables in 32-bit PPU objects (default)
>
>  mea64
> -Target Report RejectNegative Var(spu_ea_model,64) VarExists
> +Target Report RejectNegative Var(spu_ea_model,64)
>  Access variables in 64-bit PPU objects
>
>  maddress-space-conversion
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/doc/options.texi gcc-mainline/gcc/doc/options.texi
> --- gcc-mainline-0struct/gcc/doc/options.texi   2010-09-16 16:50:43.000000000 -0700
> +++ gcc-mainline/gcc/doc/options.texi   2010-09-29 05:33:02.000000000 -0700
> @@ -46,10 +46,10 @@ information.  These records have two fie
>  @samp{Variable}, and a declaration of the type and name of the
>  variable, optionally with an initializer (but without any trailing
>  @samp{;}).  These records may be used for variables used for many
> -options where declaring the variable and its initializer by omitting
> -@code{VarExists} from a single option definition record would be
> -inappropriate, or for variables set in option handlers rather than
> -referenced by @code{Var} properties.
> +options where declaring the initializer in a single option definition
> +record, or duplicating it in many records, would be inappropriate, or
> +for variables set in option handlers rather than referenced by
> +@code{Var} properties.
>
>  @item
>  An option definition record.  These records have the following fields:
> @@ -177,7 +177,8 @@ compatibility with existing options that
>  via @option{-Wp,}; new options should not have this property.
>
>  @item Var(@var{var})
> -The state of this option should be stored in variable @var{var}.
> +The state of this option should be stored in variable @var{var}
> +(actually a macro for @code{global_options.x_@var{var}}).
>  The way that the state is stored depends on the type of option:
>
>  @itemize @bullet
> @@ -201,9 +202,8 @@ the argument string.  The pointer will b
>  and wasn't given.
>  @end itemize
>
> -The option-processing script will usually declare @var{var} in
> -@file{options.c} and leave it to be zero-initialized at start-up time.
> -You can modify this behavior using @code{VarExists} and @code{Init}.
> +The option-processing script will usually zero-initialize @var{var}.
> +You can modify this behavior using @code{Init}.
>
>  @item Var(@var{var}, @var{set})
>  The option controls an integer variable @var{var} and is active when
> @@ -214,17 +214,10 @@ when the ``no-'' form is used.
>  @var{var} is declared in the same way as for the single-argument form
>  described above.
>
> -@item VarExists
> -The variable specified by the @code{Var} property already exists.
> -No definition should be added to @file{options.c} in response to
> -this option record.
> -
> -You should use this property only if the variable is declared outside
> -@file{options.c}.
> -
>  @item Init(@var{value})
>  The variable specified by the @code{Var} property should be statically
> -initialized to @var{value}.
> +initialized to @var{value}.  If more than one option using the same
> +variable specifies @code{Init}, all must specify the same initializer.
>
>  @item Mask(@var{name})
>  The option is associated with a bit in the @code{target_flags}
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/fortran/lang.opt gcc-mainline/gcc/fortran/lang.opt
> --- gcc-mainline-0struct/gcc/fortran/lang.opt   2010-09-22 13:21:15.000000000 -0700
> +++ gcc-mainline/gcc/fortran/lang.opt   2010-09-29 05:34:45.000000000 -0700
> @@ -499,7 +499,7 @@ Fortran
>  Append a second underscore if the name already contains an underscore
>
>  fshort-enums
> -Fortran Var(flag_short_enums) VarExists
> +Fortran Var(flag_short_enums)
>  ; Documented in C
>
>  fsign-zero
> diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/java/lang.opt gcc-mainline/gcc/java/lang.opt
> --- gcc-mainline-0struct/gcc/java/lang.opt      2010-09-22 13:21:02.000000000 -0700
> +++ gcc-mainline/gcc/java/lang.opt      2010-09-29 05:34:52.000000000 -0700
> @@ -114,7 +114,7 @@ Java
>  ; Documented for C
>
>  Wdeprecated
> -Java Var(warn_deprecated) VarExists
> +Java Var(warn_deprecated)
>  ; Documented for C
>
>  Wextraneous-semicolon
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
>

Patch

diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/c-family/c.opt gcc-mainline/gcc/c-family/c.opt
--- gcc-mainline-0struct/gcc/c-family/c.opt	2010-09-22 13:21:02.000000000 -0700
+++ gcc-mainline/gcc/c-family/c.opt	2010-09-29 05:34:21.000000000 -0700
@@ -966,11 +966,11 @@  C++ ObjC++ Optimization Var(flag_threads
 -fno-threadsafe-statics	Do not generate thread-safe code for initializing local statics
 
 funsigned-bitfields
-C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0) VarExists
+C ObjC C++ ObjC++ Var(flag_signed_bitfields, 0)
 When \"signed\" or \"unsigned\" is not given make the bitfield unsigned
 
 funsigned-char
-C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0) VarExists
+C ObjC C++ ObjC++ LTO Var(flag_signed_char, 0)
 Make \"char\" unsigned by default
 
 fuse-cxa-atexit
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/common.opt gcc-mainline/gcc/common.opt
--- gcc-mainline-0struct/gcc/common.opt	2010-09-27 17:01:33.000000000 -0700
+++ gcc-mainline/gcc/common.opt	2010-09-29 05:34:15.000000000 -0700
@@ -1064,7 +1064,7 @@  Common Report Var(flag_merge_constants,2
 Attempt to merge identical constants and constant variables
 
 fmerge-constants
-Common Report Var(flag_merge_constants,1) VarExists Optimization
+Common Report Var(flag_merge_constants,1) Optimization
 Attempt to merge identical constants across compilation units
 
 fmerge-debug-strings
@@ -1092,7 +1092,7 @@  Common RejectNegative Report Var(flag_mu
 Add mudflap bounds-checking instrumentation for single-threaded program
 
 fmudflapth
-Common RejectNegative Report VarExists Var(flag_mudflap,2)
+Common RejectNegative Report Var(flag_mudflap,2)
 Add mudflap bounds-checking instrumentation for multi-threaded program
 
 fmudflapir
@@ -1172,11 +1172,11 @@  Common Report Var(flag_pie,2)
 Generate position-independent code for executables if possible (large mode)
 
 fpic
-Common Report Var(flag_pic,1) VarExists
+Common Report Var(flag_pic,1)
 Generate position-independent code if possible (small mode)
 
 fpie
-Common Report Var(flag_pie,1) VarExists
+Common Report Var(flag_pie,1)
 Generate position-independent code for executables if possible (small mode)
 
 fplugin=
@@ -1250,7 +1250,7 @@  Common Report Var(flag_record_gcc_switch
 Record gcc command line switches in the object file.
 
 freg-struct-return
-Common Report Var(flag_pcc_struct_return,0) VarExists Optimization
+Common Report Var(flag_pcc_struct_return,0) Optimization
 Return small aggregates in registers
 
 fregmove
@@ -1458,7 +1458,7 @@  Common Report Var(flag_stack_protect, 1)
 Use propolice as a stack protection method
 
 fstack-protector-all
-Common Report RejectNegative Var(flag_stack_protect, 2) VarExists
+Common Report RejectNegative Var(flag_stack_protect, 2)
 Use a stack protection method for every function
 
 fstack-usage
@@ -1818,7 +1818,7 @@  Common RejectNegative Var(dwarf_strict,0
 Emit DWARF additions beyond selected version
 
 gstrict-dwarf
-Common Report RejectNegative Var(dwarf_strict,1) VarExists
+Common Report RejectNegative Var(dwarf_strict,1)
 Don't emit DWARF additions beyond selected version
 
 gtoggle
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/i386/i386.opt gcc-mainline/gcc/config/i386/i386.opt
--- gcc-mainline-0struct/gcc/config/i386/i386.opt	2010-09-17 07:11:45.000000000 -0700
+++ gcc-mainline/gcc/config/i386/i386.opt	2010-09-29 05:35:13.000000000 -0700
@@ -266,111 +266,111 @@  is selected.
 ;; ISA support
 
 m32
-Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
+Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
 Generate 32bit i386 code
 
 m64
-Target RejectNegative Negative(m32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
+Target RejectNegative Negative(m32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) Save
 Generate 64bit x86-64 code
 
 mmmx
-Target Report Mask(ISA_MMX) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
 Support MMX built-in functions
 
 m3dnow
-Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
 Support 3DNow! built-in functions
 
 m3dnowa
-Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) VarExists Save
+Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
 Support Athlon 3Dnow! built-in functions
 
 msse
-Target Report Mask(ISA_SSE) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
 Support MMX and SSE built-in functions and code generation
 
 msse2
-Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
 Support MMX, SSE and SSE2 built-in functions and code generation
 
 msse3
-Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation
 
 mssse3
-Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation
 
 msse4.1
-Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation
 
 msse4.2
-Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
 
 msse4
-Target RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) VarExists Save
+Target RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
 
 mno-sse4
-Target RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) VarExists Save
+Target RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) Save
 Do not support SSE4.1 and SSE4.2 built-in functions and code generation
 
 mavx
-Target Report Mask(ISA_AVX) Var(ix86_isa_flags) VarExists
+Target Report Mask(ISA_AVX) Var(ix86_isa_flags)
 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation
 
 mfma
-Target Report Mask(ISA_FMA) Var(ix86_isa_flags) VarExists
+Target Report Mask(ISA_FMA) Var(ix86_isa_flags)
 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation
 
 msse4a
-Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation
 
 mfma4
-Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
 Support FMA4 built-in functions and code generation 
 
 mxop
-Target Report Mask(ISA_XOP) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
 Support XOP built-in functions and code generation 
 
 mlwp
-Target Report Mask(ISA_LWP) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
 Support LWP built-in functions and code generation 
 
 mabm
-Target Report Mask(ISA_ABM) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
 Support code generation of Advanced Bit Manipulation (ABM) instructions.
 
 mpopcnt
-Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
 Support code generation of popcnt instruction.
 
 mcx16
-Target Report Mask(ISA_CX16) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_CX16) Var(ix86_isa_flags) Save
 Support code generation of cmpxchg16b instruction.
 
 msahf
-Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
 Support code generation of sahf instruction in 64bit x86-64 code.
 
 mmovbe
-Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) Save
 Support code generation of movbe instruction.
 
 mcrc32
-Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
 Support code generation of crc32 instruction.
 
 maes
-Target Report Mask(ISA_AES) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
 Support AES built-in functions and code generation
 
 mpclmul
-Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
 Support PCLMUL built-in functions and code generation
 
 msse2avx
@@ -378,15 +378,15 @@  Target Report Var(ix86_sse2avx)
 Encode SSE instructions with VEX prefix
 
 mfsgsbase
-Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
 Support FSGSBASE built-in functions and code generation
 
 mrdrnd
-Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
 Support RDRND built-in functions and code generation
 
 mf16c
-Target Report Mask(ISA_F16C) Var(ix86_isa_flags) VarExists Save
+Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
 Support F16C built-in functions and code generation
 
 mfentry
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/linux.opt gcc-mainline/gcc/config/linux.opt
--- gcc-mainline-0struct/gcc/config/linux.opt	2010-05-27 13:13:55.000000000 -0700
+++ gcc-mainline/gcc/config/linux.opt	2010-09-29 05:34:31.000000000 -0700
@@ -24,9 +24,9 @@  Target Report RejectNegative Var(linux_l
 Use Bionic C library
 
 mglibc
-Target Report RejectNegative Var(linux_libc,LIBC_GLIBC) VarExists Negative(muclibc)
+Target Report RejectNegative Var(linux_libc,LIBC_GLIBC) Negative(muclibc)
 Use GNU C library
 
 muclibc
-Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) VarExists Negative(mbionic)
+Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
 Use uClibc C library
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/rs6000/rs6000.opt gcc-mainline/gcc/config/rs6000/rs6000.opt
--- gcc-mainline-0struct/gcc/config/rs6000/rs6000.opt	2010-09-03 13:58:42.000000000 -0700
+++ gcc-mainline/gcc/config/rs6000/rs6000.opt	2010-09-29 05:35:28.000000000 -0700
@@ -188,7 +188,7 @@  msched-epilog
 Target Undocumented Var(TARGET_SCHED_PROLOG) Init(1)
 
 msched-prolog
-Target Report Var(TARGET_SCHED_PROLOG) VarExists
+Target Report Var(TARGET_SCHED_PROLOG)
 Schedule the start and end of the procedure
 
 maix-struct-return
@@ -196,7 +196,7 @@  Target Report RejectNegative Var(aix_str
 Return all structures in memory (AIX default)
 
 msvr4-struct-return
-Target Report RejectNegative Var(aix_struct_return,0) VarExists
+Target Report RejectNegative Var(aix_struct_return,0)
 Return small structures in registers (SVR4 default)
 
 mxl-compat
@@ -228,7 +228,7 @@  Target RejectNegative Var(TARGET_NO_SUM_
 Do not place symbol+offset constants in TOC
 
 msum-in-toc
-Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0) VarExists
+Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0)
 Place symbol+offset constants in TOC
 
 ;  Output only one TOC entry per module.  Normally linking fails if
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/sh/sh.opt gcc-mainline/gcc/config/sh/sh.opt
--- gcc-mainline-0struct/gcc/config/sh/sh.opt	2010-04-24 14:15:09.000000000 -0700
+++ gcc-mainline/gcc/config/sh/sh.opt	2010-09-29 05:35:51.000000000 -0700
@@ -1,6 +1,7 @@ 
 ; Options for the SH port of the compiler.
 
-; Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
+; Free Software Foundation, Inc.
 ;
 ; This file is part of GCC.
 ;
@@ -106,11 +107,11 @@  Target RejectNegative Condition(SUPPORT_
 Generate SH4-200 FPU-less code
 
 m4-300-nofpu
-Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300) VarExists
+Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300)
 Generate SH4-300 FPU-less code
 
 m4-340
-Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300) VarExists
+Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300)
 Generate code for SH4 340 series (MMU/FPU-less)
 ;; passes -isa=sh4-nommu-nofpu to the assembler.
 
@@ -137,7 +138,7 @@  Target RejectNegative Condition(SUPPORT_
 Generate default single-precision SH4-200 code
 
 m4-300-single
-Target RejectNegative Condition(SUPPORT_SH4_SINGLE) Var(TARGET_SH4_300) VarExists
+Target RejectNegative Condition(SUPPORT_SH4_SINGLE) Var(TARGET_SH4_300)
 Generate default single-precision SH4-300 code
 
 m4-single-only
@@ -153,7 +154,7 @@  Target RejectNegative Condition(SUPPORT_
 Generate only single-precision SH4-200 code
 
 m4-300-single-only
-Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) Var(TARGET_SH4_300) VarExists
+Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) Var(TARGET_SH4_300)
 Generate only single-precision SH4-300 code
 
 m4a
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/config/spu/spu.opt gcc-mainline/gcc/config/spu/spu.opt
--- gcc-mainline-0struct/gcc/config/spu/spu.opt	2009-12-30 09:05:24.000000000 -0800
+++ gcc-mainline/gcc/config/spu/spu.opt	2010-09-29 05:36:32.000000000 -0700
@@ -1,5 +1,5 @@ 
 ; Options for the SPU port of the compiler
-; Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 ; This file 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
@@ -88,7 +88,7 @@  Target Report RejectNegative Var(spu_ea_
 Access variables in 32-bit PPU objects (default)
 
 mea64
-Target Report RejectNegative Var(spu_ea_model,64) VarExists
+Target Report RejectNegative Var(spu_ea_model,64)
 Access variables in 64-bit PPU objects
 
 maddress-space-conversion
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/doc/options.texi gcc-mainline/gcc/doc/options.texi
--- gcc-mainline-0struct/gcc/doc/options.texi	2010-09-16 16:50:43.000000000 -0700
+++ gcc-mainline/gcc/doc/options.texi	2010-09-29 05:33:02.000000000 -0700
@@ -46,10 +46,10 @@  information.  These records have two fie
 @samp{Variable}, and a declaration of the type and name of the
 variable, optionally with an initializer (but without any trailing
 @samp{;}).  These records may be used for variables used for many
-options where declaring the variable and its initializer by omitting
-@code{VarExists} from a single option definition record would be
-inappropriate, or for variables set in option handlers rather than
-referenced by @code{Var} properties.
+options where declaring the initializer in a single option definition
+record, or duplicating it in many records, would be inappropriate, or
+for variables set in option handlers rather than referenced by
+@code{Var} properties.
 
 @item
 An option definition record.  These records have the following fields:
@@ -177,7 +177,8 @@  compatibility with existing options that
 via @option{-Wp,}; new options should not have this property.
 
 @item Var(@var{var})
-The state of this option should be stored in variable @var{var}.
+The state of this option should be stored in variable @var{var}
+(actually a macro for @code{global_options.x_@var{var}}).
 The way that the state is stored depends on the type of option:
 
 @itemize @bullet
@@ -201,9 +202,8 @@  the argument string.  The pointer will b
 and wasn't given.
 @end itemize
 
-The option-processing script will usually declare @var{var} in
-@file{options.c} and leave it to be zero-initialized at start-up time.
-You can modify this behavior using @code{VarExists} and @code{Init}.
+The option-processing script will usually zero-initialize @var{var}.
+You can modify this behavior using @code{Init}.
 
 @item Var(@var{var}, @var{set})
 The option controls an integer variable @var{var} and is active when
@@ -214,17 +214,10 @@  when the ``no-'' form is used.
 @var{var} is declared in the same way as for the single-argument form
 described above.
 
-@item VarExists
-The variable specified by the @code{Var} property already exists.
-No definition should be added to @file{options.c} in response to
-this option record.
-
-You should use this property only if the variable is declared outside
-@file{options.c}.
-
 @item Init(@var{value})
 The variable specified by the @code{Var} property should be statically
-initialized to @var{value}.
+initialized to @var{value}.  If more than one option using the same
+variable specifies @code{Init}, all must specify the same initializer.
 
 @item Mask(@var{name})
 The option is associated with a bit in the @code{target_flags}
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/fortran/lang.opt gcc-mainline/gcc/fortran/lang.opt
--- gcc-mainline-0struct/gcc/fortran/lang.opt	2010-09-22 13:21:15.000000000 -0700
+++ gcc-mainline/gcc/fortran/lang.opt	2010-09-29 05:34:45.000000000 -0700
@@ -499,7 +499,7 @@  Fortran
 Append a second underscore if the name already contains an underscore
 
 fshort-enums
-Fortran Var(flag_short_enums) VarExists
+Fortran Var(flag_short_enums)
 ; Documented in C
 
 fsign-zero
diff -rupN --exclude=.svn gcc-mainline-0struct/gcc/java/lang.opt gcc-mainline/gcc/java/lang.opt
--- gcc-mainline-0struct/gcc/java/lang.opt	2010-09-22 13:21:02.000000000 -0700
+++ gcc-mainline/gcc/java/lang.opt	2010-09-29 05:34:52.000000000 -0700
@@ -114,7 +114,7 @@  Java
 ; Documented for C
 
 Wdeprecated
-Java Var(warn_deprecated) VarExists
+Java Var(warn_deprecated)
 ; Documented for C
 
 Wextraneous-semicolon