Come up with OPTION_SET_P macro.
Commit Message
Hello.
It's a refactoring patch introducing a new macro.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
I verified all cross compilers do build.
Ready to be installed?
Thanks,
Martin
gcc/ada/ChangeLog:
* gcc-interface/misc.c (gnat_post_options): Use new macro
OPTION_SET_P.
(gnat_init_gcc_eh): Likewise.
(gnat_init_gcc_fp): Likewise.
gcc/c-family/ChangeLog:
* c-opts.c (c_common_post_options): Use new macro
OPTION_SET_P.
gcc/ChangeLog:
* config/alpha/alpha.c (alpha_option_override): Use new macro
OPTION_SET_P.
* config/arc/arc.c (arc_override_options): Likewise.
* config/arm/arm.c (arm_option_override): Likewise.
* config/bfin/bfin.c (bfin_load_pic_reg): Likewise.
* config/c6x/c6x.c (c6x_option_override): Likewise.
* config/csky/csky.c: Likewise.
* config/darwin.c (darwin_override_options): Likewise.
* config/frv/frv.c (frv_option_override): Likewise.
* config/i386/djgpp.h: Likewise.
* config/i386/i386.c (ix86_stack_protect_guard): Likewise.
(ix86_max_noce_ifcvt_seq_cost): Likewise.
* config/ia64/ia64.c (ia64_option_override): Likewise.
(ia64_override_options_after_change): Likewise.
* config/m32c/m32c.c (m32c_option_override): Likewise.
* config/m32r/m32r.c (m32r_init): Likewise.
* config/m68k/m68k.c (m68k_option_override): Likewise.
* config/microblaze/microblaze.c (microblaze_option_override): Likewise.
* config/mips/mips.c (mips_option_override): Likewise.
* config/nios2/nios2.c (nios2_option_override): Likewise.
* config/nvptx/nvptx.c (nvptx_option_override): Likewise.
* config/pa/pa.c (pa_option_override): Likewise.
* config/riscv/riscv.c (riscv_option_override): Likewise.
* config/rs6000/aix71.h: Likewise.
* config/rs6000/aix72.h: Likewise.
* config/rs6000/aix73.h: Likewise.
* config/rs6000/rs6000.c (darwin_rs6000_override_options): Likewise.
(rs6000_override_options_after_change): Likewise.
(rs6000_linux64_override_options): Likewise.
(glibc_supports_ieee_128bit): Likewise.
(rs6000_option_override_internal): Likewise.
(rs6000_file_start): Likewise.
(rs6000_darwin_file_start): Likewise.
* config/rs6000/rtems.h: Likewise.
* config/rs6000/sysv4.h: Likewise.
* config/rs6000/vxworks.h (SUB3TARGET_OVERRIDE_OPTIONS): Likewise.
* config/s390/s390.c (s390_option_override): Likewise.
* config/sh/linux.h: Likewise.
* config/sh/netbsd-elf.h (while): Likewise.
* config/sh/sh.c (sh_option_override): Likewise.
* config/sol2.c (solaris_override_options): Likewise.
* config/sparc/sparc.c (sparc_option_override): Likewise.
* config/tilegx/tilegx.c (tilegx_option_override): Likewise.
* config/visium/visium.c (visium_option_override): Likewise.
* config/vxworks.c (vxworks_override_options): Likewise.
* lto-opts.c (lto_write_options): Likewise.
* omp-expand.c (expand_omp_simd): Likewise.
* omp-general.c (omp_max_vf): Likewise.
* omp-offload.c (oacc_xform_loop): Likewise.
* opts.h (OPTION_SET_P): Likewise.
* targhooks.c (default_max_noce_ifcvt_seq_cost): Likewise.
* toplev.c (process_options): Likewise.
* tree-predcom.c: Likewise.
* tree-sra.c (analyze_all_variable_accesses): Likewise.
gcc/cp/ChangeLog:
* constexpr.c (maybe_warn_about_constant_value): Use new macro
OPTION_SET_P.
* decl.c (redeclaration_error_message): Likewise.
(cxx_init_decl_processing): Likewise.
gcc/d/ChangeLog:
* d-lang.cc (d_post_options): Use new macro
OPTION_SET_P.
gcc/fortran/ChangeLog:
* options.c (gfc_post_options): Use new macro
OPTION_SET_P.
gcc/objc/ChangeLog:
* objc-next-runtime-abi-01.c: Use new macro
OPTION_SET_P.
* objc-next-runtime-abi-02.c (objc_next_runtime_abi_02_init): Likewise.
---
gcc/ada/gcc-interface/misc.c | 10 ++---
gcc/c-family/c-opts.c | 6 +--
gcc/config/alpha/alpha.c | 2 +-
gcc/config/arc/arc.c | 4 +-
gcc/config/arm/arm.c | 9 ++--
gcc/config/bfin/bfin.c | 5 ++-
gcc/config/c6x/c6x.c | 3 +-
gcc/config/csky/csky.c | 7 +--
gcc/config/darwin.c | 31 ++++++-------
gcc/config/frv/frv.c | 5 ++-
gcc/config/i386/djgpp.h | 2 +-
gcc/config/i386/i386.c | 6 +--
gcc/config/ia64/ia64.c | 6 +--
gcc/config/m32c/m32c.c | 3 +-
gcc/config/m32r/m32r.c | 3 +-
gcc/config/m68k/m68k.c | 6 +--
gcc/config/microblaze/microblaze.c | 3 +-
gcc/config/mips/mips.c | 9 ++--
gcc/config/nios2/nios2.c | 3 +-
gcc/config/nvptx/nvptx.c | 4 +-
gcc/config/pa/pa.c | 4 +-
gcc/config/riscv/riscv.c | 11 ++---
gcc/config/rs6000/aix71.h | 6 +--
gcc/config/rs6000/aix72.h | 6 +--
gcc/config/rs6000/aix73.h | 6 +--
gcc/config/rs6000/rs6000.c | 70 ++++++++++++++---------------
gcc/config/rs6000/rtems.h | 4 +-
gcc/config/rs6000/sysv4.h | 8 ++--
gcc/config/rs6000/vxworks.h | 2 +-
gcc/config/s390/s390.c | 4 +-
gcc/config/sh/linux.h | 4 +-
gcc/config/sh/netbsd-elf.h | 2 +-
gcc/config/sh/sh.c | 12 ++---
gcc/config/sol2.c | 3 +-
gcc/config/sparc/sparc.c | 12 ++---
gcc/config/tilegx/tilegx.c | 3 +-
gcc/config/visium/visium.c | 2 +-
gcc/config/vxworks.c | 5 ++-
gcc/cp/constexpr.c | 3 +-
gcc/cp/decl.c | 7 +--
gcc/d/d-lang.cc | 10 ++---
gcc/fortran/options.c | 6 +--
gcc/lto-opts.c | 8 ++--
gcc/objc/objc-next-runtime-abi-01.c | 2 +-
gcc/objc/objc-next-runtime-abi-02.c | 4 +-
gcc/omp-expand.c | 3 +-
gcc/omp-general.c | 3 +-
gcc/omp-offload.c | 3 +-
gcc/opts.h | 4 ++
gcc/targhooks.c | 4 +-
gcc/toplev.c | 2 +-
gcc/tree-predcom.c | 3 +-
gcc/tree-sra.c | 6 +--
53 files changed, 192 insertions(+), 167 deletions(-)
Comments
On Fri, Oct 8, 2021 at 1:03 PM Martin Liška <mliska@suse.cz> wrote:
>
> Hello.
>
> It's a refactoring patch introducing a new macro.
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> I verified all cross compilers do build.
>
> Ready to be installed?
OK.
Thanks,
Richard.
> Thanks,
> Martin
>
>
> gcc/ada/ChangeLog:
>
> * gcc-interface/misc.c (gnat_post_options): Use new macro
> OPTION_SET_P.
> (gnat_init_gcc_eh): Likewise.
> (gnat_init_gcc_fp): Likewise.
>
> gcc/c-family/ChangeLog:
>
> * c-opts.c (c_common_post_options): Use new macro
> OPTION_SET_P.
>
> gcc/ChangeLog:
>
> * config/alpha/alpha.c (alpha_option_override): Use new macro
> OPTION_SET_P.
> * config/arc/arc.c (arc_override_options): Likewise.
> * config/arm/arm.c (arm_option_override): Likewise.
> * config/bfin/bfin.c (bfin_load_pic_reg): Likewise.
> * config/c6x/c6x.c (c6x_option_override): Likewise.
> * config/csky/csky.c: Likewise.
> * config/darwin.c (darwin_override_options): Likewise.
> * config/frv/frv.c (frv_option_override): Likewise.
> * config/i386/djgpp.h: Likewise.
> * config/i386/i386.c (ix86_stack_protect_guard): Likewise.
> (ix86_max_noce_ifcvt_seq_cost): Likewise.
> * config/ia64/ia64.c (ia64_option_override): Likewise.
> (ia64_override_options_after_change): Likewise.
> * config/m32c/m32c.c (m32c_option_override): Likewise.
> * config/m32r/m32r.c (m32r_init): Likewise.
> * config/m68k/m68k.c (m68k_option_override): Likewise.
> * config/microblaze/microblaze.c (microblaze_option_override): Likewise.
> * config/mips/mips.c (mips_option_override): Likewise.
> * config/nios2/nios2.c (nios2_option_override): Likewise.
> * config/nvptx/nvptx.c (nvptx_option_override): Likewise.
> * config/pa/pa.c (pa_option_override): Likewise.
> * config/riscv/riscv.c (riscv_option_override): Likewise.
> * config/rs6000/aix71.h: Likewise.
> * config/rs6000/aix72.h: Likewise.
> * config/rs6000/aix73.h: Likewise.
> * config/rs6000/rs6000.c (darwin_rs6000_override_options): Likewise.
> (rs6000_override_options_after_change): Likewise.
> (rs6000_linux64_override_options): Likewise.
> (glibc_supports_ieee_128bit): Likewise.
> (rs6000_option_override_internal): Likewise.
> (rs6000_file_start): Likewise.
> (rs6000_darwin_file_start): Likewise.
> * config/rs6000/rtems.h: Likewise.
> * config/rs6000/sysv4.h: Likewise.
> * config/rs6000/vxworks.h (SUB3TARGET_OVERRIDE_OPTIONS): Likewise.
> * config/s390/s390.c (s390_option_override): Likewise.
> * config/sh/linux.h: Likewise.
> * config/sh/netbsd-elf.h (while): Likewise.
> * config/sh/sh.c (sh_option_override): Likewise.
> * config/sol2.c (solaris_override_options): Likewise.
> * config/sparc/sparc.c (sparc_option_override): Likewise.
> * config/tilegx/tilegx.c (tilegx_option_override): Likewise.
> * config/visium/visium.c (visium_option_override): Likewise.
> * config/vxworks.c (vxworks_override_options): Likewise.
> * lto-opts.c (lto_write_options): Likewise.
> * omp-expand.c (expand_omp_simd): Likewise.
> * omp-general.c (omp_max_vf): Likewise.
> * omp-offload.c (oacc_xform_loop): Likewise.
> * opts.h (OPTION_SET_P): Likewise.
> * targhooks.c (default_max_noce_ifcvt_seq_cost): Likewise.
> * toplev.c (process_options): Likewise.
> * tree-predcom.c: Likewise.
> * tree-sra.c (analyze_all_variable_accesses): Likewise.
>
> gcc/cp/ChangeLog:
>
> * constexpr.c (maybe_warn_about_constant_value): Use new macro
> OPTION_SET_P.
> * decl.c (redeclaration_error_message): Likewise.
> (cxx_init_decl_processing): Likewise.
>
> gcc/d/ChangeLog:
>
> * d-lang.cc (d_post_options): Use new macro
> OPTION_SET_P.
>
> gcc/fortran/ChangeLog:
>
> * options.c (gfc_post_options): Use new macro
> OPTION_SET_P.
>
> gcc/objc/ChangeLog:
>
> * objc-next-runtime-abi-01.c: Use new macro
> OPTION_SET_P.
> * objc-next-runtime-abi-02.c (objc_next_runtime_abi_02_init): Likewise.
> ---
> gcc/ada/gcc-interface/misc.c | 10 ++---
> gcc/c-family/c-opts.c | 6 +--
> gcc/config/alpha/alpha.c | 2 +-
> gcc/config/arc/arc.c | 4 +-
> gcc/config/arm/arm.c | 9 ++--
> gcc/config/bfin/bfin.c | 5 ++-
> gcc/config/c6x/c6x.c | 3 +-
> gcc/config/csky/csky.c | 7 +--
> gcc/config/darwin.c | 31 ++++++-------
> gcc/config/frv/frv.c | 5 ++-
> gcc/config/i386/djgpp.h | 2 +-
> gcc/config/i386/i386.c | 6 +--
> gcc/config/ia64/ia64.c | 6 +--
> gcc/config/m32c/m32c.c | 3 +-
> gcc/config/m32r/m32r.c | 3 +-
> gcc/config/m68k/m68k.c | 6 +--
> gcc/config/microblaze/microblaze.c | 3 +-
> gcc/config/mips/mips.c | 9 ++--
> gcc/config/nios2/nios2.c | 3 +-
> gcc/config/nvptx/nvptx.c | 4 +-
> gcc/config/pa/pa.c | 4 +-
> gcc/config/riscv/riscv.c | 11 ++---
> gcc/config/rs6000/aix71.h | 6 +--
> gcc/config/rs6000/aix72.h | 6 +--
> gcc/config/rs6000/aix73.h | 6 +--
> gcc/config/rs6000/rs6000.c | 70 ++++++++++++++---------------
> gcc/config/rs6000/rtems.h | 4 +-
> gcc/config/rs6000/sysv4.h | 8 ++--
> gcc/config/rs6000/vxworks.h | 2 +-
> gcc/config/s390/s390.c | 4 +-
> gcc/config/sh/linux.h | 4 +-
> gcc/config/sh/netbsd-elf.h | 2 +-
> gcc/config/sh/sh.c | 12 ++---
> gcc/config/sol2.c | 3 +-
> gcc/config/sparc/sparc.c | 12 ++---
> gcc/config/tilegx/tilegx.c | 3 +-
> gcc/config/visium/visium.c | 2 +-
> gcc/config/vxworks.c | 5 ++-
> gcc/cp/constexpr.c | 3 +-
> gcc/cp/decl.c | 7 +--
> gcc/d/d-lang.cc | 10 ++---
> gcc/fortran/options.c | 6 +--
> gcc/lto-opts.c | 8 ++--
> gcc/objc/objc-next-runtime-abi-01.c | 2 +-
> gcc/objc/objc-next-runtime-abi-02.c | 4 +-
> gcc/omp-expand.c | 3 +-
> gcc/omp-general.c | 3 +-
> gcc/omp-offload.c | 3 +-
> gcc/opts.h | 4 ++
> gcc/targhooks.c | 4 +-
> gcc/toplev.c | 2 +-
> gcc/tree-predcom.c | 3 +-
> gcc/tree-sra.c | 6 +--
> 53 files changed, 192 insertions(+), 167 deletions(-)
>
> diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
> index 96199bd4b63..d0735708670 100644
> --- a/gcc/ada/gcc-interface/misc.c
> +++ b/gcc/ada/gcc-interface/misc.c
> @@ -271,7 +271,7 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
> warn_stringop_overflow = 0;
>
> /* No caret by default for Ada. */
> - if (!global_options_set.x_flag_diagnostics_show_caret)
> + if (!OPTION_SET_P (flag_diagnostics_show_caret))
> global_dc->show_caret = false;
>
> /* Warn only if STABS is not the default: we don't want to emit a warning if
> @@ -422,12 +422,12 @@ gnat_init_gcc_eh (void)
> flag_delete_dead_exceptions = 1;
> if (Suppress_Checks)
> {
> - if (!global_options_set.x_flag_non_call_exceptions)
> + if (!OPTION_SET_P (flag_non_call_exceptions))
> flag_non_call_exceptions = Machine_Overflows_On_Target && GNAT_Mode;
> }
> else
> {
> - if (!global_options_set.x_flag_non_call_exceptions)
> + if (!OPTION_SET_P (flag_non_call_exceptions))
> flag_non_call_exceptions = 1;
> flag_aggressive_loop_optimizations = 0;
> warn_aggressive_loop_optimizations = 0;
> @@ -445,14 +445,14 @@ gnat_init_gcc_fp (void)
> S'Signed_Zeros is true, but don't override the user if not. */
> if (Signed_Zeros_On_Target)
> flag_signed_zeros = 1;
> - else if (!global_options_set.x_flag_signed_zeros)
> + else if (!OPTION_SET_P (flag_signed_zeros))
> flag_signed_zeros = 0;
>
> /* Assume that FP operations can trap if S'Machine_Overflow is true,
> but don't override the user if not. */
> if (Machine_Overflows_On_Target)
> flag_trapping_math = 1;
> - else if (!global_options_set.x_flag_trapping_math)
> + else if (!OPTION_SET_P (flag_trapping_math))
> flag_trapping_math = 0;
> }
>
> diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
> index 3eaab5e1530..0225cba7a4b 100644
> --- a/gcc/c-family/c-opts.c
> +++ b/gcc/c-family/c-opts.c
> @@ -831,7 +831,7 @@ c_common_post_options (const char **pfilename)
> for -ffp-contract=off). */
> if (flag_iso
> && !c_dialect_cxx ()
> - && (global_options_set.x_flag_fp_contract_mode
> + && (OPTION_SET_P (flag_fp_contract_mode)
> == (enum fp_contract_mode) 0)
> && flag_unsafe_math_optimizations == 0)
> flag_fp_contract_mode = FP_CONTRACT_OFF;
> @@ -842,7 +842,7 @@ c_common_post_options (const char **pfilename)
> the set specified in ISO C99/C11. */
> if (!flag_iso
> && !c_dialect_cxx ()
> - && (global_options_set.x_flag_permitted_flt_eval_methods
> + && (OPTION_SET_P (flag_permitted_flt_eval_methods)
> == PERMITTED_FLT_EVAL_METHODS_DEFAULT))
> flag_permitted_flt_eval_methods = PERMITTED_FLT_EVAL_METHODS_TS_18661;
> else
> @@ -1040,7 +1040,7 @@ c_common_post_options (const char **pfilename)
>
> /* Unless -f{,no-}ext-numeric-literals has been used explicitly,
> for -std=c++{11,14,17,20,23} default to -fno-ext-numeric-literals. */
> - if (flag_iso && !global_options_set.x_flag_ext_numeric_literals)
> + if (flag_iso && !OPTION_SET_P (flag_ext_numeric_literals))
> cpp_opts->ext_numeric_literals = 0;
> }
> else if (warn_narrowing == -1)
> diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
> index c702e683c31..fced7ceefe2 100644
> --- a/gcc/config/alpha/alpha.c
> +++ b/gcc/config/alpha/alpha.c
> @@ -575,7 +575,7 @@ alpha_option_override (void)
> }
>
> /* Default the definition of "small data" to 8 bytes. */
> - if (!global_options_set.x_g_switch_value)
> + if (!OPTION_SET_P (g_switch_value))
> g_switch_value = 8;
>
> /* Infer TARGET_SMALL_DATA from -fpic/-fPIC. */
> diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
> index 92797db96b7..8244f37bf03 100644
> --- a/gcc/config/arc/arc.c
> +++ b/gcc/config/arc/arc.c
> @@ -1441,7 +1441,7 @@ arc_override_options (void)
> target_flags |= MASK_NO_SDATA_SET;
>
> /* Check for small data option */
> - if (!global_options_set.x_g_switch_value && !TARGET_NO_SDATA_SET)
> + if (!OPTION_SET_P (g_switch_value) && !TARGET_NO_SDATA_SET)
> g_switch_value = TARGET_LL64 ? 8 : 4;
>
> /* A7 has an issue with delay slots. */
> @@ -1455,7 +1455,7 @@ arc_override_options (void)
> target_flags &= ~MASK_MILLICODE_THUNK_SET;
>
> /* Set unaligned to all HS cpus. */
> - if (!global_options_set.x_unaligned_access && TARGET_HS)
> + if (!OPTION_SET_P (unaligned_access) && TARGET_HS)
> unaligned_access = 1;
>
> /* These need to be done at start up. It's convenient to do them here. */
> diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
> index 6c6e77fab66..471128fc86a 100644
> --- a/gcc/config/arm/arm.c
> +++ b/gcc/config/arm/arm.c
> @@ -71,6 +71,7 @@
> #include "gimple.h"
> #include "selftest.h"
> #include "tree-vectorizer.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -3468,7 +3469,7 @@ arm_option_override (void)
>
> arm_active_target.isa = sbitmap_alloc (isa_num_bits);
>
> - if (!global_options_set.x_arm_fpu_index)
> + if (!OPTION_SET_P (arm_fpu_index))
> {
> bool ok;
> int fpu_index;
> @@ -3528,7 +3529,7 @@ arm_option_override (void)
> flag_schedule_insns = flag_schedule_insns_after_reload = 0;
>
> /* Override the default structure alignment for AAPCS ABI. */
> - if (!global_options_set.x_arm_structure_size_boundary)
> + if (!OPTION_SET_P (arm_structure_size_boundary))
> {
> if (TARGET_AAPCS_BASED)
> arm_structure_size_boundary = 8;
> @@ -3553,12 +3554,12 @@ arm_option_override (void)
>
> if (TARGET_VXWORKS_RTP)
> {
> - if (!global_options_set.x_arm_pic_data_is_text_relative)
> + if (!OPTION_SET_P (arm_pic_data_is_text_relative))
> arm_pic_data_is_text_relative = 0;
> }
> else if (flag_pic
> && !arm_pic_data_is_text_relative
> - && !(global_options_set.x_target_flags & MASK_SINGLE_PIC_BASE))
> + && !(OPTION_SET_P (target_flags) & MASK_SINGLE_PIC_BASE))
> /* When text & data segments don't have a fixed displacement, the
> intended use is with a single, read only, pic base register.
> Unless the user explicitly requested not to do that, set
> diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
> index 698dd879934..3287e495dd3 100644
> --- a/gcc/config/bfin/bfin.c
> +++ b/gcc/config/bfin/bfin.c
> @@ -53,6 +53,7 @@
> #include "hw-doloop.h"
> #include "dumpfile.h"
> #include "builtins.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -1046,7 +1047,7 @@ bfin_load_pic_reg (rtx dest)
> if (local_info_node && local_info_node->local)
> return pic_offset_table_rtx;
>
> - if (global_options_set.x_bfin_library_id)
> + if (OPTION_SET_P (bfin_library_id))
> addr = plus_constant (Pmode, pic_offset_table_rtx,
> -4 - bfin_library_id * 4);
> else
> @@ -2369,7 +2370,7 @@ bfin_option_override (void)
> #endif
>
> /* Library identification */
> - if (global_options_set.x_bfin_library_id && ! TARGET_ID_SHARED_LIBRARY)
> + if (OPTION_SET_P (bfin_library_id) && ! TARGET_ID_SHARED_LIBRARY)
> error ("%<-mshared-library-id=%> specified without "
> "%<-mid-shared-library%>");
>
> diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c
> index ce4949516cf..4854371ee13 100644
> --- a/gcc/config/c6x/c6x.c
> +++ b/gcc/config/c6x/c6x.c
> @@ -60,6 +60,7 @@
> #include "dumpfile.h"
> #include "builtins.h"
> #include "flags.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -221,7 +222,7 @@ c6x_option_override (void)
> {
> unsigned i;
>
> - if (global_options_set.x_c6x_arch_option)
> + if (OPTION_SET_P (c6x_arch_option))
> {
> c6x_arch = all_isas[c6x_arch_option].type;
> c6x_insn_mask &= ~C6X_INSNS_ALL_CPU_BITS;
> diff --git a/gcc/config/csky/csky.c b/gcc/config/csky/csky.c
> index e55821fe2ee..487288b3292 100644
> --- a/gcc/config/csky/csky.c
> +++ b/gcc/config/csky/csky.c
> @@ -67,6 +67,7 @@
> #include "pass_manager.h"
> #include "tree-pass.h"
> #include "context.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -2757,15 +2758,15 @@ csky_option_override (void)
> #ifdef ENABLE_TPF_DEBUG
> /* Don't emit DWARF4 unless specifically selected. The TPF
> debuggers do not yet support DWARF 3/4. */
> - if (!global_options_set.x_dwarf_strict)
> + if (!OPTION_SET_P (dwarf_strict))
> dwarf_strict = 1;
> - if (!global_options_set.x_dwarf_version)
> + if (!OPTION_SET_P (dwarf_version))
> dwarf_version = 3;
> #endif
>
> /* Don't run the scheduler before reload by default,
> since it tends to increase register pressure. */
> - if (!global_options_set.x_flag_schedule_insns)
> + if (!OPTION_SET_P (flag_schedule_insns))
> flag_schedule_insns = 0;
>
> csky_add_gc_roots ();
> diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
> index 781742fe46f..28dc55d9b1c 100644
> --- a/gcc/config/darwin.c
> +++ b/gcc/config/darwin.c
> @@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see
> #include "intl.h"
> #include "optabs.h"
> #include "flags.h"
> +#include "opts.h"
>
> /* Fix and Continue.
>
> @@ -3282,7 +3283,7 @@ darwin_override_options (void)
> }
>
> /* Unless set, force ABI=2 for NeXT and m64, 0 otherwise. */
> - if (!global_options_set.x_flag_objc_abi)
> + if (!OPTION_SET_P (flag_objc_abi))
> global_options.x_flag_objc_abi
> = (!flag_next_runtime)
> ? 0
> @@ -3290,7 +3291,7 @@ darwin_override_options (void)
> : (generating_for_darwin_version >= 9) ? 1
> : 0);
>
> - if (global_options_set.x_flag_objc_abi && flag_next_runtime)
> + if (OPTION_SET_P (flag_objc_abi) && flag_next_runtime)
> {
> if (TARGET_64BIT && global_options.x_flag_objc_abi != 2)
> /* The Objective-C family ABI 2 is the only valid version NeXT/m64. */
> @@ -3307,23 +3308,23 @@ darwin_override_options (void)
>
> /* Don't emit DWARF3/4 unless specifically selected. This is a
> workaround for tool bugs. */
> - if (!global_options_set.x_dwarf_strict)
> + if (!OPTION_SET_P (dwarf_strict))
> dwarf_strict = 1;
> - if (!global_options_set.x_dwarf_version)
> + if (!OPTION_SET_P (dwarf_version))
> dwarf_version = 2;
>
> - if (global_options_set.x_dwarf_split_debug_info)
> + if (OPTION_SET_P (dwarf_split_debug_info))
> {
> inform (input_location,
> "%<-gsplit-dwarf%> is not supported on this platform, ignored");
> dwarf_split_debug_info = 0;
> - global_options_set.x_dwarf_split_debug_info = 0;
> + OPTION_SET_P (dwarf_split_debug_info) = 0;
> }
>
> /* Do not allow unwind tables to be generated by default for m32.
> fnon-call-exceptions will override this, regardless of what we do. */
> if (generating_for_darwin_version < 10
> - && !global_options_set.x_flag_asynchronous_unwind_tables
> + && !OPTION_SET_P (flag_asynchronous_unwind_tables)
> && !TARGET_64BIT)
> global_options.x_flag_asynchronous_unwind_tables = 0;
>
> @@ -3334,15 +3335,15 @@ darwin_override_options (void)
> will be generated". If the User specifically sets flags... we assume
> (s)he knows why... */
> if (generating_for_darwin_version < 9
> - && global_options_set.x_flag_reorder_blocks_and_partition
> + && OPTION_SET_P (flag_reorder_blocks_and_partition)
> && ((global_options.x_flag_exceptions /* User, c++, java */
> - && !global_options_set.x_flag_exceptions) /* User specified... */
> + && !OPTION_SET_P (flag_exceptions)) /* User specified... */
> || (global_options.x_flag_unwind_tables
> - && !global_options_set.x_flag_unwind_tables)
> + && !OPTION_SET_P (flag_unwind_tables))
> || (global_options.x_flag_non_call_exceptions
> - && !global_options_set.x_flag_non_call_exceptions)
> + && !OPTION_SET_P (flag_non_call_exceptions))
> || (global_options.x_flag_asynchronous_unwind_tables
> - && !global_options_set.x_flag_asynchronous_unwind_tables)))
> + && !OPTION_SET_P (flag_asynchronous_unwind_tables))))
> {
> inform (input_location,
> "%<-freorder-blocks-and-partition%> does not work with "
> @@ -3353,12 +3354,12 @@ darwin_override_options (void)
>
> /* FIXME: flag_objc_sjlj_exceptions is no longer needed since there is only
> one valid choice of exception scheme for each runtime. */
> - if (!global_options_set.x_flag_objc_sjlj_exceptions)
> + if (!OPTION_SET_P (flag_objc_sjlj_exceptions))
> global_options.x_flag_objc_sjlj_exceptions =
> flag_next_runtime && !TARGET_64BIT;
>
> /* FIXME: and this could be eliminated then too. */
> - if (!global_options_set.x_flag_exceptions
> + if (!OPTION_SET_P (flag_exceptions)
> && flag_objc_exceptions
> && TARGET_64BIT)
> flag_exceptions = 1;
> @@ -3414,7 +3415,7 @@ darwin_override_options (void)
> Linkers that don't need stubs, don't need the EH symbol markers either.
> */
>
> - if (!global_options_set.x_darwin_symbol_stubs)
> + if (!OPTION_SET_P (darwin_symbol_stubs))
> {
> if (darwin_target_linker)
> {
> diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c
> index a7f7f086d17..02cd07c09bc 100644
> --- a/gcc/config/frv/frv.c
> +++ b/gcc/config/frv/frv.c
> @@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see
> #include "ifcvt.h"
> #include "rtl-iter.h"
> #include "calls.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -664,7 +665,7 @@ frv_option_override (void)
> if (!flag_pic) /* -fPIC */
> flag_pic = 2;
>
> - if (!global_options_set.x_g_switch_value) /* -G0 */
> + if (!OPTION_SET_P (g_switch_value)) /* -G0 */
> {
> g_switch_value = 0;
> }
> @@ -757,7 +758,7 @@ frv_option_override (void)
> }
>
> /* Check for small data option */
> - if (!global_options_set.x_g_switch_value && !TARGET_LIBPIC)
> + if (!OPTION_SET_P (g_switch_value) && !TARGET_LIBPIC)
> g_switch_value = SDATA_DEFAULT_SIZE;
>
> /* There is no single unaligned SI op for PIC code. Sometimes we
> diff --git a/gcc/config/i386/djgpp.h b/gcc/config/i386/djgpp.h
> index 9decff7e56c..f1afad91c99 100644
> --- a/gcc/config/i386/djgpp.h
> +++ b/gcc/config/i386/djgpp.h
> @@ -147,7 +147,7 @@ along with GCC; see the file COPYING3. If not see
> \
> /* Don't emit DWARF3/4 unless specifically selected. */ \
> /* DWARF3/4 currently does not work for DJGPP. */ \
> - if (!global_options_set.x_dwarf_version) \
> + if (!OPTION_SET_P (dwarf_version)) \
> dwarf_version = 2; \
> \
> } \
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index a566d84a61e..24c4b50d3db 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -22280,7 +22280,7 @@ ix86_stack_protect_guard (void)
> tree type = build_qualified_type (type_node, qual);
> tree t;
>
> - if (global_options_set.x_ix86_stack_protector_guard_symbol_str)
> + if (OPTION_SET_P (ix86_stack_protector_guard_symbol_str))
> {
> t = ix86_tls_stack_chk_guard_decl;
>
> @@ -22794,12 +22794,12 @@ ix86_max_noce_ifcvt_seq_cost (edge e)
> bool predictable_p = predictable_edge_p (e);
> if (predictable_p)
> {
> - if (global_options_set.x_param_max_rtl_if_conversion_predictable_cost)
> + if (OPTION_SET_P (param_max_rtl_if_conversion_predictable_cost))
> return param_max_rtl_if_conversion_predictable_cost;
> }
> else
> {
> - if (global_options_set.x_param_max_rtl_if_conversion_unpredictable_cost)
> + if (OPTION_SET_P (param_max_rtl_if_conversion_unpredictable_cost))
> return param_max_rtl_if_conversion_unpredictable_cost;
> }
>
> diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
> index 632b9df1761..39a0e0791b7 100644
> --- a/gcc/config/ia64/ia64.c
> +++ b/gcc/config/ia64/ia64.c
> @@ -6098,7 +6098,7 @@ ia64_option_override (void)
> flag_ira_loop_pressure = 1;
>
>
> - ia64_section_threshold = (global_options_set.x_g_switch_value
> + ia64_section_threshold = (OPTION_SET_P (g_switch_value)
> ? g_switch_value
> : IA64_DEFAULT_GVALUE);
>
> @@ -6120,8 +6120,8 @@ static void
> ia64_override_options_after_change (void)
> {
> if (optimize >= 3
> - && !global_options_set.x_flag_selective_scheduling
> - && !global_options_set.x_flag_selective_scheduling2)
> + && !OPTION_SET_P (flag_selective_scheduling)
> + && !OPTION_SET_P (flag_selective_scheduling2))
> {
> flag_selective_scheduling2 = 1;
> flag_sel_sched_pipelining = 1;
> diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
> index d22bdd79c71..f99e2b0a485 100644
> --- a/gcc/config/m32c/m32c.c
> +++ b/gcc/config/m32c/m32c.c
> @@ -48,6 +48,7 @@
> #include "expr.h"
> #include "tm-constrs.h"
> #include "builtins.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -412,7 +413,7 @@ static void
> m32c_option_override (void)
> {
> /* We limit memregs to 0..16, and provide a default. */
> - if (global_options_set.x_target_memregs)
> + if (OPTION_SET_P (target_memregs))
> {
> if (target_memregs < 0 || target_memregs > 16)
> error ("invalid target memregs value %<%d%>", target_memregs);
> diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c
> index 1aaba94bb5c..d644f6bda73 100644
> --- a/gcc/config/m32r/m32r.c
> +++ b/gcc/config/m32r/m32r.c
> @@ -45,6 +45,7 @@
> #include "expr.h"
> #include "tm-constrs.h"
> #include "builtins.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -244,7 +245,7 @@ m32r_init (void)
> m32r_punct_chars['@'] = 1; /* ??? no longer used */
>
> /* Provide default value if not specified. */
> - if (!global_options_set.x_g_switch_value)
> + if (!OPTION_SET_P (g_switch_value))
> g_switch_value = SDATA_DEFAULT_SIZE;
> }
>
> diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
> index 0248eb719a8..d1105e7a137 100644
> --- a/gcc/config/m68k/m68k.c
> +++ b/gcc/config/m68k/m68k.c
> @@ -500,13 +500,13 @@ m68k_option_override (void)
> const struct m68k_target_selection *entry;
> unsigned long target_mask;
>
> - if (global_options_set.x_m68k_arch_option)
> + if (OPTION_SET_P (m68k_arch_option))
> m68k_arch_entry = &all_isas[m68k_arch_option];
>
> - if (global_options_set.x_m68k_cpu_option)
> + if (OPTION_SET_P (m68k_cpu_option))
> m68k_cpu_entry = &all_devices[(int) m68k_cpu_option];
>
> - if (global_options_set.x_m68k_tune_option)
> + if (OPTION_SET_P (m68k_tune_option))
> m68k_tune_entry = &all_microarchs[(int) m68k_tune_option];
>
> /* User can choose:
> diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
> index 6e8f367c80a..4813f7a7921 100644
> --- a/gcc/config/microblaze/microblaze.c
> +++ b/gcc/config/microblaze/microblaze.c
> @@ -51,6 +51,7 @@
> #include "cfgloop.h"
> #include "insn-addr.h"
> #include "cfgrtl.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -1741,7 +1742,7 @@ microblaze_option_override (void)
> machine_mode mode;
> int ver;
>
> - microblaze_section_threshold = (global_options_set.x_g_switch_value
> + microblaze_section_threshold = (OPTION_SET_P (g_switch_value)
> ? g_switch_value
> : MICROBLAZE_DEFAULT_GVALUE);
>
> diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
> index ade5d7041f0..807bf1a78d4 100644
> --- a/gcc/config/mips/mips.c
> +++ b/gcc/config/mips/mips.c
> @@ -66,6 +66,7 @@ along with GCC; see the file COPYING3. If not see
> #include "builtins.h"
> #include "rtl-iter.h"
> #include "flags.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -19883,7 +19884,7 @@ mips_option_override (void)
> {
> int i, start, regno, mode;
>
> - if (global_options_set.x_mips_isa_option)
> + if (OPTION_SET_P (mips_isa_option))
> mips_isa_option_info = &mips_cpu_info_table[mips_isa_option];
>
> #ifdef SUBTARGET_OVERRIDE_OPTIONS
> @@ -19915,7 +19916,7 @@ mips_option_override (void)
> TARGET_INTERLINK_COMPRESSED = 1;
>
> /* Set the small data limit. */
> - mips_small_data_threshold = (global_options_set.x_g_switch_value
> + mips_small_data_threshold = (OPTION_SET_P (g_switch_value)
> ? g_switch_value
> : MIPS_DEFAULT_GVALUE);
>
> @@ -19923,7 +19924,7 @@ mips_option_override (void)
> Similar code was added to GAS 2.14 (see tc-mips.c:md_after_parse_args()).
> The GAS and GCC code should be kept in sync as much as possible. */
>
> - if (global_options_set.x_mips_arch_option)
> + if (OPTION_SET_P (mips_arch_option))
> mips_set_architecture (mips_cpu_info_from_opt (mips_arch_option));
>
> if (mips_isa_option_info != 0)
> @@ -19945,7 +19946,7 @@ mips_option_override (void)
> mips_arch_info->name);
>
> /* Optimize for mips_arch, unless -mtune selects a different processor. */
> - if (global_options_set.x_mips_tune_option)
> + if (OPTION_SET_P (mips_tune_option))
> mips_set_tune (mips_cpu_info_from_opt (mips_tune_option));
>
> if (mips_tune_info == 0)
> diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c
> index 26d43331f33..7a613e4c13e 100644
> --- a/gcc/config/nios2/nios2.c
> +++ b/gcc/config/nios2/nios2.c
> @@ -52,6 +52,7 @@
> #include "builtins.h"
> #include "tree-pass.h"
> #include "xregex.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -1363,7 +1364,7 @@ nios2_option_override (void)
> init_machine_status = &nios2_init_machine_status;
>
> nios2_section_threshold
> - = (global_options_set.x_g_switch_value
> + = (OPTION_SET_P (g_switch_value)
> ? g_switch_value : NIOS2_DEFAULT_GVALUE);
>
> if (nios2_gpopt_option == gpopt_unspecified)
> diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
> index 4e4909e8c5f..951252e598a 100644
> --- a/gcc/config/nvptx/nvptx.c
> +++ b/gcc/config/nvptx/nvptx.c
> @@ -215,7 +215,7 @@ nvptx_option_override (void)
> /* Set toplevel_reorder, unless explicitly disabled. We need
> reordering so that we emit necessary assembler decls of
> undeclared variables. */
> - if (!global_options_set.x_flag_toplevel_reorder)
> + if (!OPTION_SET_P (flag_toplevel_reorder))
> flag_toplevel_reorder = 1;
>
> debug_nonbind_markers_p = 0;
> @@ -223,7 +223,7 @@ nvptx_option_override (void)
> /* Set flag_no_common, unless explicitly disabled. We fake common
> using .weak, and that's not entirely accurate, so avoid it
> unless forced. */
> - if (!global_options_set.x_flag_no_common)
> + if (!OPTION_SET_P (flag_no_common))
> flag_no_common = 1;
>
> /* The patch area requires nops, which we don't have. */
> diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
> index 69ba5bd035c..d13021ad94a 100644
> --- a/gcc/config/pa/pa.c
> +++ b/gcc/config/pa/pa.c
> @@ -545,9 +545,9 @@ pa_option_override (void)
> {
> /* DWARF5 is not supported by gdb. Don't emit DWARF5 unless
> specifically selected. */
> - if (!global_options_set.x_dwarf_strict)
> + if (!OPTION_SET_P (dwarf_strict))
> dwarf_strict = 1;
> - if (!global_options_set.x_dwarf_version)
> + if (!OPTION_SET_P (dwarf_version))
> dwarf_version = 4;
> }
>
> diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c
> index 576960bb37c..126572c6243 100644
> --- a/gcc/config/riscv/riscv.c
> +++ b/gcc/config/riscv/riscv.c
> @@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. If not see
> #include "builtins.h"
> #include "predict.h"
> #include "tree-pass.h"
> +#include "opts.h"
>
> /* True if X is an UNSPEC wrapper around a SYMBOL_REF or LABEL_REF. */
> #define UNSPEC_ADDRESS_P(X) \
> @@ -4839,7 +4840,7 @@ riscv_option_override (void)
> #endif
>
> if (riscv_stack_protector_guard == SSP_GLOBAL
> - && global_options_set.x_riscv_stack_protector_guard_offset_str)
> + && OPTION_SET_P (riscv_stack_protector_guard_offset_str))
> {
> error ("incompatible options %<-mstack-protector-guard=global%> and "
> "%<-mstack-protector-guard-offset=%s%>",
> @@ -4847,15 +4848,15 @@ riscv_option_override (void)
> }
>
> if (riscv_stack_protector_guard == SSP_TLS
> - && !(global_options_set.x_riscv_stack_protector_guard_offset_str
> - && global_options_set.x_riscv_stack_protector_guard_reg_str))
> + && !(OPTION_SET_P (riscv_stack_protector_guard_offset_str)
> + && OPTION_SET_P (riscv_stack_protector_guard_reg_str)))
> {
> error ("both %<-mstack-protector-guard-offset%> and "
> "%<-mstack-protector-guard-reg%> must be used "
> "with %<-mstack-protector-guard=sysreg%>");
> }
>
> - if (global_options_set.x_riscv_stack_protector_guard_reg_str)
> + if (OPTION_SET_P (riscv_stack_protector_guard_reg_str))
> {
> const char *str = riscv_stack_protector_guard_reg_str;
> int reg = decode_reg_name (str);
> @@ -4867,7 +4868,7 @@ riscv_option_override (void)
> riscv_stack_protector_guard_reg = reg;
> }
>
> - if (global_options_set.x_riscv_stack_protector_guard_offset_str)
> + if (OPTION_SET_P (riscv_stack_protector_guard_offset_str))
> {
> char *end;
> const char *str = riscv_stack_protector_guard_offset_str;
> diff --git a/gcc/config/rs6000/aix71.h b/gcc/config/rs6000/aix71.h
> index 1bc1560c496..ddd204dd862 100644
> --- a/gcc/config/rs6000/aix71.h
> +++ b/gcc/config/rs6000/aix71.h
> @@ -33,7 +33,7 @@ do { \
> if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
> { \
> rs6000_long_double_type_size = 64; \
> - if (global_options_set.x_rs6000_long_double_type_size) \
> + if (OPTION_SET_P (rs6000_long_double_type_size)) \
> warning (0, "soft-float and long-double-128 are incompatible"); \
> } \
> if (TARGET_POWERPC64 && ! TARGET_64BIT) \
> @@ -43,7 +43,7 @@ do { \
> if ((rs6000_isa_flags_explicit \
> & OPTION_MASK_MINIMAL_TOC) != 0) \
> { \
> - if (global_options_set.x_rs6000_current_cmodel \
> + if (OPTION_SET_P (rs6000_current_cmodel) \
> && rs6000_current_cmodel != CMODEL_SMALL) \
> error ("%<-mcmodel%> incompatible with other toc options"); \
> SET_CMODEL (CMODEL_SMALL); \
> @@ -63,7 +63,7 @@ do { \
> /* aix/ppc doesn't support -mvsx and -maltivec with Go */ \
> rs6000_isa_flags &= ~(OPTION_MASK_VSX | OPTION_MASK_ALTIVEC); \
> } \
> - if (!global_options_set.x_dwarf_version) \
> + if (!OPTION_SET_P (dwarf_version)) \
> /* AIX only supports DWARF 4. */ \
> dwarf_version = 4; \
> } while (0)
> diff --git a/gcc/config/rs6000/aix72.h b/gcc/config/rs6000/aix72.h
> index cca64f14f3a..f0e375cb984 100644
> --- a/gcc/config/rs6000/aix72.h
> +++ b/gcc/config/rs6000/aix72.h
> @@ -33,7 +33,7 @@ do { \
> if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
> { \
> rs6000_long_double_type_size = 64; \
> - if (global_options_set.x_rs6000_long_double_type_size) \
> + if (OPTION_SET_P (rs6000_long_double_type_size)) \
> warning (0, "soft-float and long-double-128 are incompatible"); \
> } \
> if (TARGET_POWERPC64 && ! TARGET_64BIT) \
> @@ -43,7 +43,7 @@ do { \
> if ((rs6000_isa_flags_explicit \
> & OPTION_MASK_MINIMAL_TOC) != 0) \
> { \
> - if (global_options_set.x_rs6000_current_cmodel \
> + if (OPTION_SET_P (rs6000_current_cmodel) \
> && rs6000_current_cmodel != CMODEL_SMALL) \
> error ("%<-mcmodel%> incompatible with other toc options"); \
> SET_CMODEL (CMODEL_SMALL); \
> @@ -63,7 +63,7 @@ do { \
> /* aix/ppc doesn't support -mvsx and -maltivec with Go */ \
> rs6000_isa_flags &= ~(OPTION_MASK_VSX | OPTION_MASK_ALTIVEC); \
> } \
> - if (!global_options_set.x_dwarf_version) \
> + if (!OPTION_SET_P (dwarf_version)) \
> /* AIX only supports DWARF 4. */ \
> dwarf_version = 4; \
> } while (0)
> diff --git a/gcc/config/rs6000/aix73.h b/gcc/config/rs6000/aix73.h
> index f0ca1a55e5d..2c92cc3db0d 100644
> --- a/gcc/config/rs6000/aix73.h
> +++ b/gcc/config/rs6000/aix73.h
> @@ -33,7 +33,7 @@ do { \
> if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
> { \
> rs6000_long_double_type_size = 64; \
> - if (global_options_set.x_rs6000_long_double_type_size) \
> + if (OPTION_SET_P (rs6000_long_double_type_size)) \
> warning (0, "soft-float and long-double-128 are incompatible"); \
> } \
> if (TARGET_POWERPC64 && ! TARGET_64BIT) \
> @@ -43,7 +43,7 @@ do { \
> if ((rs6000_isa_flags_explicit \
> & OPTION_MASK_MINIMAL_TOC) != 0) \
> { \
> - if (global_options_set.x_rs6000_current_cmodel \
> + if (OPTION_SET_P (rs6000_current_cmodel) \
> && rs6000_current_cmodel != CMODEL_SMALL) \
> error ("%<-mcmodel%> incompatible with other toc options"); \
> SET_CMODEL (CMODEL_SMALL); \
> @@ -63,7 +63,7 @@ do { \
> /* aix/ppc doesn't support -mvsx and -maltivec with Go */ \
> rs6000_isa_flags &= ~(OPTION_MASK_VSX | OPTION_MASK_ALTIVEC); \
> } \
> - if (!global_options_set.x_dwarf_version) \
> + if (!OPTION_SET_P (dwarf_version)) \
> /* AIX only supports DWARF 4. */ \
> dwarf_version = 4; \
> } while (0)
> diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
> index ad860728169..acba4d9f26c 100644
> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -3392,7 +3392,7 @@ darwin_rs6000_override_options (void)
> && !flag_apple_kext
> && strverscmp (darwin_macosx_version_min, "10.5") >= 0
> && ! (rs6000_isa_flags_explicit & OPTION_MASK_ALTIVEC)
> - && ! global_options_set.x_rs6000_cpu_index)
> + && ! OPTION_SET_P (rs6000_cpu_index))
> {
> rs6000_isa_flags |= OPTION_MASK_ALTIVEC;
> }
> @@ -3471,18 +3471,18 @@ rs6000_override_options_after_change (void)
> {
> /* Explicit -funroll-loops turns -munroll-only-small-loops off, and
> turns -frename-registers on. */
> - if ((global_options_set.x_flag_unroll_loops && flag_unroll_loops)
> - || (global_options_set.x_flag_unroll_all_loops
> + if ((OPTION_SET_P (flag_unroll_loops) && flag_unroll_loops)
> + || (OPTION_SET_P (flag_unroll_all_loops)
> && flag_unroll_all_loops))
> {
> - if (!global_options_set.x_unroll_only_small_loops)
> + if (!OPTION_SET_P (unroll_only_small_loops))
> unroll_only_small_loops = 0;
> - if (!global_options_set.x_flag_rename_registers)
> + if (!OPTION_SET_P (flag_rename_registers))
> flag_rename_registers = 1;
> - if (!global_options_set.x_flag_cunroll_grow_size)
> + if (!OPTION_SET_P (flag_cunroll_grow_size))
> flag_cunroll_grow_size = 1;
> }
> - else if (!global_options_set.x_flag_cunroll_grow_size)
> + else if (!OPTION_SET_P (flag_cunroll_grow_size))
> flag_cunroll_grow_size = flag_peel_loops || optimize >= 3;
> }
>
> @@ -3490,7 +3490,7 @@ rs6000_override_options_after_change (void)
> static void
> rs6000_linux64_override_options ()
> {
> - if (!global_options_set.x_rs6000_alignment_flags)
> + if (!OPTION_SET_P (rs6000_alignment_flags))
> rs6000_alignment_flags = MASK_ALIGN_NATURAL;
> if (rs6000_isa_flags & OPTION_MASK_64BIT)
> {
> @@ -3526,11 +3526,11 @@ rs6000_linux64_override_options ()
> rs6000_isa_flags |= OPTION_MASK_POWERPC64;
> error ("%<-m64%> requires a PowerPC64 cpu");
> }
> - if (!global_options_set.x_rs6000_current_cmodel)
> + if (!OPTION_SET_P (rs6000_current_cmodel))
> SET_CMODEL (CMODEL_MEDIUM);
> if ((rs6000_isa_flags_explicit & OPTION_MASK_MINIMAL_TOC) != 0)
> {
> - if (global_options_set.x_rs6000_current_cmodel
> + if (OPTION_SET_P (rs6000_current_cmodel)
> && rs6000_current_cmodel != CMODEL_SMALL)
> error ("%<-mcmodel incompatible with other toc options%>");
> if (TARGET_MINIMAL_TOC)
> @@ -3545,14 +3545,14 @@ rs6000_linux64_override_options ()
> }
> if (rs6000_current_cmodel != CMODEL_SMALL)
> {
> - if (!global_options_set.x_TARGET_NO_FP_IN_TOC)
> + if (!OPTION_SET_P (TARGET_NO_FP_IN_TOC))
> TARGET_NO_FP_IN_TOC = rs6000_current_cmodel == CMODEL_MEDIUM;
> - if (!global_options_set.x_TARGET_NO_SUM_IN_TOC)
> + if (!OPTION_SET_P (TARGET_NO_SUM_IN_TOC))
> TARGET_NO_SUM_IN_TOC = 0;
> }
> if (TARGET_PLTSEQ && DEFAULT_ABI != ABI_ELFv2)
> {
> - if (global_options_set.x_rs6000_pltseq)
> + if (OPTION_SET_P (rs6000_pltseq))
> warning (0, "%qs unsupported for this ABI",
> "-mpltseq");
> rs6000_pltseq = false;
> @@ -3567,7 +3567,7 @@ rs6000_linux64_override_options ()
> profile_kernel = 0;
> error (INVALID_32BIT, "profile-kernel");
> }
> - if (global_options_set.x_rs6000_current_cmodel)
> + if (OPTION_SET_P (rs6000_current_cmodel))
> {
> SET_CMODEL (CMODEL_SMALL);
> error (INVALID_32BIT, "cmodel");
> @@ -3627,7 +3627,7 @@ glibc_supports_ieee_128bit (void)
> includes OPTION_TARGET_CPU_DEFAULT, representing the name of the
> default CPU specified at build configure time, TARGET_DEFAULT,
> representing the default set of option flags for the default
> - target, and global_options_set.x_rs6000_isa_flags, representing
> + target, and OPTION_SET_P (rs6000_isa_flags), representing
> which options were requested on the command line.
>
> Upon return from this function:
> @@ -3676,13 +3676,13 @@ rs6000_option_override_internal (bool global_init_p)
>
> /* Remember the explicit arguments. */
> if (global_init_p)
> - rs6000_isa_flags_explicit = global_options_set.x_rs6000_isa_flags;
> + rs6000_isa_flags_explicit = OPTION_SET_P (rs6000_isa_flags);
>
> /* On 64-bit Darwin, power alignment is ABI-incompatible with some C
> library functions, so warn about it. The flag may be useful for
> performance studies from time to time though, so don't disable it
> entirely. */
> - if (global_options_set.x_rs6000_alignment_flags
> + if (OPTION_SET_P (rs6000_alignment_flags)
> && rs6000_alignment_flags == MASK_ALIGN_POWER
> && DEFAULT_ABI == ABI_DARWIN
> && TARGET_64BIT)
> @@ -3695,20 +3695,20 @@ rs6000_option_override_internal (bool global_init_p)
> with enough (>= 32) registers. It is an expensive optimization.
> So it is on only for peak performance. */
> if (optimize >= 3 && global_init_p
> - && !global_options_set.x_flag_ira_loop_pressure)
> + && !OPTION_SET_P (flag_ira_loop_pressure))
> flag_ira_loop_pressure = 1;
>
> /* -fsanitize=address needs to turn on -fasynchronous-unwind-tables in order
> for tracebacks to be complete but not if any -fasynchronous-unwind-tables
> options were already specified. */
> if (flag_sanitize & SANITIZE_USER_ADDRESS
> - && !global_options_set.x_flag_asynchronous_unwind_tables)
> + && !OPTION_SET_P (flag_asynchronous_unwind_tables))
> flag_asynchronous_unwind_tables = 1;
>
> /* -fvariable-expansion-in-unroller is a win for POWER whenever the
> loop unroller is active. It is only checked during unrolling, so
> we can just set it on by default. */
> - if (!global_options_set.x_flag_variable_expansion_in_unroller)
> + if (!OPTION_SET_P (flag_variable_expansion_in_unroller))
> flag_variable_expansion_in_unroller = 1;
>
> /* Set the pointer size. */
> @@ -3905,7 +3905,7 @@ rs6000_option_override_internal (bool global_init_p)
>
> #ifdef XCOFF_DEBUGGING_INFO
> /* For AIX default to 64-bit DWARF. */
> - if (!global_options_set.x_dwarf_offset_size)
> + if (!OPTION_SET_P (dwarf_offset_size))
> dwarf_offset_size = POINTER_SIZE_UNITS;
> #endif
>
> @@ -4129,7 +4129,7 @@ rs6000_option_override_internal (bool global_init_p)
> else if (TARGET_ALLOW_MOVMISALIGN && !TARGET_VSX)
> {
> if (TARGET_ALLOW_MOVMISALIGN > 0
> - && global_options_set.x_TARGET_ALLOW_MOVMISALIGN)
> + && OPTION_SET_P (TARGET_ALLOW_MOVMISALIGN))
> error ("%qs requires %qs", "-mallow-movmisalign", "-mvsx");
>
> TARGET_ALLOW_MOVMISALIGN = 0;
> @@ -4184,7 +4184,7 @@ rs6000_option_override_internal (bool global_init_p)
> : FLOAT_PRECISION_TFmode);
>
> /* Set long double size before the IEEE 128-bit tests. */
> - if (!global_options_set.x_rs6000_long_double_type_size)
> + if (!OPTION_SET_P (rs6000_long_double_type_size))
> {
> if (main_target_opt != NULL
> && (main_target_opt->x_rs6000_long_double_type_size
> @@ -4197,7 +4197,7 @@ rs6000_option_override_internal (bool global_init_p)
> ; /* The option value can be seen when cl_target_option_restore is called. */
> else if (rs6000_long_double_type_size == 128)
> rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
> - else if (global_options_set.x_rs6000_ieeequad)
> + else if (OPTION_SET_P (rs6000_ieeequad))
> {
> if (global_options.x_rs6000_ieeequad)
> error ("%qs requires %qs", "-mabi=ieeelongdouble", "-mlong-double-128");
> @@ -4210,7 +4210,7 @@ rs6000_option_override_internal (bool global_init_p)
> explicitly redefine TARGET_IEEEQUAD and TARGET_IEEEQUAD_DEFAULT to 0, so
> those systems will not pick up this default. Warn if the user changes the
> default unless -Wno-psabi. */
> - if (!global_options_set.x_rs6000_ieeequad)
> + if (!OPTION_SET_P (rs6000_ieeequad))
> rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
>
> else
> @@ -4395,7 +4395,7 @@ rs6000_option_override_internal (bool global_init_p)
> /* Enable Altivec ABI for AIX -maltivec. */
> if (TARGET_XCOFF
> && (TARGET_ALTIVEC || TARGET_VSX)
> - && !global_options_set.x_rs6000_altivec_abi)
> + && !OPTION_SET_P (rs6000_altivec_abi))
> {
> if (main_target_opt != NULL && !main_target_opt->x_rs6000_altivec_abi)
> error ("target attribute or pragma changes AltiVec ABI");
> @@ -4408,7 +4408,7 @@ rs6000_option_override_internal (bool global_init_p)
> be explicitly overridden in either case. */
> if (TARGET_ELF)
> {
> - if (!global_options_set.x_rs6000_altivec_abi
> + if (!OPTION_SET_P (rs6000_altivec_abi)
> && (TARGET_64BIT || TARGET_ALTIVEC || TARGET_VSX))
> {
> if (main_target_opt != NULL &&
> @@ -4438,7 +4438,7 @@ rs6000_option_override_internal (bool global_init_p)
> /* Place FP constants in the constant pool instead of TOC
> if section anchors enabled. */
> if (flag_section_anchors
> - && !global_options_set.x_TARGET_NO_FP_IN_TOC)
> + && !OPTION_SET_P (TARGET_NO_FP_IN_TOC))
> TARGET_NO_FP_IN_TOC = 1;
>
> if (TARGET_DEBUG_REG || TARGET_DEBUG_TARGET)
> @@ -4595,7 +4595,7 @@ rs6000_option_override_internal (bool global_init_p)
> }
>
> /* Handle stack protector */
> - if (!global_options_set.x_rs6000_stack_protector_guard)
> + if (!OPTION_SET_P (rs6000_stack_protector_guard))
> #ifdef TARGET_THREAD_SSP_OFFSET
> rs6000_stack_protector_guard = SSP_TLS;
> #else
> @@ -4607,7 +4607,7 @@ rs6000_option_override_internal (bool global_init_p)
> rs6000_stack_protector_guard_reg = TARGET_64BIT ? 13 : 2;
> #endif
>
> - if (global_options_set.x_rs6000_stack_protector_guard_offset_str)
> + if (OPTION_SET_P (rs6000_stack_protector_guard_offset_str))
> {
> char *endp;
> const char *str = rs6000_stack_protector_guard_offset_str;
> @@ -4626,7 +4626,7 @@ rs6000_option_override_internal (bool global_init_p)
> rs6000_stack_protector_guard_offset = offset;
> }
>
> - if (global_options_set.x_rs6000_stack_protector_guard_reg_str)
> + if (OPTION_SET_P (rs6000_stack_protector_guard_reg_str))
> {
> const char *str = rs6000_stack_protector_guard_reg_str;
> int reg = decode_reg_name (str);
> @@ -4654,7 +4654,7 @@ rs6000_option_override_internal (bool global_init_p)
> /* Set aix_struct_return last, after the ABI is determined.
> If -maix-struct-return or -msvr4-struct-return was explicitly
> used, don't override with the ABI default. */
> - if (!global_options_set.x_aix_struct_return)
> + if (!OPTION_SET_P (aix_struct_return))
> aix_struct_return = (DEFAULT_ABI != ABI_V4 || DRAFT_V4_STRUCT_RET);
>
> #if 0
> @@ -6272,14 +6272,14 @@ rs6000_file_start (void)
> start = "";
> }
>
> - if (global_options_set.x_rs6000_cpu_index)
> + if (OPTION_SET_P (rs6000_cpu_index))
> {
> fprintf (file, "%s -mcpu=%s", start,
> processor_target_table[rs6000_cpu_index].name);
> start = "";
> }
>
> - if (global_options_set.x_rs6000_tune_index)
> + if (OPTION_SET_P (rs6000_tune_index))
> {
> fprintf (file, "%s -mtune=%s", start,
> processor_target_table[rs6000_tune_index].name);
> @@ -21053,7 +21053,7 @@ rs6000_darwin_file_start (void)
> if (rs6000_default_cpu != 0 && rs6000_default_cpu[0] != '\0')
> cpu_id = rs6000_default_cpu;
>
> - if (global_options_set.x_rs6000_cpu_index)
> + if (OPTION_SET_P (rs6000_cpu_index))
> cpu_id = processor_target_table[rs6000_cpu_index].name;
>
> /* Look through the mapping array. Pick the first name that either
> diff --git a/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h
> index 872cc2849af..6184c5fde45 100644
> --- a/gcc/config/rs6000/rtems.h
> +++ b/gcc/config/rs6000/rtems.h
> @@ -116,14 +116,14 @@
> if ((rs6000_isa_flags_explicit \
> & OPTION_MASK_MINIMAL_TOC) != 0) \
> { \
> - if (global_options_set.x_rs6000_current_cmodel \
> + if (OPTION_SET_P (rs6000_current_cmodel) \
> && rs6000_current_cmodel != CMODEL_SMALL) \
> error ("%<-mcmodel%> incompatible with other toc options"); \
> SET_CMODEL (CMODEL_SMALL); \
> } \
> else \
> { \
> - if (!global_options_set.x_rs6000_current_cmodel) \
> + if (!OPTION_SET_P (rs6000_current_cmodel)) \
> SET_CMODEL (CMODEL_MEDIUM); \
> if (rs6000_current_cmodel != CMODEL_SMALL) \
> { \
> diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
> index 23ff59403a3..96ee5524224 100644
> --- a/gcc/config/rs6000/sysv4.h
> +++ b/gcc/config/rs6000/sysv4.h
> @@ -70,7 +70,7 @@
>
> #define SUBTARGET_OVERRIDE_OPTIONS \
> do { \
> - if (!global_options_set.x_g_switch_value) \
> + if (!OPTION_SET_P (g_switch_value)) \
> g_switch_value = SDATA_DEFAULT_SIZE; \
> \
> if (rs6000_abi_name == NULL) \
> @@ -197,16 +197,16 @@ do { \
> } \
> \
> if (TARGET_PLTSEQ != rs6000_pltseq \
> - && global_options_set.x_rs6000_pltseq) \
> + && OPTION_SET_P (rs6000_pltseq)) \
> { \
> error ("%qs not supported by your assembler", "-mpltseq"); \
> } \
> \
> if (DEFAULT_ABI == ABI_V4 && TARGET_PLTSEQ && !TARGET_SECURE_PLT) \
> { \
> - if (global_options_set.x_rs6000_pltseq) \
> + if (OPTION_SET_P (rs6000_pltseq)) \
> { \
> - if (global_options_set.x_secure_plt) \
> + if (OPTION_SET_P (secure_plt)) \
> error ("%qs and %qs are incompatible", \
> "-mpltseq", "-mbss-plt"); \
> else \
> diff --git a/gcc/config/rs6000/vxworks.h b/gcc/config/rs6000/vxworks.h
> index d8ecc0296c8..ca21a3a7bd3 100644
> --- a/gcc/config/rs6000/vxworks.h
> +++ b/gcc/config/rs6000/vxworks.h
> @@ -155,7 +155,7 @@ along with GCC; see the file COPYING3. If not see
> #undef SUB3TARGET_OVERRIDE_OPTIONS
> #define SUB3TARGET_OVERRIDE_OPTIONS \
> do { \
> - if (!global_options_set.x_g_switch_value) \
> + if (!OPTION_SET_P (g_switch_value)) \
> g_switch_value = SDATA_DEFAULT_SIZE; \
> VXWORKS_OVERRIDE_OPTIONS; \
> } while (0)
> diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
> index e04385451cf..4f144d1b0eb 100644
> --- a/gcc/config/s390/s390.c
> +++ b/gcc/config/s390/s390.c
> @@ -15746,9 +15746,9 @@ s390_option_override (void)
> {
> /* Don't emit DWARF3/4 unless specifically selected. The TPF
> debuggers do not yet support DWARF 3/4. */
> - if (!global_options_set.x_dwarf_strict)
> + if (!OPTION_SET_P (dwarf_strict))
> dwarf_strict = 1;
> - if (!global_options_set.x_dwarf_version)
> + if (!OPTION_SET_P (dwarf_version))
> dwarf_version = 2;
> }
> }
> diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h
> index 7558d2f7195..b75a7b8250e 100644
> --- a/gcc/config/sh/linux.h
> +++ b/gcc/config/sh/linux.h
> @@ -126,7 +126,7 @@ along with GCC; see the file COPYING3. If not see
> do \
> { \
> /* Set default atomic model if it hasn't been specified. */ \
> - if (global_options_set.x_sh_atomic_model_str == 0) \
> + if (OPTION_SET_P (sh_atomic_model_str) == 0) \
> { \
> if (TARGET_SH3) \
> sh_atomic_model_str = "soft-gusa"; \
> @@ -134,7 +134,7 @@ along with GCC; see the file COPYING3. If not see
> sh_atomic_model_str = "soft-imask"; \
> } \
> /* Set -musermode if it hasn't been specified. */ \
> - if (global_options_set.x_TARGET_USERMODE == 0) \
> + if (OPTION_SET_P (TARGET_USERMODE) == 0) \
> TARGET_USERMODE = true; \
> } \
> while (0)
> diff --git a/gcc/config/sh/netbsd-elf.h b/gcc/config/sh/netbsd-elf.h
> index f0b75419855..39eb773001d 100644
> --- a/gcc/config/sh/netbsd-elf.h
> +++ b/gcc/config/sh/netbsd-elf.h
> @@ -85,7 +85,7 @@ while (0)
> do \
> { \
> /* Set -musermode if it hasn't been specified. */ \
> - if (global_options_set.x_TARGET_USERMODE == 0) \
> + if (OPTION_SET_P (TARGET_USERMODE) == 0) \
> TARGET_USERMODE = true; \
> } \
> while (0)
> diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
> index 1564109c942..0628f059ca2 100644
> --- a/gcc/config/sh/sh.c
> +++ b/gcc/config/sh/sh.c
> @@ -893,7 +893,7 @@ sh_option_override (void)
> }
>
> /* Set -mzdcbranch for SH4 / SH4A if not otherwise specified by the user. */
> - if (! global_options_set.x_TARGET_ZDCBRANCH && TARGET_HARD_SH4)
> + if (! OPTION_SET_P (TARGET_ZDCBRANCH) && TARGET_HARD_SH4)
> TARGET_ZDCBRANCH = 1;
>
> /* FDPIC code is a special form of PIC, and the vast majority of code
> @@ -932,13 +932,13 @@ sh_option_override (void)
> <http://gcc.gnu.org/ml/gcc-patches/2005-10/msg00816.html>. */
> else if (flag_exceptions)
> {
> - if (flag_schedule_insns && global_options_set.x_flag_schedule_insns)
> + if (flag_schedule_insns && OPTION_SET_P (flag_schedule_insns))
> warning (0, "ignoring %<-fschedule-insns%> because of exception "
> "handling bug");
> flag_schedule_insns = 0;
> }
> else if (flag_schedule_insns
> - && !global_options_set.x_flag_schedule_insns)
> + && !OPTION_SET_P (flag_schedule_insns))
> flag_schedule_insns = 0;
> }
>
> @@ -958,12 +958,12 @@ sh_option_override (void)
> if (flag_unsafe_math_optimizations)
> {
> /* Enable fsca insn for SH4A if not otherwise specified by the user. */
> - if (global_options_set.x_TARGET_FSCA == 0
> + if (OPTION_SET_P (TARGET_FSCA) == 0
> && (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
> TARGET_FSCA = 1;
>
> /* Enable fsrra insn for SH4A if not otherwise specified by the user. */
> - if (global_options_set.x_TARGET_FSRRA == 0
> + if (OPTION_SET_P (TARGET_FSRRA) == 0
> && (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
> TARGET_FSRRA = 1;
> }
> @@ -976,7 +976,7 @@ sh_option_override (void)
>
> /* If the -mieee option was not explicitly set by the user, turn it on
> unless -ffinite-math-only was specified. See also PR 33135. */
> - if (! global_options_set.x_TARGET_IEEE)
> + if (! OPTION_SET_P (TARGET_IEEE))
> TARGET_IEEE = ! flag_finite_math_only;
>
> if (sh_fixed_range_str)
> diff --git a/gcc/config/sol2.c b/gcc/config/sol2.c
> index 1fbdbf5046c..517816a1fe6 100644
> --- a/gcc/config/sol2.c
> +++ b/gcc/config/sol2.c
> @@ -31,6 +31,7 @@ along with GCC; see the file COPYING3. If not see
> #include "diagnostic-core.h"
> #include "varasm.h"
> #include "output.h"
> +#include "opts.h"
>
> tree solaris_pending_aligns, solaris_pending_inits, solaris_pending_finis;
>
> @@ -296,6 +297,6 @@ solaris_override_options (void)
> {
> /* Older versions of Solaris ld cannot handle CIE version 3 in .eh_frame.
> Don't emit DWARF3/4 unless specifically selected if so. */
> - if (!HAVE_LD_EH_FRAME_CIEV3 && !global_options_set.x_dwarf_version)
> + if (!HAVE_LD_EH_FRAME_CIEV3 && !OPTION_SET_P (dwarf_version))
> dwarf_version = 2;
> }
> diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
> index 6bc6f0ace6a..ca91be4c8e9 100644
> --- a/gcc/config/sparc/sparc.c
> +++ b/gcc/config/sparc/sparc.c
> @@ -1859,7 +1859,7 @@ sparc_option_override (void)
> }
>
> /* Set the default CPU if no -mcpu option was specified. */
> - if (!global_options_set.x_sparc_cpu_and_features)
> + if (!OPTION_SET_P (sparc_cpu_and_features))
> {
> for (def = &cpu_default[0]; def->cpu != -1; ++def)
> if (def->cpu == TARGET_CPU_DEFAULT)
> @@ -1869,7 +1869,7 @@ sparc_option_override (void)
> }
>
> /* Set the default CPU if no -mtune option was specified. */
> - if (!global_options_set.x_sparc_cpu)
> + if (!OPTION_SET_P (sparc_cpu))
> sparc_cpu = sparc_cpu_and_features;
>
> cpu = &cpu_table[(int) sparc_cpu_and_features];
> @@ -1975,7 +1975,7 @@ sparc_option_override (void)
> dump_target_flags ("Final target_flags", target_flags);
>
> /* Set the code model if no -mcmodel option was specified. */
> - if (global_options_set.x_sparc_code_model)
> + if (OPTION_SET_P (sparc_code_model))
> {
> if (TARGET_ARCH32)
> error ("%<-mcmodel=%> is not supported in 32-bit mode");
> @@ -1989,7 +1989,7 @@ sparc_option_override (void)
> }
>
> /* Set the memory model if no -mmemory-model option was specified. */
> - if (!global_options_set.x_sparc_memory_model)
> + if (!OPTION_SET_P (sparc_memory_model))
> {
> /* Choose the memory model for the operating system. */
> enum sparc_memory_model_type os_default = SUBTARGET_DEFAULT_MEMORY_MODEL;
> @@ -2177,12 +2177,12 @@ sparc_option_override (void)
> /* Disable save slot sharing for call-clobbered registers by default.
> The IRA sharing algorithm works on single registers only and this
> pessimizes for double floating-point registers. */
> - if (!global_options_set.x_flag_ira_share_save_slots)
> + if (!OPTION_SET_P (flag_ira_share_save_slots))
> flag_ira_share_save_slots = 0;
>
> /* Only enable REE by default in 64-bit mode where it helps to eliminate
> redundant 32-to-64-bit extensions. */
> - if (!global_options_set.x_flag_ree && TARGET_ARCH32)
> + if (!OPTION_SET_P (flag_ree) && TARGET_ARCH32)
> flag_ree = 0;
>
> /* Do various machine dependent initializations. */
> diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
> index 64e28f641d8..08d1126c49e 100644
> --- a/gcc/config/tilegx/tilegx.c
> +++ b/gcc/config/tilegx/tilegx.c
> @@ -56,6 +56,7 @@
> #include "tilegx-builtins.h"
> #include "tilegx-multiply.h"
> #include "builtins.h"
> +#include "opts.h"
>
> /* This file should be included last. */
> #include "target-def.h"
> @@ -76,7 +77,7 @@ static bool output_memory_autoinc_first;
> static void
> tilegx_option_override (void)
> {
> - if (global_options_set.x_tilegx_cmodel)
> + if (OPTION_SET_P (tilegx_cmodel))
> {
> switch (tilegx_cmodel)
> {
> diff --git a/gcc/config/visium/visium.c b/gcc/config/visium/visium.c
> index 58e5355e712..ffa2243f155 100644
> --- a/gcc/config/visium/visium.c
> +++ b/gcc/config/visium/visium.c
> @@ -443,7 +443,7 @@ visium_option_override (void)
> }
>
> /* Set -mtune from -mcpu if not specified. */
> - if (!global_options_set.x_visium_cpu)
> + if (!OPTION_SET_P (visium_cpu))
> visium_cpu = visium_cpu_and_features;
>
> /* Align functions on 256-byte (32-quadword) for GR5 and 64-byte (8-quadword)
> diff --git a/gcc/config/vxworks.c b/gcc/config/vxworks.c
> index 51f4675d7c6..29ec0604b62 100644
> --- a/gcc/config/vxworks.c
> +++ b/gcc/config/vxworks.c
> @@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see
> #include "rtl.h"
> #include "memmodel.h"
> #include "optabs.h"
> +#include "opts.h"
>
> #if !HAVE_INITFINI_ARRAY_SUPPORT
> /* Like default_named_section_asm_out_constructor, except that even
> @@ -167,10 +168,10 @@ vxworks_override_options (void)
> dwarf up to certain version. Default dwarf control to friendly
> values for these. */
>
> - if (!global_options_set.x_dwarf_strict)
> + if (!OPTION_SET_P (dwarf_strict))
> dwarf_strict = 1;
>
> - if (!global_options_set.x_dwarf_version)
> + if (!OPTION_SET_P (dwarf_version))
> dwarf_version = VXWORKS_DWARF_VERSION_DEFAULT;
>
> }
> diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c
> index 66d5221692a..08f8514d08d 100644
> --- a/gcc/cp/constexpr.c
> +++ b/gcc/cp/constexpr.c
> @@ -36,6 +36,7 @@ along with GCC; see the file COPYING3. If not see
> #include "fold-const-call.h"
> #include "stor-layout.h"
> #include "cgraph.h"
> +#include "opts.h"
>
> static bool verify_constant (tree, bool, bool *, bool *);
> #define VERIFY_CONSTANT(X) \
> @@ -6107,7 +6108,7 @@ maybe_warn_about_constant_value (location_t loc, tree decl)
> static bool explained = false;
> if (cxx_dialect >= cxx17
> && warn_interference_size
> - && !global_options_set.x_param_destruct_interfere_size
> + && !OPTION_SET_P (param_destruct_interfere_size)
> && DECL_CONTEXT (decl) == std_node
> && id_equal (DECL_NAME (decl), "hardware_destructive_interference_size")
> && (LOCATION_FILE (input_location) != main_input_filename
> diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
> index 2d30c790b93..561debe6a0e 100644
> --- a/gcc/cp/decl.c
> +++ b/gcc/cp/decl.c
> @@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. If not see
> #include "context.h" /* For 'g'. */
> #include "omp-general.h"
> #include "omp-offload.h" /* For offload_vars. */
> +#include "opts.h"
>
> /* Possible cases of bad specifiers type used by bad_specifiers. */
> enum bad_spec_place {
> @@ -3228,7 +3229,7 @@ redeclaration_error_message (tree newdecl, tree olddecl)
> {
> DECL_EXTERNAL (newdecl) = 1;
> /* For now, only warn with explicit -Wdeprecated. */
> - if (global_options_set.x_warn_deprecated)
> + if (OPTION_SET_P (warn_deprecated))
> {
> auto_diagnostic_group d;
> if (warning_at (DECL_SOURCE_LOCATION (newdecl), OPT_Wdeprecated,
> @@ -4756,7 +4757,7 @@ cxx_init_decl_processing (void)
> /* Check that the hardware interference sizes are at least
> alignof(max_align_t), as required by the standard. */
> const int max_align = max_align_t_align () / BITS_PER_UNIT;
> - if (global_options_set.x_param_destruct_interfere_size)
> + if (OPTION_SET_P (param_destruct_interfere_size))
> {
> if (param_destruct_interfere_size < max_align)
> error ("%<--param destructive-interference-size=%d%> is less than "
> @@ -4773,7 +4774,7 @@ cxx_init_decl_processing (void)
> param_destruct_interfere_size = param_l1_cache_line_size;
> /* else leave it unset. */
>
> - if (global_options_set.x_param_construct_interfere_size)
> + if (OPTION_SET_P (param_construct_interfere_size))
> {
> if (param_construct_interfere_size < max_align)
> error ("%<--param constructive-interference-size=%d%> is less than "
> diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc
> index fa29a46ab1e..be6330fbdfb 100644
> --- a/gcc/d/d-lang.cc
> +++ b/gcc/d/d-lang.cc
> @@ -792,13 +792,13 @@ d_post_options (const char ** fn)
>
> if (global.params.betterC)
> {
> - if (!global_options_set.x_flag_moduleinfo)
> + if (!OPTION_SET_P (flag_moduleinfo))
> global.params.useModuleInfo = false;
>
> - if (!global_options_set.x_flag_rtti)
> + if (!OPTION_SET_P (flag_rtti))
> global.params.useTypeInfo = false;
>
> - if (!global_options_set.x_flag_exceptions)
> + if (!OPTION_SET_P (flag_exceptions))
> global.params.useExceptions = false;
>
> global.params.checkAction = CHECKACTION_C;
> @@ -810,7 +810,7 @@ d_post_options (const char ** fn)
> /* Turn off partitioning unless it was explicitly requested, as it doesn't
> work with D exception chaining, where EH handler uses LSDA to determine
> whether two thrown exception are in the same context. */
> - if (!global_options_set.x_flag_reorder_blocks_and_partition)
> + if (!OPTION_SET_P (flag_reorder_blocks_and_partition))
> global_options.x_flag_reorder_blocks_and_partition = 0;
>
> /* Error about use of deprecated features. */
> @@ -819,7 +819,7 @@ d_post_options (const char ** fn)
> global.params.useDeprecated = DIAGNOSTICerror;
>
> /* Make -fmax-errors visible to frontend's diagnostic machinery. */
> - if (global_options_set.x_flag_max_errors)
> + if (OPTION_SET_P (flag_max_errors))
> global.params.errorLimit = flag_max_errors;
>
> if (flag_excess_precision == EXCESS_PRECISION_DEFAULT)
> diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c
> index 016b70443ae..3499a1caa6d 100644
> --- a/gcc/fortran/options.c
> +++ b/gcc/fortran/options.c
> @@ -260,7 +260,7 @@ gfc_post_options (const char **pfilename)
> If not enabled explicitly by the user, only warn for -I
> and -J, otherwise warn for all include paths. */
> verbose_missing_dir_warn
> - = (global_options_set.x_cpp_warn_missing_include_dirs
> + = (OPTION_SET_P (cpp_warn_missing_include_dirs)
> && global_options.x_cpp_warn_missing_include_dirs);
> SET_OPTION_IF_UNSET (&global_options, &global_options_set,
> cpp_warn_missing_include_dirs, 1);
> @@ -309,7 +309,7 @@ gfc_post_options (const char **pfilename)
> flag_dump_fortran_original = 0;
>
> /* Make -fmax-errors visible to gfortran's diagnostic machinery. */
> - if (global_options_set.x_flag_max_errors)
> + if (OPTION_SET_P (flag_max_errors))
> gfc_option.max_errors = flag_max_errors;
>
> /* Verify the input file name. */
> @@ -388,7 +388,7 @@ gfc_post_options (const char **pfilename)
>
> /* Enable -Werror=line-truncation when -Werror and -Wno-error have
> not been set. */
> - if (warn_line_truncation && !global_options_set.x_warnings_are_errors
> + if (warn_line_truncation && !OPTION_SET_P (warnings_are_errors)
> && (global_dc->classify_diagnostic[OPT_Wline_truncation] ==
> DK_UNSPECIFIED))
> diagnostic_classify_diagnostic (global_dc, OPT_Wline_truncation,
> diff --git a/gcc/lto-opts.c b/gcc/lto-opts.c
> index 9496b3c8e0b..7b2ad74e69a 100644
> --- a/gcc/lto-opts.c
> +++ b/gcc/lto-opts.c
> @@ -70,17 +70,17 @@ lto_write_options (void)
>
> obstack_init (&temporary_obstack);
>
> - if (!global_options_set.x_flag_openmp
> + if (!OPTION_SET_P (flag_openmp)
> && !global_options.x_flag_openmp)
> append_to_collect_gcc_options (&temporary_obstack, &first_p,
> "-fno-openmp");
> - if (!global_options_set.x_flag_openacc
> + if (!OPTION_SET_P (flag_openacc)
> && !global_options.x_flag_openacc)
> append_to_collect_gcc_options (&temporary_obstack, &first_p,
> "-fno-openacc");
> /* Append PIC/PIE mode because its default depends on target and it is
> subject of merging in lto-wrapper. */
> - if (!global_options_set.x_flag_pic && !global_options_set.x_flag_pie)
> + if (!OPTION_SET_P (flag_pic) && !OPTION_SET_P (flag_pie))
> {
> append_to_collect_gcc_options (&temporary_obstack, &first_p,
> global_options.x_flag_pic == 2
> @@ -94,7 +94,7 @@ lto_write_options (void)
> : "-fno-pie");
> }
>
> - if (!global_options_set.x_flag_cf_protection)
> + if (!OPTION_SET_P (flag_cf_protection))
> {
> append_to_collect_gcc_options (
> &temporary_obstack, &first_p,
> diff --git a/gcc/objc/objc-next-runtime-abi-01.c b/gcc/objc/objc-next-runtime-abi-01.c
> index 183fc01abb2..17c86189923 100644
> --- a/gcc/objc/objc-next-runtime-abi-01.c
> +++ b/gcc/objc/objc-next-runtime-abi-01.c
> @@ -259,7 +259,7 @@ static void next_runtime_01_initialize (void)
> #ifdef OBJCPLUS
> /* For all NeXT objc ABIs -fobjc-call-cxx-cdtors is on by
> default. */
> - if (!global_options_set.x_flag_objc_call_cxx_cdtors)
> + if (!OPTION_SET_P (flag_objc_call_cxx_cdtors))
> global_options.x_flag_objc_call_cxx_cdtors = 1;
> #endif
>
> diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c
> index 9c35738a95c..677b75f0334 100644
> --- a/gcc/objc/objc-next-runtime-abi-02.c
> +++ b/gcc/objc/objc-next-runtime-abi-02.c
> @@ -255,7 +255,7 @@ objc_next_runtime_abi_02_init (objc_runtime_hooks *rthooks)
> }
>
> /* NeXT ABI 2 is intended to default to checking for nil receivers. */
> - if (! global_options_set.x_flag_objc_nilcheck)
> + if (! OPTION_SET_P (flag_objc_nilcheck))
> flag_objc_nilcheck = 1;
>
> rthooks->initialize = next_runtime_02_initialize;
> @@ -366,7 +366,7 @@ static void next_runtime_02_initialize (void)
> #ifdef OBJCPLUS
> /* For all NeXT objc ABIs -fobjc-call-cxx-cdtors is on by
> default. */
> - if (!global_options_set.x_flag_objc_call_cxx_cdtors)
> + if (!OPTION_SET_P (flag_objc_call_cxx_cdtors))
> global_options.x_flag_objc_call_cxx_cdtors = 1;
> #endif
>
> diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c
> index 496c0e6cdd6..9715ef50e62 100644
> --- a/gcc/omp-expand.c
> +++ b/gcc/omp-expand.c
> @@ -59,6 +59,7 @@ along with GCC; see the file COPYING3. If not see
> #include "stringpool.h"
> #include "attribs.h"
> #include "tree-eh.h"
> +#include "opts.h"
>
> /* OMP region information. Every parallel and workshare
> directive is enclosed between two markers, the OMP_* directive
> @@ -6960,7 +6961,7 @@ expand_omp_simd (struct omp_region *region, struct omp_for_data *fd)
> /* If not -fno-tree-loop-vectorize, hint that we want to vectorize
> the loop. */
> if ((flag_tree_loop_vectorize
> - || !global_options_set.x_flag_tree_loop_vectorize)
> + || !OPTION_SET_P (flag_tree_loop_vectorize))
> && flag_tree_loop_optimize
> && loop->safelen > 1)
> {
> diff --git a/gcc/omp-general.c b/gcc/omp-general.c
> index 1e4c0b25531..3e5ca94c2a7 100644
> --- a/gcc/omp-general.c
> +++ b/gcc/omp-general.c
> @@ -44,6 +44,7 @@ along with GCC; see the file COPYING3. If not see
> #include "tree-iterator.h"
> #include "data-streamer.h"
> #include "streamer-hooks.h"
> +#include "opts.h"
>
> enum omp_requires omp_requires_mask;
>
> @@ -952,7 +953,7 @@ omp_max_vf (void)
> || optimize_debug
> || !flag_tree_loop_optimize
> || (!flag_tree_loop_vectorize
> - && global_options_set.x_flag_tree_loop_vectorize))
> + && OPTION_SET_P (flag_tree_loop_vectorize)))
> return 1;
>
> auto_vector_modes modes;
> diff --git a/gcc/omp-offload.c b/gcc/omp-offload.c
> index d881426ae65..833f7ddea58 100644
> --- a/gcc/omp-offload.c
> +++ b/gcc/omp-offload.c
> @@ -54,6 +54,7 @@ along with GCC; see the file COPYING3. If not see
> #include "cfgloop.h"
> #include "context.h"
> #include "convert.h"
> +#include "opts.h"
>
> /* Describe the OpenACC looping structure of a function. The entire
> function is held in a 'NULL' loop. */
> @@ -633,7 +634,7 @@ oacc_xform_loop (gcall *call)
> /* If not -fno-tree-loop-vectorize, hint that we want to vectorize
> the loop. */
> && (flag_tree_loop_vectorize
> - || !global_options_set.x_flag_tree_loop_vectorize))
> + || !OPTION_SET_P (flag_tree_loop_vectorize)))
> {
> basic_block bb = gsi_bb (gsi);
> class loop *parent = bb->loop_father;
> diff --git a/gcc/opts.h b/gcc/opts.h
> index bafc790112b..f5bc9a3149c 100644
> --- a/gcc/opts.h
> +++ b/gcc/opts.h
> @@ -500,4 +500,8 @@ extern char *gen_producer_string (const char *language_string,
> } \
> while (false)
>
> +/* Return true if OPTION is set by user in global options. */
> +
> +#define OPTION_SET_P(OPTION) global_options_set.x_ ## OPTION
> +
> #endif
> diff --git a/gcc/targhooks.c b/gcc/targhooks.c
> index c9b5208853d..cbbcedf790f 100644
> --- a/gcc/targhooks.c
> +++ b/gcc/targhooks.c
> @@ -2453,12 +2453,12 @@ default_max_noce_ifcvt_seq_cost (edge e)
>
> if (predictable_p)
> {
> - if (global_options_set.x_param_max_rtl_if_conversion_predictable_cost)
> + if (OPTION_SET_P (param_max_rtl_if_conversion_predictable_cost))
> return param_max_rtl_if_conversion_predictable_cost;
> }
> else
> {
> - if (global_options_set.x_param_max_rtl_if_conversion_unpredictable_cost)
> + if (OPTION_SET_P (param_max_rtl_if_conversion_unpredictable_cost))
> return param_max_rtl_if_conversion_unpredictable_cost;
> }
>
> diff --git a/gcc/toplev.c b/gcc/toplev.c
> index ecb2b694970..e4b381e159b 100644
> --- a/gcc/toplev.c
> +++ b/gcc/toplev.c
> @@ -1751,7 +1751,7 @@ process_options (bool no_backend)
>
> /* Enable -Werror=coverage-mismatch when -Werror and -Wno-error
> have not been set. */
> - if (!global_options_set.x_warnings_are_errors)
> + if (!OPTION_SET_P (warnings_are_errors))
> {
> if (warn_coverage_mismatch
> && (global_dc->classify_diagnostic[OPT_Wcoverage_mismatch] ==
> diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c
> index 6b195d1914f..ce1f08f7d22 100644
> --- a/gcc/tree-predcom.c
> +++ b/gcc/tree-predcom.c
> @@ -233,6 +233,7 @@ along with GCC; see the file COPYING3. If not see
> #include "tree-scalar-evolution.h"
> #include "tree-affine.h"
> #include "builtins.h"
> +#include "opts.h"
>
> /* The maximum number of iterations between the considered memory
> references. */
> @@ -3492,7 +3493,7 @@ public:
> only if predictive commoning isn't set explicitly, and it
> doesn't allow unrolling. */
> if (flag_tree_loop_vectorize
> - && !global_options_set.x_flag_predictive_commoning)
> + && !OPTION_SET_P (flag_predictive_commoning))
> return true;
>
> return false;
> diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
> index 0363c5efb78..9b786e29e4e 100644
> --- a/gcc/tree-sra.c
> +++ b/gcc/tree-sra.c
> @@ -99,7 +99,7 @@ along with GCC; see the file COPYING3. If not see
> #include "dbgcnt.h"
> #include "builtins.h"
> #include "tree-sra.h"
> -
> +#include "opts.h"
>
> /* Enumeration of all aggregate reductions we can do. */
> enum sra_mode { SRA_MODE_EARLY_IPA, /* early call regularization */
> @@ -3427,12 +3427,12 @@ analyze_all_variable_accesses (void)
>
> if (optimize_speed_p)
> {
> - if (global_options_set.x_param_sra_max_scalarization_size_speed)
> + if (OPTION_SET_P (param_sra_max_scalarization_size_speed))
> max_scalarization_size = param_sra_max_scalarization_size_speed;
> }
> else
> {
> - if (global_options_set.x_param_sra_max_scalarization_size_size)
> + if (OPTION_SET_P (param_sra_max_scalarization_size_size))
> max_scalarization_size = param_sra_max_scalarization_size_size;
> }
> max_scalarization_size *= BITS_PER_UNIT;
> --
> 2.33.0
>
@@ -271,7 +271,7 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
warn_stringop_overflow = 0;
/* No caret by default for Ada. */
- if (!global_options_set.x_flag_diagnostics_show_caret)
+ if (!OPTION_SET_P (flag_diagnostics_show_caret))
global_dc->show_caret = false;
/* Warn only if STABS is not the default: we don't want to emit a warning if
@@ -422,12 +422,12 @@ gnat_init_gcc_eh (void)
flag_delete_dead_exceptions = 1;
if (Suppress_Checks)
{
- if (!global_options_set.x_flag_non_call_exceptions)
+ if (!OPTION_SET_P (flag_non_call_exceptions))
flag_non_call_exceptions = Machine_Overflows_On_Target && GNAT_Mode;
}
else
{
- if (!global_options_set.x_flag_non_call_exceptions)
+ if (!OPTION_SET_P (flag_non_call_exceptions))
flag_non_call_exceptions = 1;
flag_aggressive_loop_optimizations = 0;
warn_aggressive_loop_optimizations = 0;
@@ -445,14 +445,14 @@ gnat_init_gcc_fp (void)
S'Signed_Zeros is true, but don't override the user if not. */
if (Signed_Zeros_On_Target)
flag_signed_zeros = 1;
- else if (!global_options_set.x_flag_signed_zeros)
+ else if (!OPTION_SET_P (flag_signed_zeros))
flag_signed_zeros = 0;
/* Assume that FP operations can trap if S'Machine_Overflow is true,
but don't override the user if not. */
if (Machine_Overflows_On_Target)
flag_trapping_math = 1;
- else if (!global_options_set.x_flag_trapping_math)
+ else if (!OPTION_SET_P (flag_trapping_math))
flag_trapping_math = 0;
}
@@ -831,7 +831,7 @@ c_common_post_options (const char **pfilename)
for -ffp-contract=off). */
if (flag_iso
&& !c_dialect_cxx ()
- && (global_options_set.x_flag_fp_contract_mode
+ && (OPTION_SET_P (flag_fp_contract_mode)
== (enum fp_contract_mode) 0)
&& flag_unsafe_math_optimizations == 0)
flag_fp_contract_mode = FP_CONTRACT_OFF;
@@ -842,7 +842,7 @@ c_common_post_options (const char **pfilename)
the set specified in ISO C99/C11. */
if (!flag_iso
&& !c_dialect_cxx ()
- && (global_options_set.x_flag_permitted_flt_eval_methods
+ && (OPTION_SET_P (flag_permitted_flt_eval_methods)
== PERMITTED_FLT_EVAL_METHODS_DEFAULT))
flag_permitted_flt_eval_methods = PERMITTED_FLT_EVAL_METHODS_TS_18661;
else
@@ -1040,7 +1040,7 @@ c_common_post_options (const char **pfilename)
/* Unless -f{,no-}ext-numeric-literals has been used explicitly,
for -std=c++{11,14,17,20,23} default to -fno-ext-numeric-literals. */
- if (flag_iso && !global_options_set.x_flag_ext_numeric_literals)
+ if (flag_iso && !OPTION_SET_P (flag_ext_numeric_literals))
cpp_opts->ext_numeric_literals = 0;
}
else if (warn_narrowing == -1)
@@ -575,7 +575,7 @@ alpha_option_override (void)
}
/* Default the definition of "small data" to 8 bytes. */
- if (!global_options_set.x_g_switch_value)
+ if (!OPTION_SET_P (g_switch_value))
g_switch_value = 8;
/* Infer TARGET_SMALL_DATA from -fpic/-fPIC. */
@@ -1441,7 +1441,7 @@ arc_override_options (void)
target_flags |= MASK_NO_SDATA_SET;
/* Check for small data option */
- if (!global_options_set.x_g_switch_value && !TARGET_NO_SDATA_SET)
+ if (!OPTION_SET_P (g_switch_value) && !TARGET_NO_SDATA_SET)
g_switch_value = TARGET_LL64 ? 8 : 4;
/* A7 has an issue with delay slots. */
@@ -1455,7 +1455,7 @@ arc_override_options (void)
target_flags &= ~MASK_MILLICODE_THUNK_SET;
/* Set unaligned to all HS cpus. */
- if (!global_options_set.x_unaligned_access && TARGET_HS)
+ if (!OPTION_SET_P (unaligned_access) && TARGET_HS)
unaligned_access = 1;
/* These need to be done at start up. It's convenient to do them here. */
@@ -71,6 +71,7 @@
#include "gimple.h"
#include "selftest.h"
#include "tree-vectorizer.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -3468,7 +3469,7 @@ arm_option_override (void)
arm_active_target.isa = sbitmap_alloc (isa_num_bits);
- if (!global_options_set.x_arm_fpu_index)
+ if (!OPTION_SET_P (arm_fpu_index))
{
bool ok;
int fpu_index;
@@ -3528,7 +3529,7 @@ arm_option_override (void)
flag_schedule_insns = flag_schedule_insns_after_reload = 0;
/* Override the default structure alignment for AAPCS ABI. */
- if (!global_options_set.x_arm_structure_size_boundary)
+ if (!OPTION_SET_P (arm_structure_size_boundary))
{
if (TARGET_AAPCS_BASED)
arm_structure_size_boundary = 8;
@@ -3553,12 +3554,12 @@ arm_option_override (void)
if (TARGET_VXWORKS_RTP)
{
- if (!global_options_set.x_arm_pic_data_is_text_relative)
+ if (!OPTION_SET_P (arm_pic_data_is_text_relative))
arm_pic_data_is_text_relative = 0;
}
else if (flag_pic
&& !arm_pic_data_is_text_relative
- && !(global_options_set.x_target_flags & MASK_SINGLE_PIC_BASE))
+ && !(OPTION_SET_P (target_flags) & MASK_SINGLE_PIC_BASE))
/* When text & data segments don't have a fixed displacement, the
intended use is with a single, read only, pic base register.
Unless the user explicitly requested not to do that, set
@@ -53,6 +53,7 @@
#include "hw-doloop.h"
#include "dumpfile.h"
#include "builtins.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -1046,7 +1047,7 @@ bfin_load_pic_reg (rtx dest)
if (local_info_node && local_info_node->local)
return pic_offset_table_rtx;
- if (global_options_set.x_bfin_library_id)
+ if (OPTION_SET_P (bfin_library_id))
addr = plus_constant (Pmode, pic_offset_table_rtx,
-4 - bfin_library_id * 4);
else
@@ -2369,7 +2370,7 @@ bfin_option_override (void)
#endif
/* Library identification */
- if (global_options_set.x_bfin_library_id && ! TARGET_ID_SHARED_LIBRARY)
+ if (OPTION_SET_P (bfin_library_id) && ! TARGET_ID_SHARED_LIBRARY)
error ("%<-mshared-library-id=%> specified without "
"%<-mid-shared-library%>");
@@ -60,6 +60,7 @@
#include "dumpfile.h"
#include "builtins.h"
#include "flags.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -221,7 +222,7 @@ c6x_option_override (void)
{
unsigned i;
- if (global_options_set.x_c6x_arch_option)
+ if (OPTION_SET_P (c6x_arch_option))
{
c6x_arch = all_isas[c6x_arch_option].type;
c6x_insn_mask &= ~C6X_INSNS_ALL_CPU_BITS;
@@ -67,6 +67,7 @@
#include "pass_manager.h"
#include "tree-pass.h"
#include "context.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -2757,15 +2758,15 @@ csky_option_override (void)
#ifdef ENABLE_TPF_DEBUG
/* Don't emit DWARF4 unless specifically selected. The TPF
debuggers do not yet support DWARF 3/4. */
- if (!global_options_set.x_dwarf_strict)
+ if (!OPTION_SET_P (dwarf_strict))
dwarf_strict = 1;
- if (!global_options_set.x_dwarf_version)
+ if (!OPTION_SET_P (dwarf_version))
dwarf_version = 3;
#endif
/* Don't run the scheduler before reload by default,
since it tends to increase register pressure. */
- if (!global_options_set.x_flag_schedule_insns)
+ if (!OPTION_SET_P (flag_schedule_insns))
flag_schedule_insns = 0;
csky_add_gc_roots ();
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. If not see
#include "intl.h"
#include "optabs.h"
#include "flags.h"
+#include "opts.h"
/* Fix and Continue.
@@ -3282,7 +3283,7 @@ darwin_override_options (void)
}
/* Unless set, force ABI=2 for NeXT and m64, 0 otherwise. */
- if (!global_options_set.x_flag_objc_abi)
+ if (!OPTION_SET_P (flag_objc_abi))
global_options.x_flag_objc_abi
= (!flag_next_runtime)
? 0
@@ -3290,7 +3291,7 @@ darwin_override_options (void)
: (generating_for_darwin_version >= 9) ? 1
: 0);
- if (global_options_set.x_flag_objc_abi && flag_next_runtime)
+ if (OPTION_SET_P (flag_objc_abi) && flag_next_runtime)
{
if (TARGET_64BIT && global_options.x_flag_objc_abi != 2)
/* The Objective-C family ABI 2 is the only valid version NeXT/m64. */
@@ -3307,23 +3308,23 @@ darwin_override_options (void)
/* Don't emit DWARF3/4 unless specifically selected. This is a
workaround for tool bugs. */
- if (!global_options_set.x_dwarf_strict)
+ if (!OPTION_SET_P (dwarf_strict))
dwarf_strict = 1;
- if (!global_options_set.x_dwarf_version)
+ if (!OPTION_SET_P (dwarf_version))
dwarf_version = 2;
- if (global_options_set.x_dwarf_split_debug_info)
+ if (OPTION_SET_P (dwarf_split_debug_info))
{
inform (input_location,
"%<-gsplit-dwarf%> is not supported on this platform, ignored");
dwarf_split_debug_info = 0;
- global_options_set.x_dwarf_split_debug_info = 0;
+ OPTION_SET_P (dwarf_split_debug_info) = 0;
}
/* Do not allow unwind tables to be generated by default for m32.
fnon-call-exceptions will override this, regardless of what we do. */
if (generating_for_darwin_version < 10
- && !global_options_set.x_flag_asynchronous_unwind_tables
+ && !OPTION_SET_P (flag_asynchronous_unwind_tables)
&& !TARGET_64BIT)
global_options.x_flag_asynchronous_unwind_tables = 0;
@@ -3334,15 +3335,15 @@ darwin_override_options (void)
will be generated". If the User specifically sets flags... we assume
(s)he knows why... */
if (generating_for_darwin_version < 9
- && global_options_set.x_flag_reorder_blocks_and_partition
+ && OPTION_SET_P (flag_reorder_blocks_and_partition)
&& ((global_options.x_flag_exceptions /* User, c++, java */
- && !global_options_set.x_flag_exceptions) /* User specified... */
+ && !OPTION_SET_P (flag_exceptions)) /* User specified... */
|| (global_options.x_flag_unwind_tables
- && !global_options_set.x_flag_unwind_tables)
+ && !OPTION_SET_P (flag_unwind_tables))
|| (global_options.x_flag_non_call_exceptions
- && !global_options_set.x_flag_non_call_exceptions)
+ && !OPTION_SET_P (flag_non_call_exceptions))
|| (global_options.x_flag_asynchronous_unwind_tables
- && !global_options_set.x_flag_asynchronous_unwind_tables)))
+ && !OPTION_SET_P (flag_asynchronous_unwind_tables))))
{
inform (input_location,
"%<-freorder-blocks-and-partition%> does not work with "
@@ -3353,12 +3354,12 @@ darwin_override_options (void)
/* FIXME: flag_objc_sjlj_exceptions is no longer needed since there is only
one valid choice of exception scheme for each runtime. */
- if (!global_options_set.x_flag_objc_sjlj_exceptions)
+ if (!OPTION_SET_P (flag_objc_sjlj_exceptions))
global_options.x_flag_objc_sjlj_exceptions =
flag_next_runtime && !TARGET_64BIT;
/* FIXME: and this could be eliminated then too. */
- if (!global_options_set.x_flag_exceptions
+ if (!OPTION_SET_P (flag_exceptions)
&& flag_objc_exceptions
&& TARGET_64BIT)
flag_exceptions = 1;
@@ -3414,7 +3415,7 @@ darwin_override_options (void)
Linkers that don't need stubs, don't need the EH symbol markers either.
*/
- if (!global_options_set.x_darwin_symbol_stubs)
+ if (!OPTION_SET_P (darwin_symbol_stubs))
{
if (darwin_target_linker)
{
@@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see
#include "ifcvt.h"
#include "rtl-iter.h"
#include "calls.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -664,7 +665,7 @@ frv_option_override (void)
if (!flag_pic) /* -fPIC */
flag_pic = 2;
- if (!global_options_set.x_g_switch_value) /* -G0 */
+ if (!OPTION_SET_P (g_switch_value)) /* -G0 */
{
g_switch_value = 0;
}
@@ -757,7 +758,7 @@ frv_option_override (void)
}
/* Check for small data option */
- if (!global_options_set.x_g_switch_value && !TARGET_LIBPIC)
+ if (!OPTION_SET_P (g_switch_value) && !TARGET_LIBPIC)
g_switch_value = SDATA_DEFAULT_SIZE;
/* There is no single unaligned SI op for PIC code. Sometimes we
@@ -147,7 +147,7 @@ along with GCC; see the file COPYING3. If not see
\
/* Don't emit DWARF3/4 unless specifically selected. */ \
/* DWARF3/4 currently does not work for DJGPP. */ \
- if (!global_options_set.x_dwarf_version) \
+ if (!OPTION_SET_P (dwarf_version)) \
dwarf_version = 2; \
\
} \
@@ -22280,7 +22280,7 @@ ix86_stack_protect_guard (void)
tree type = build_qualified_type (type_node, qual);
tree t;
- if (global_options_set.x_ix86_stack_protector_guard_symbol_str)
+ if (OPTION_SET_P (ix86_stack_protector_guard_symbol_str))
{
t = ix86_tls_stack_chk_guard_decl;
@@ -22794,12 +22794,12 @@ ix86_max_noce_ifcvt_seq_cost (edge e)
bool predictable_p = predictable_edge_p (e);
if (predictable_p)
{
- if (global_options_set.x_param_max_rtl_if_conversion_predictable_cost)
+ if (OPTION_SET_P (param_max_rtl_if_conversion_predictable_cost))
return param_max_rtl_if_conversion_predictable_cost;
}
else
{
- if (global_options_set.x_param_max_rtl_if_conversion_unpredictable_cost)
+ if (OPTION_SET_P (param_max_rtl_if_conversion_unpredictable_cost))
return param_max_rtl_if_conversion_unpredictable_cost;
}
@@ -6098,7 +6098,7 @@ ia64_option_override (void)
flag_ira_loop_pressure = 1;
- ia64_section_threshold = (global_options_set.x_g_switch_value
+ ia64_section_threshold = (OPTION_SET_P (g_switch_value)
? g_switch_value
: IA64_DEFAULT_GVALUE);
@@ -6120,8 +6120,8 @@ static void
ia64_override_options_after_change (void)
{
if (optimize >= 3
- && !global_options_set.x_flag_selective_scheduling
- && !global_options_set.x_flag_selective_scheduling2)
+ && !OPTION_SET_P (flag_selective_scheduling)
+ && !OPTION_SET_P (flag_selective_scheduling2))
{
flag_selective_scheduling2 = 1;
flag_sel_sched_pipelining = 1;
@@ -48,6 +48,7 @@
#include "expr.h"
#include "tm-constrs.h"
#include "builtins.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -412,7 +413,7 @@ static void
m32c_option_override (void)
{
/* We limit memregs to 0..16, and provide a default. */
- if (global_options_set.x_target_memregs)
+ if (OPTION_SET_P (target_memregs))
{
if (target_memregs < 0 || target_memregs > 16)
error ("invalid target memregs value %<%d%>", target_memregs);
@@ -45,6 +45,7 @@
#include "expr.h"
#include "tm-constrs.h"
#include "builtins.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -244,7 +245,7 @@ m32r_init (void)
m32r_punct_chars['@'] = 1; /* ??? no longer used */
/* Provide default value if not specified. */
- if (!global_options_set.x_g_switch_value)
+ if (!OPTION_SET_P (g_switch_value))
g_switch_value = SDATA_DEFAULT_SIZE;
}
@@ -500,13 +500,13 @@ m68k_option_override (void)
const struct m68k_target_selection *entry;
unsigned long target_mask;
- if (global_options_set.x_m68k_arch_option)
+ if (OPTION_SET_P (m68k_arch_option))
m68k_arch_entry = &all_isas[m68k_arch_option];
- if (global_options_set.x_m68k_cpu_option)
+ if (OPTION_SET_P (m68k_cpu_option))
m68k_cpu_entry = &all_devices[(int) m68k_cpu_option];
- if (global_options_set.x_m68k_tune_option)
+ if (OPTION_SET_P (m68k_tune_option))
m68k_tune_entry = &all_microarchs[(int) m68k_tune_option];
/* User can choose:
@@ -51,6 +51,7 @@
#include "cfgloop.h"
#include "insn-addr.h"
#include "cfgrtl.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -1741,7 +1742,7 @@ microblaze_option_override (void)
machine_mode mode;
int ver;
- microblaze_section_threshold = (global_options_set.x_g_switch_value
+ microblaze_section_threshold = (OPTION_SET_P (g_switch_value)
? g_switch_value
: MICROBLAZE_DEFAULT_GVALUE);
@@ -66,6 +66,7 @@ along with GCC; see the file COPYING3. If not see
#include "builtins.h"
#include "rtl-iter.h"
#include "flags.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -19883,7 +19884,7 @@ mips_option_override (void)
{
int i, start, regno, mode;
- if (global_options_set.x_mips_isa_option)
+ if (OPTION_SET_P (mips_isa_option))
mips_isa_option_info = &mips_cpu_info_table[mips_isa_option];
#ifdef SUBTARGET_OVERRIDE_OPTIONS
@@ -19915,7 +19916,7 @@ mips_option_override (void)
TARGET_INTERLINK_COMPRESSED = 1;
/* Set the small data limit. */
- mips_small_data_threshold = (global_options_set.x_g_switch_value
+ mips_small_data_threshold = (OPTION_SET_P (g_switch_value)
? g_switch_value
: MIPS_DEFAULT_GVALUE);
@@ -19923,7 +19924,7 @@ mips_option_override (void)
Similar code was added to GAS 2.14 (see tc-mips.c:md_after_parse_args()).
The GAS and GCC code should be kept in sync as much as possible. */
- if (global_options_set.x_mips_arch_option)
+ if (OPTION_SET_P (mips_arch_option))
mips_set_architecture (mips_cpu_info_from_opt (mips_arch_option));
if (mips_isa_option_info != 0)
@@ -19945,7 +19946,7 @@ mips_option_override (void)
mips_arch_info->name);
/* Optimize for mips_arch, unless -mtune selects a different processor. */
- if (global_options_set.x_mips_tune_option)
+ if (OPTION_SET_P (mips_tune_option))
mips_set_tune (mips_cpu_info_from_opt (mips_tune_option));
if (mips_tune_info == 0)
@@ -52,6 +52,7 @@
#include "builtins.h"
#include "tree-pass.h"
#include "xregex.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -1363,7 +1364,7 @@ nios2_option_override (void)
init_machine_status = &nios2_init_machine_status;
nios2_section_threshold
- = (global_options_set.x_g_switch_value
+ = (OPTION_SET_P (g_switch_value)
? g_switch_value : NIOS2_DEFAULT_GVALUE);
if (nios2_gpopt_option == gpopt_unspecified)
@@ -215,7 +215,7 @@ nvptx_option_override (void)
/* Set toplevel_reorder, unless explicitly disabled. We need
reordering so that we emit necessary assembler decls of
undeclared variables. */
- if (!global_options_set.x_flag_toplevel_reorder)
+ if (!OPTION_SET_P (flag_toplevel_reorder))
flag_toplevel_reorder = 1;
debug_nonbind_markers_p = 0;
@@ -223,7 +223,7 @@ nvptx_option_override (void)
/* Set flag_no_common, unless explicitly disabled. We fake common
using .weak, and that's not entirely accurate, so avoid it
unless forced. */
- if (!global_options_set.x_flag_no_common)
+ if (!OPTION_SET_P (flag_no_common))
flag_no_common = 1;
/* The patch area requires nops, which we don't have. */
@@ -545,9 +545,9 @@ pa_option_override (void)
{
/* DWARF5 is not supported by gdb. Don't emit DWARF5 unless
specifically selected. */
- if (!global_options_set.x_dwarf_strict)
+ if (!OPTION_SET_P (dwarf_strict))
dwarf_strict = 1;
- if (!global_options_set.x_dwarf_version)
+ if (!OPTION_SET_P (dwarf_version))
dwarf_version = 4;
}
@@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. If not see
#include "builtins.h"
#include "predict.h"
#include "tree-pass.h"
+#include "opts.h"
/* True if X is an UNSPEC wrapper around a SYMBOL_REF or LABEL_REF. */
#define UNSPEC_ADDRESS_P(X) \
@@ -4839,7 +4840,7 @@ riscv_option_override (void)
#endif
if (riscv_stack_protector_guard == SSP_GLOBAL
- && global_options_set.x_riscv_stack_protector_guard_offset_str)
+ && OPTION_SET_P (riscv_stack_protector_guard_offset_str))
{
error ("incompatible options %<-mstack-protector-guard=global%> and "
"%<-mstack-protector-guard-offset=%s%>",
@@ -4847,15 +4848,15 @@ riscv_option_override (void)
}
if (riscv_stack_protector_guard == SSP_TLS
- && !(global_options_set.x_riscv_stack_protector_guard_offset_str
- && global_options_set.x_riscv_stack_protector_guard_reg_str))
+ && !(OPTION_SET_P (riscv_stack_protector_guard_offset_str)
+ && OPTION_SET_P (riscv_stack_protector_guard_reg_str)))
{
error ("both %<-mstack-protector-guard-offset%> and "
"%<-mstack-protector-guard-reg%> must be used "
"with %<-mstack-protector-guard=sysreg%>");
}
- if (global_options_set.x_riscv_stack_protector_guard_reg_str)
+ if (OPTION_SET_P (riscv_stack_protector_guard_reg_str))
{
const char *str = riscv_stack_protector_guard_reg_str;
int reg = decode_reg_name (str);
@@ -4867,7 +4868,7 @@ riscv_option_override (void)
riscv_stack_protector_guard_reg = reg;
}
- if (global_options_set.x_riscv_stack_protector_guard_offset_str)
+ if (OPTION_SET_P (riscv_stack_protector_guard_offset_str))
{
char *end;
const char *str = riscv_stack_protector_guard_offset_str;
@@ -33,7 +33,7 @@ do { \
if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
{ \
rs6000_long_double_type_size = 64; \
- if (global_options_set.x_rs6000_long_double_type_size) \
+ if (OPTION_SET_P (rs6000_long_double_type_size)) \
warning (0, "soft-float and long-double-128 are incompatible"); \
} \
if (TARGET_POWERPC64 && ! TARGET_64BIT) \
@@ -43,7 +43,7 @@ do { \
if ((rs6000_isa_flags_explicit \
& OPTION_MASK_MINIMAL_TOC) != 0) \
{ \
- if (global_options_set.x_rs6000_current_cmodel \
+ if (OPTION_SET_P (rs6000_current_cmodel) \
&& rs6000_current_cmodel != CMODEL_SMALL) \
error ("%<-mcmodel%> incompatible with other toc options"); \
SET_CMODEL (CMODEL_SMALL); \
@@ -63,7 +63,7 @@ do { \
/* aix/ppc doesn't support -mvsx and -maltivec with Go */ \
rs6000_isa_flags &= ~(OPTION_MASK_VSX | OPTION_MASK_ALTIVEC); \
} \
- if (!global_options_set.x_dwarf_version) \
+ if (!OPTION_SET_P (dwarf_version)) \
/* AIX only supports DWARF 4. */ \
dwarf_version = 4; \
} while (0)
@@ -33,7 +33,7 @@ do { \
if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
{ \
rs6000_long_double_type_size = 64; \
- if (global_options_set.x_rs6000_long_double_type_size) \
+ if (OPTION_SET_P (rs6000_long_double_type_size)) \
warning (0, "soft-float and long-double-128 are incompatible"); \
} \
if (TARGET_POWERPC64 && ! TARGET_64BIT) \
@@ -43,7 +43,7 @@ do { \
if ((rs6000_isa_flags_explicit \
& OPTION_MASK_MINIMAL_TOC) != 0) \
{ \
- if (global_options_set.x_rs6000_current_cmodel \
+ if (OPTION_SET_P (rs6000_current_cmodel) \
&& rs6000_current_cmodel != CMODEL_SMALL) \
error ("%<-mcmodel%> incompatible with other toc options"); \
SET_CMODEL (CMODEL_SMALL); \
@@ -63,7 +63,7 @@ do { \
/* aix/ppc doesn't support -mvsx and -maltivec with Go */ \
rs6000_isa_flags &= ~(OPTION_MASK_VSX | OPTION_MASK_ALTIVEC); \
} \
- if (!global_options_set.x_dwarf_version) \
+ if (!OPTION_SET_P (dwarf_version)) \
/* AIX only supports DWARF 4. */ \
dwarf_version = 4; \
} while (0)
@@ -33,7 +33,7 @@ do { \
if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128) \
{ \
rs6000_long_double_type_size = 64; \
- if (global_options_set.x_rs6000_long_double_type_size) \
+ if (OPTION_SET_P (rs6000_long_double_type_size)) \
warning (0, "soft-float and long-double-128 are incompatible"); \
} \
if (TARGET_POWERPC64 && ! TARGET_64BIT) \
@@ -43,7 +43,7 @@ do { \
if ((rs6000_isa_flags_explicit \
& OPTION_MASK_MINIMAL_TOC) != 0) \
{ \
- if (global_options_set.x_rs6000_current_cmodel \
+ if (OPTION_SET_P (rs6000_current_cmodel) \
&& rs6000_current_cmodel != CMODEL_SMALL) \
error ("%<-mcmodel%> incompatible with other toc options"); \
SET_CMODEL (CMODEL_SMALL); \
@@ -63,7 +63,7 @@ do { \
/* aix/ppc doesn't support -mvsx and -maltivec with Go */ \
rs6000_isa_flags &= ~(OPTION_MASK_VSX | OPTION_MASK_ALTIVEC); \
} \
- if (!global_options_set.x_dwarf_version) \
+ if (!OPTION_SET_P (dwarf_version)) \
/* AIX only supports DWARF 4. */ \
dwarf_version = 4; \
} while (0)
@@ -3392,7 +3392,7 @@ darwin_rs6000_override_options (void)
&& !flag_apple_kext
&& strverscmp (darwin_macosx_version_min, "10.5") >= 0
&& ! (rs6000_isa_flags_explicit & OPTION_MASK_ALTIVEC)
- && ! global_options_set.x_rs6000_cpu_index)
+ && ! OPTION_SET_P (rs6000_cpu_index))
{
rs6000_isa_flags |= OPTION_MASK_ALTIVEC;
}
@@ -3471,18 +3471,18 @@ rs6000_override_options_after_change (void)
{
/* Explicit -funroll-loops turns -munroll-only-small-loops off, and
turns -frename-registers on. */
- if ((global_options_set.x_flag_unroll_loops && flag_unroll_loops)
- || (global_options_set.x_flag_unroll_all_loops
+ if ((OPTION_SET_P (flag_unroll_loops) && flag_unroll_loops)
+ || (OPTION_SET_P (flag_unroll_all_loops)
&& flag_unroll_all_loops))
{
- if (!global_options_set.x_unroll_only_small_loops)
+ if (!OPTION_SET_P (unroll_only_small_loops))
unroll_only_small_loops = 0;
- if (!global_options_set.x_flag_rename_registers)
+ if (!OPTION_SET_P (flag_rename_registers))
flag_rename_registers = 1;
- if (!global_options_set.x_flag_cunroll_grow_size)
+ if (!OPTION_SET_P (flag_cunroll_grow_size))
flag_cunroll_grow_size = 1;
}
- else if (!global_options_set.x_flag_cunroll_grow_size)
+ else if (!OPTION_SET_P (flag_cunroll_grow_size))
flag_cunroll_grow_size = flag_peel_loops || optimize >= 3;
}
@@ -3490,7 +3490,7 @@ rs6000_override_options_after_change (void)
static void
rs6000_linux64_override_options ()
{
- if (!global_options_set.x_rs6000_alignment_flags)
+ if (!OPTION_SET_P (rs6000_alignment_flags))
rs6000_alignment_flags = MASK_ALIGN_NATURAL;
if (rs6000_isa_flags & OPTION_MASK_64BIT)
{
@@ -3526,11 +3526,11 @@ rs6000_linux64_override_options ()
rs6000_isa_flags |= OPTION_MASK_POWERPC64;
error ("%<-m64%> requires a PowerPC64 cpu");
}
- if (!global_options_set.x_rs6000_current_cmodel)
+ if (!OPTION_SET_P (rs6000_current_cmodel))
SET_CMODEL (CMODEL_MEDIUM);
if ((rs6000_isa_flags_explicit & OPTION_MASK_MINIMAL_TOC) != 0)
{
- if (global_options_set.x_rs6000_current_cmodel
+ if (OPTION_SET_P (rs6000_current_cmodel)
&& rs6000_current_cmodel != CMODEL_SMALL)
error ("%<-mcmodel incompatible with other toc options%>");
if (TARGET_MINIMAL_TOC)
@@ -3545,14 +3545,14 @@ rs6000_linux64_override_options ()
}
if (rs6000_current_cmodel != CMODEL_SMALL)
{
- if (!global_options_set.x_TARGET_NO_FP_IN_TOC)
+ if (!OPTION_SET_P (TARGET_NO_FP_IN_TOC))
TARGET_NO_FP_IN_TOC = rs6000_current_cmodel == CMODEL_MEDIUM;
- if (!global_options_set.x_TARGET_NO_SUM_IN_TOC)
+ if (!OPTION_SET_P (TARGET_NO_SUM_IN_TOC))
TARGET_NO_SUM_IN_TOC = 0;
}
if (TARGET_PLTSEQ && DEFAULT_ABI != ABI_ELFv2)
{
- if (global_options_set.x_rs6000_pltseq)
+ if (OPTION_SET_P (rs6000_pltseq))
warning (0, "%qs unsupported for this ABI",
"-mpltseq");
rs6000_pltseq = false;
@@ -3567,7 +3567,7 @@ rs6000_linux64_override_options ()
profile_kernel = 0;
error (INVALID_32BIT, "profile-kernel");
}
- if (global_options_set.x_rs6000_current_cmodel)
+ if (OPTION_SET_P (rs6000_current_cmodel))
{
SET_CMODEL (CMODEL_SMALL);
error (INVALID_32BIT, "cmodel");
@@ -3627,7 +3627,7 @@ glibc_supports_ieee_128bit (void)
includes OPTION_TARGET_CPU_DEFAULT, representing the name of the
default CPU specified at build configure time, TARGET_DEFAULT,
representing the default set of option flags for the default
- target, and global_options_set.x_rs6000_isa_flags, representing
+ target, and OPTION_SET_P (rs6000_isa_flags), representing
which options were requested on the command line.
Upon return from this function:
@@ -3676,13 +3676,13 @@ rs6000_option_override_internal (bool global_init_p)
/* Remember the explicit arguments. */
if (global_init_p)
- rs6000_isa_flags_explicit = global_options_set.x_rs6000_isa_flags;
+ rs6000_isa_flags_explicit = OPTION_SET_P (rs6000_isa_flags);
/* On 64-bit Darwin, power alignment is ABI-incompatible with some C
library functions, so warn about it. The flag may be useful for
performance studies from time to time though, so don't disable it
entirely. */
- if (global_options_set.x_rs6000_alignment_flags
+ if (OPTION_SET_P (rs6000_alignment_flags)
&& rs6000_alignment_flags == MASK_ALIGN_POWER
&& DEFAULT_ABI == ABI_DARWIN
&& TARGET_64BIT)
@@ -3695,20 +3695,20 @@ rs6000_option_override_internal (bool global_init_p)
with enough (>= 32) registers. It is an expensive optimization.
So it is on only for peak performance. */
if (optimize >= 3 && global_init_p
- && !global_options_set.x_flag_ira_loop_pressure)
+ && !OPTION_SET_P (flag_ira_loop_pressure))
flag_ira_loop_pressure = 1;
/* -fsanitize=address needs to turn on -fasynchronous-unwind-tables in order
for tracebacks to be complete but not if any -fasynchronous-unwind-tables
options were already specified. */
if (flag_sanitize & SANITIZE_USER_ADDRESS
- && !global_options_set.x_flag_asynchronous_unwind_tables)
+ && !OPTION_SET_P (flag_asynchronous_unwind_tables))
flag_asynchronous_unwind_tables = 1;
/* -fvariable-expansion-in-unroller is a win for POWER whenever the
loop unroller is active. It is only checked during unrolling, so
we can just set it on by default. */
- if (!global_options_set.x_flag_variable_expansion_in_unroller)
+ if (!OPTION_SET_P (flag_variable_expansion_in_unroller))
flag_variable_expansion_in_unroller = 1;
/* Set the pointer size. */
@@ -3905,7 +3905,7 @@ rs6000_option_override_internal (bool global_init_p)
#ifdef XCOFF_DEBUGGING_INFO
/* For AIX default to 64-bit DWARF. */
- if (!global_options_set.x_dwarf_offset_size)
+ if (!OPTION_SET_P (dwarf_offset_size))
dwarf_offset_size = POINTER_SIZE_UNITS;
#endif
@@ -4129,7 +4129,7 @@ rs6000_option_override_internal (bool global_init_p)
else if (TARGET_ALLOW_MOVMISALIGN && !TARGET_VSX)
{
if (TARGET_ALLOW_MOVMISALIGN > 0
- && global_options_set.x_TARGET_ALLOW_MOVMISALIGN)
+ && OPTION_SET_P (TARGET_ALLOW_MOVMISALIGN))
error ("%qs requires %qs", "-mallow-movmisalign", "-mvsx");
TARGET_ALLOW_MOVMISALIGN = 0;
@@ -4184,7 +4184,7 @@ rs6000_option_override_internal (bool global_init_p)
: FLOAT_PRECISION_TFmode);
/* Set long double size before the IEEE 128-bit tests. */
- if (!global_options_set.x_rs6000_long_double_type_size)
+ if (!OPTION_SET_P (rs6000_long_double_type_size))
{
if (main_target_opt != NULL
&& (main_target_opt->x_rs6000_long_double_type_size
@@ -4197,7 +4197,7 @@ rs6000_option_override_internal (bool global_init_p)
; /* The option value can be seen when cl_target_option_restore is called. */
else if (rs6000_long_double_type_size == 128)
rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
- else if (global_options_set.x_rs6000_ieeequad)
+ else if (OPTION_SET_P (rs6000_ieeequad))
{
if (global_options.x_rs6000_ieeequad)
error ("%qs requires %qs", "-mabi=ieeelongdouble", "-mlong-double-128");
@@ -4210,7 +4210,7 @@ rs6000_option_override_internal (bool global_init_p)
explicitly redefine TARGET_IEEEQUAD and TARGET_IEEEQUAD_DEFAULT to 0, so
those systems will not pick up this default. Warn if the user changes the
default unless -Wno-psabi. */
- if (!global_options_set.x_rs6000_ieeequad)
+ if (!OPTION_SET_P (rs6000_ieeequad))
rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
else
@@ -4395,7 +4395,7 @@ rs6000_option_override_internal (bool global_init_p)
/* Enable Altivec ABI for AIX -maltivec. */
if (TARGET_XCOFF
&& (TARGET_ALTIVEC || TARGET_VSX)
- && !global_options_set.x_rs6000_altivec_abi)
+ && !OPTION_SET_P (rs6000_altivec_abi))
{
if (main_target_opt != NULL && !main_target_opt->x_rs6000_altivec_abi)
error ("target attribute or pragma changes AltiVec ABI");
@@ -4408,7 +4408,7 @@ rs6000_option_override_internal (bool global_init_p)
be explicitly overridden in either case. */
if (TARGET_ELF)
{
- if (!global_options_set.x_rs6000_altivec_abi
+ if (!OPTION_SET_P (rs6000_altivec_abi)
&& (TARGET_64BIT || TARGET_ALTIVEC || TARGET_VSX))
{
if (main_target_opt != NULL &&
@@ -4438,7 +4438,7 @@ rs6000_option_override_internal (bool global_init_p)
/* Place FP constants in the constant pool instead of TOC
if section anchors enabled. */
if (flag_section_anchors
- && !global_options_set.x_TARGET_NO_FP_IN_TOC)
+ && !OPTION_SET_P (TARGET_NO_FP_IN_TOC))
TARGET_NO_FP_IN_TOC = 1;
if (TARGET_DEBUG_REG || TARGET_DEBUG_TARGET)
@@ -4595,7 +4595,7 @@ rs6000_option_override_internal (bool global_init_p)
}
/* Handle stack protector */
- if (!global_options_set.x_rs6000_stack_protector_guard)
+ if (!OPTION_SET_P (rs6000_stack_protector_guard))
#ifdef TARGET_THREAD_SSP_OFFSET
rs6000_stack_protector_guard = SSP_TLS;
#else
@@ -4607,7 +4607,7 @@ rs6000_option_override_internal (bool global_init_p)
rs6000_stack_protector_guard_reg = TARGET_64BIT ? 13 : 2;
#endif
- if (global_options_set.x_rs6000_stack_protector_guard_offset_str)
+ if (OPTION_SET_P (rs6000_stack_protector_guard_offset_str))
{
char *endp;
const char *str = rs6000_stack_protector_guard_offset_str;
@@ -4626,7 +4626,7 @@ rs6000_option_override_internal (bool global_init_p)
rs6000_stack_protector_guard_offset = offset;
}
- if (global_options_set.x_rs6000_stack_protector_guard_reg_str)
+ if (OPTION_SET_P (rs6000_stack_protector_guard_reg_str))
{
const char *str = rs6000_stack_protector_guard_reg_str;
int reg = decode_reg_name (str);
@@ -4654,7 +4654,7 @@ rs6000_option_override_internal (bool global_init_p)
/* Set aix_struct_return last, after the ABI is determined.
If -maix-struct-return or -msvr4-struct-return was explicitly
used, don't override with the ABI default. */
- if (!global_options_set.x_aix_struct_return)
+ if (!OPTION_SET_P (aix_struct_return))
aix_struct_return = (DEFAULT_ABI != ABI_V4 || DRAFT_V4_STRUCT_RET);
#if 0
@@ -6272,14 +6272,14 @@ rs6000_file_start (void)
start = "";
}
- if (global_options_set.x_rs6000_cpu_index)
+ if (OPTION_SET_P (rs6000_cpu_index))
{
fprintf (file, "%s -mcpu=%s", start,
processor_target_table[rs6000_cpu_index].name);
start = "";
}
- if (global_options_set.x_rs6000_tune_index)
+ if (OPTION_SET_P (rs6000_tune_index))
{
fprintf (file, "%s -mtune=%s", start,
processor_target_table[rs6000_tune_index].name);
@@ -21053,7 +21053,7 @@ rs6000_darwin_file_start (void)
if (rs6000_default_cpu != 0 && rs6000_default_cpu[0] != '\0')
cpu_id = rs6000_default_cpu;
- if (global_options_set.x_rs6000_cpu_index)
+ if (OPTION_SET_P (rs6000_cpu_index))
cpu_id = processor_target_table[rs6000_cpu_index].name;
/* Look through the mapping array. Pick the first name that either
@@ -116,14 +116,14 @@
if ((rs6000_isa_flags_explicit \
& OPTION_MASK_MINIMAL_TOC) != 0) \
{ \
- if (global_options_set.x_rs6000_current_cmodel \
+ if (OPTION_SET_P (rs6000_current_cmodel) \
&& rs6000_current_cmodel != CMODEL_SMALL) \
error ("%<-mcmodel%> incompatible with other toc options"); \
SET_CMODEL (CMODEL_SMALL); \
} \
else \
{ \
- if (!global_options_set.x_rs6000_current_cmodel) \
+ if (!OPTION_SET_P (rs6000_current_cmodel)) \
SET_CMODEL (CMODEL_MEDIUM); \
if (rs6000_current_cmodel != CMODEL_SMALL) \
{ \
@@ -70,7 +70,7 @@
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
- if (!global_options_set.x_g_switch_value) \
+ if (!OPTION_SET_P (g_switch_value)) \
g_switch_value = SDATA_DEFAULT_SIZE; \
\
if (rs6000_abi_name == NULL) \
@@ -197,16 +197,16 @@ do { \
} \
\
if (TARGET_PLTSEQ != rs6000_pltseq \
- && global_options_set.x_rs6000_pltseq) \
+ && OPTION_SET_P (rs6000_pltseq)) \
{ \
error ("%qs not supported by your assembler", "-mpltseq"); \
} \
\
if (DEFAULT_ABI == ABI_V4 && TARGET_PLTSEQ && !TARGET_SECURE_PLT) \
{ \
- if (global_options_set.x_rs6000_pltseq) \
+ if (OPTION_SET_P (rs6000_pltseq)) \
{ \
- if (global_options_set.x_secure_plt) \
+ if (OPTION_SET_P (secure_plt)) \
error ("%qs and %qs are incompatible", \
"-mpltseq", "-mbss-plt"); \
else \
@@ -155,7 +155,7 @@ along with GCC; see the file COPYING3. If not see
#undef SUB3TARGET_OVERRIDE_OPTIONS
#define SUB3TARGET_OVERRIDE_OPTIONS \
do { \
- if (!global_options_set.x_g_switch_value) \
+ if (!OPTION_SET_P (g_switch_value)) \
g_switch_value = SDATA_DEFAULT_SIZE; \
VXWORKS_OVERRIDE_OPTIONS; \
} while (0)
@@ -15746,9 +15746,9 @@ s390_option_override (void)
{
/* Don't emit DWARF3/4 unless specifically selected. The TPF
debuggers do not yet support DWARF 3/4. */
- if (!global_options_set.x_dwarf_strict)
+ if (!OPTION_SET_P (dwarf_strict))
dwarf_strict = 1;
- if (!global_options_set.x_dwarf_version)
+ if (!OPTION_SET_P (dwarf_version))
dwarf_version = 2;
}
}
@@ -126,7 +126,7 @@ along with GCC; see the file COPYING3. If not see
do \
{ \
/* Set default atomic model if it hasn't been specified. */ \
- if (global_options_set.x_sh_atomic_model_str == 0) \
+ if (OPTION_SET_P (sh_atomic_model_str) == 0) \
{ \
if (TARGET_SH3) \
sh_atomic_model_str = "soft-gusa"; \
@@ -134,7 +134,7 @@ along with GCC; see the file COPYING3. If not see
sh_atomic_model_str = "soft-imask"; \
} \
/* Set -musermode if it hasn't been specified. */ \
- if (global_options_set.x_TARGET_USERMODE == 0) \
+ if (OPTION_SET_P (TARGET_USERMODE) == 0) \
TARGET_USERMODE = true; \
} \
while (0)
@@ -85,7 +85,7 @@ while (0)
do \
{ \
/* Set -musermode if it hasn't been specified. */ \
- if (global_options_set.x_TARGET_USERMODE == 0) \
+ if (OPTION_SET_P (TARGET_USERMODE) == 0) \
TARGET_USERMODE = true; \
} \
while (0)
@@ -893,7 +893,7 @@ sh_option_override (void)
}
/* Set -mzdcbranch for SH4 / SH4A if not otherwise specified by the user. */
- if (! global_options_set.x_TARGET_ZDCBRANCH && TARGET_HARD_SH4)
+ if (! OPTION_SET_P (TARGET_ZDCBRANCH) && TARGET_HARD_SH4)
TARGET_ZDCBRANCH = 1;
/* FDPIC code is a special form of PIC, and the vast majority of code
@@ -932,13 +932,13 @@ sh_option_override (void)
<http://gcc.gnu.org/ml/gcc-patches/2005-10/msg00816.html>. */
else if (flag_exceptions)
{
- if (flag_schedule_insns && global_options_set.x_flag_schedule_insns)
+ if (flag_schedule_insns && OPTION_SET_P (flag_schedule_insns))
warning (0, "ignoring %<-fschedule-insns%> because of exception "
"handling bug");
flag_schedule_insns = 0;
}
else if (flag_schedule_insns
- && !global_options_set.x_flag_schedule_insns)
+ && !OPTION_SET_P (flag_schedule_insns))
flag_schedule_insns = 0;
}
@@ -958,12 +958,12 @@ sh_option_override (void)
if (flag_unsafe_math_optimizations)
{
/* Enable fsca insn for SH4A if not otherwise specified by the user. */
- if (global_options_set.x_TARGET_FSCA == 0
+ if (OPTION_SET_P (TARGET_FSCA) == 0
&& (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
TARGET_FSCA = 1;
/* Enable fsrra insn for SH4A if not otherwise specified by the user. */
- if (global_options_set.x_TARGET_FSRRA == 0
+ if (OPTION_SET_P (TARGET_FSRRA) == 0
&& (TARGET_SH4A_FP || TARGET_FPU_SH4_300))
TARGET_FSRRA = 1;
}
@@ -976,7 +976,7 @@ sh_option_override (void)
/* If the -mieee option was not explicitly set by the user, turn it on
unless -ffinite-math-only was specified. See also PR 33135. */
- if (! global_options_set.x_TARGET_IEEE)
+ if (! OPTION_SET_P (TARGET_IEEE))
TARGET_IEEE = ! flag_finite_math_only;
if (sh_fixed_range_str)
@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "varasm.h"
#include "output.h"
+#include "opts.h"
tree solaris_pending_aligns, solaris_pending_inits, solaris_pending_finis;
@@ -296,6 +297,6 @@ solaris_override_options (void)
{
/* Older versions of Solaris ld cannot handle CIE version 3 in .eh_frame.
Don't emit DWARF3/4 unless specifically selected if so. */
- if (!HAVE_LD_EH_FRAME_CIEV3 && !global_options_set.x_dwarf_version)
+ if (!HAVE_LD_EH_FRAME_CIEV3 && !OPTION_SET_P (dwarf_version))
dwarf_version = 2;
}
@@ -1859,7 +1859,7 @@ sparc_option_override (void)
}
/* Set the default CPU if no -mcpu option was specified. */
- if (!global_options_set.x_sparc_cpu_and_features)
+ if (!OPTION_SET_P (sparc_cpu_and_features))
{
for (def = &cpu_default[0]; def->cpu != -1; ++def)
if (def->cpu == TARGET_CPU_DEFAULT)
@@ -1869,7 +1869,7 @@ sparc_option_override (void)
}
/* Set the default CPU if no -mtune option was specified. */
- if (!global_options_set.x_sparc_cpu)
+ if (!OPTION_SET_P (sparc_cpu))
sparc_cpu = sparc_cpu_and_features;
cpu = &cpu_table[(int) sparc_cpu_and_features];
@@ -1975,7 +1975,7 @@ sparc_option_override (void)
dump_target_flags ("Final target_flags", target_flags);
/* Set the code model if no -mcmodel option was specified. */
- if (global_options_set.x_sparc_code_model)
+ if (OPTION_SET_P (sparc_code_model))
{
if (TARGET_ARCH32)
error ("%<-mcmodel=%> is not supported in 32-bit mode");
@@ -1989,7 +1989,7 @@ sparc_option_override (void)
}
/* Set the memory model if no -mmemory-model option was specified. */
- if (!global_options_set.x_sparc_memory_model)
+ if (!OPTION_SET_P (sparc_memory_model))
{
/* Choose the memory model for the operating system. */
enum sparc_memory_model_type os_default = SUBTARGET_DEFAULT_MEMORY_MODEL;
@@ -2177,12 +2177,12 @@ sparc_option_override (void)
/* Disable save slot sharing for call-clobbered registers by default.
The IRA sharing algorithm works on single registers only and this
pessimizes for double floating-point registers. */
- if (!global_options_set.x_flag_ira_share_save_slots)
+ if (!OPTION_SET_P (flag_ira_share_save_slots))
flag_ira_share_save_slots = 0;
/* Only enable REE by default in 64-bit mode where it helps to eliminate
redundant 32-to-64-bit extensions. */
- if (!global_options_set.x_flag_ree && TARGET_ARCH32)
+ if (!OPTION_SET_P (flag_ree) && TARGET_ARCH32)
flag_ree = 0;
/* Do various machine dependent initializations. */
@@ -56,6 +56,7 @@
#include "tilegx-builtins.h"
#include "tilegx-multiply.h"
#include "builtins.h"
+#include "opts.h"
/* This file should be included last. */
#include "target-def.h"
@@ -76,7 +77,7 @@ static bool output_memory_autoinc_first;
static void
tilegx_option_override (void)
{
- if (global_options_set.x_tilegx_cmodel)
+ if (OPTION_SET_P (tilegx_cmodel))
{
switch (tilegx_cmodel)
{
@@ -443,7 +443,7 @@ visium_option_override (void)
}
/* Set -mtune from -mcpu if not specified. */
- if (!global_options_set.x_visium_cpu)
+ if (!OPTION_SET_P (visium_cpu))
visium_cpu = visium_cpu_and_features;
/* Align functions on 256-byte (32-quadword) for GR5 and 64-byte (8-quadword)
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see
#include "rtl.h"
#include "memmodel.h"
#include "optabs.h"
+#include "opts.h"
#if !HAVE_INITFINI_ARRAY_SUPPORT
/* Like default_named_section_asm_out_constructor, except that even
@@ -167,10 +168,10 @@ vxworks_override_options (void)
dwarf up to certain version. Default dwarf control to friendly
values for these. */
- if (!global_options_set.x_dwarf_strict)
+ if (!OPTION_SET_P (dwarf_strict))
dwarf_strict = 1;
- if (!global_options_set.x_dwarf_version)
+ if (!OPTION_SET_P (dwarf_version))
dwarf_version = VXWORKS_DWARF_VERSION_DEFAULT;
}
@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3. If not see
#include "fold-const-call.h"
#include "stor-layout.h"
#include "cgraph.h"
+#include "opts.h"
static bool verify_constant (tree, bool, bool *, bool *);
#define VERIFY_CONSTANT(X) \
@@ -6107,7 +6108,7 @@ maybe_warn_about_constant_value (location_t loc, tree decl)
static bool explained = false;
if (cxx_dialect >= cxx17
&& warn_interference_size
- && !global_options_set.x_param_destruct_interfere_size
+ && !OPTION_SET_P (param_destruct_interfere_size)
&& DECL_CONTEXT (decl) == std_node
&& id_equal (DECL_NAME (decl), "hardware_destructive_interference_size")
&& (LOCATION_FILE (input_location) != main_input_filename
@@ -56,6 +56,7 @@ along with GCC; see the file COPYING3. If not see
#include "context.h" /* For 'g'. */
#include "omp-general.h"
#include "omp-offload.h" /* For offload_vars. */
+#include "opts.h"
/* Possible cases of bad specifiers type used by bad_specifiers. */
enum bad_spec_place {
@@ -3228,7 +3229,7 @@ redeclaration_error_message (tree newdecl, tree olddecl)
{
DECL_EXTERNAL (newdecl) = 1;
/* For now, only warn with explicit -Wdeprecated. */
- if (global_options_set.x_warn_deprecated)
+ if (OPTION_SET_P (warn_deprecated))
{
auto_diagnostic_group d;
if (warning_at (DECL_SOURCE_LOCATION (newdecl), OPT_Wdeprecated,
@@ -4756,7 +4757,7 @@ cxx_init_decl_processing (void)
/* Check that the hardware interference sizes are at least
alignof(max_align_t), as required by the standard. */
const int max_align = max_align_t_align () / BITS_PER_UNIT;
- if (global_options_set.x_param_destruct_interfere_size)
+ if (OPTION_SET_P (param_destruct_interfere_size))
{
if (param_destruct_interfere_size < max_align)
error ("%<--param destructive-interference-size=%d%> is less than "
@@ -4773,7 +4774,7 @@ cxx_init_decl_processing (void)
param_destruct_interfere_size = param_l1_cache_line_size;
/* else leave it unset. */
- if (global_options_set.x_param_construct_interfere_size)
+ if (OPTION_SET_P (param_construct_interfere_size))
{
if (param_construct_interfere_size < max_align)
error ("%<--param constructive-interference-size=%d%> is less than "
@@ -792,13 +792,13 @@ d_post_options (const char ** fn)
if (global.params.betterC)
{
- if (!global_options_set.x_flag_moduleinfo)
+ if (!OPTION_SET_P (flag_moduleinfo))
global.params.useModuleInfo = false;
- if (!global_options_set.x_flag_rtti)
+ if (!OPTION_SET_P (flag_rtti))
global.params.useTypeInfo = false;
- if (!global_options_set.x_flag_exceptions)
+ if (!OPTION_SET_P (flag_exceptions))
global.params.useExceptions = false;
global.params.checkAction = CHECKACTION_C;
@@ -810,7 +810,7 @@ d_post_options (const char ** fn)
/* Turn off partitioning unless it was explicitly requested, as it doesn't
work with D exception chaining, where EH handler uses LSDA to determine
whether two thrown exception are in the same context. */
- if (!global_options_set.x_flag_reorder_blocks_and_partition)
+ if (!OPTION_SET_P (flag_reorder_blocks_and_partition))
global_options.x_flag_reorder_blocks_and_partition = 0;
/* Error about use of deprecated features. */
@@ -819,7 +819,7 @@ d_post_options (const char ** fn)
global.params.useDeprecated = DIAGNOSTICerror;
/* Make -fmax-errors visible to frontend's diagnostic machinery. */
- if (global_options_set.x_flag_max_errors)
+ if (OPTION_SET_P (flag_max_errors))
global.params.errorLimit = flag_max_errors;
if (flag_excess_precision == EXCESS_PRECISION_DEFAULT)
@@ -260,7 +260,7 @@ gfc_post_options (const char **pfilename)
If not enabled explicitly by the user, only warn for -I
and -J, otherwise warn for all include paths. */
verbose_missing_dir_warn
- = (global_options_set.x_cpp_warn_missing_include_dirs
+ = (OPTION_SET_P (cpp_warn_missing_include_dirs)
&& global_options.x_cpp_warn_missing_include_dirs);
SET_OPTION_IF_UNSET (&global_options, &global_options_set,
cpp_warn_missing_include_dirs, 1);
@@ -309,7 +309,7 @@ gfc_post_options (const char **pfilename)
flag_dump_fortran_original = 0;
/* Make -fmax-errors visible to gfortran's diagnostic machinery. */
- if (global_options_set.x_flag_max_errors)
+ if (OPTION_SET_P (flag_max_errors))
gfc_option.max_errors = flag_max_errors;
/* Verify the input file name. */
@@ -388,7 +388,7 @@ gfc_post_options (const char **pfilename)
/* Enable -Werror=line-truncation when -Werror and -Wno-error have
not been set. */
- if (warn_line_truncation && !global_options_set.x_warnings_are_errors
+ if (warn_line_truncation && !OPTION_SET_P (warnings_are_errors)
&& (global_dc->classify_diagnostic[OPT_Wline_truncation] ==
DK_UNSPECIFIED))
diagnostic_classify_diagnostic (global_dc, OPT_Wline_truncation,
@@ -70,17 +70,17 @@ lto_write_options (void)
obstack_init (&temporary_obstack);
- if (!global_options_set.x_flag_openmp
+ if (!OPTION_SET_P (flag_openmp)
&& !global_options.x_flag_openmp)
append_to_collect_gcc_options (&temporary_obstack, &first_p,
"-fno-openmp");
- if (!global_options_set.x_flag_openacc
+ if (!OPTION_SET_P (flag_openacc)
&& !global_options.x_flag_openacc)
append_to_collect_gcc_options (&temporary_obstack, &first_p,
"-fno-openacc");
/* Append PIC/PIE mode because its default depends on target and it is
subject of merging in lto-wrapper. */
- if (!global_options_set.x_flag_pic && !global_options_set.x_flag_pie)
+ if (!OPTION_SET_P (flag_pic) && !OPTION_SET_P (flag_pie))
{
append_to_collect_gcc_options (&temporary_obstack, &first_p,
global_options.x_flag_pic == 2
@@ -94,7 +94,7 @@ lto_write_options (void)
: "-fno-pie");
}
- if (!global_options_set.x_flag_cf_protection)
+ if (!OPTION_SET_P (flag_cf_protection))
{
append_to_collect_gcc_options (
&temporary_obstack, &first_p,
@@ -259,7 +259,7 @@ static void next_runtime_01_initialize (void)
#ifdef OBJCPLUS
/* For all NeXT objc ABIs -fobjc-call-cxx-cdtors is on by
default. */
- if (!global_options_set.x_flag_objc_call_cxx_cdtors)
+ if (!OPTION_SET_P (flag_objc_call_cxx_cdtors))
global_options.x_flag_objc_call_cxx_cdtors = 1;
#endif
@@ -255,7 +255,7 @@ objc_next_runtime_abi_02_init (objc_runtime_hooks *rthooks)
}
/* NeXT ABI 2 is intended to default to checking for nil receivers. */
- if (! global_options_set.x_flag_objc_nilcheck)
+ if (! OPTION_SET_P (flag_objc_nilcheck))
flag_objc_nilcheck = 1;
rthooks->initialize = next_runtime_02_initialize;
@@ -366,7 +366,7 @@ static void next_runtime_02_initialize (void)
#ifdef OBJCPLUS
/* For all NeXT objc ABIs -fobjc-call-cxx-cdtors is on by
default. */
- if (!global_options_set.x_flag_objc_call_cxx_cdtors)
+ if (!OPTION_SET_P (flag_objc_call_cxx_cdtors))
global_options.x_flag_objc_call_cxx_cdtors = 1;
#endif
@@ -59,6 +59,7 @@ along with GCC; see the file COPYING3. If not see
#include "stringpool.h"
#include "attribs.h"
#include "tree-eh.h"
+#include "opts.h"
/* OMP region information. Every parallel and workshare
directive is enclosed between two markers, the OMP_* directive
@@ -6960,7 +6961,7 @@ expand_omp_simd (struct omp_region *region, struct omp_for_data *fd)
/* If not -fno-tree-loop-vectorize, hint that we want to vectorize
the loop. */
if ((flag_tree_loop_vectorize
- || !global_options_set.x_flag_tree_loop_vectorize)
+ || !OPTION_SET_P (flag_tree_loop_vectorize))
&& flag_tree_loop_optimize
&& loop->safelen > 1)
{
@@ -44,6 +44,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-iterator.h"
#include "data-streamer.h"
#include "streamer-hooks.h"
+#include "opts.h"
enum omp_requires omp_requires_mask;
@@ -952,7 +953,7 @@ omp_max_vf (void)
|| optimize_debug
|| !flag_tree_loop_optimize
|| (!flag_tree_loop_vectorize
- && global_options_set.x_flag_tree_loop_vectorize))
+ && OPTION_SET_P (flag_tree_loop_vectorize)))
return 1;
auto_vector_modes modes;
@@ -54,6 +54,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "context.h"
#include "convert.h"
+#include "opts.h"
/* Describe the OpenACC looping structure of a function. The entire
function is held in a 'NULL' loop. */
@@ -633,7 +634,7 @@ oacc_xform_loop (gcall *call)
/* If not -fno-tree-loop-vectorize, hint that we want to vectorize
the loop. */
&& (flag_tree_loop_vectorize
- || !global_options_set.x_flag_tree_loop_vectorize))
+ || !OPTION_SET_P (flag_tree_loop_vectorize)))
{
basic_block bb = gsi_bb (gsi);
class loop *parent = bb->loop_father;
@@ -500,4 +500,8 @@ extern char *gen_producer_string (const char *language_string,
} \
while (false)
+/* Return true if OPTION is set by user in global options. */
+
+#define OPTION_SET_P(OPTION) global_options_set.x_ ## OPTION
+
#endif
@@ -2453,12 +2453,12 @@ default_max_noce_ifcvt_seq_cost (edge e)
if (predictable_p)
{
- if (global_options_set.x_param_max_rtl_if_conversion_predictable_cost)
+ if (OPTION_SET_P (param_max_rtl_if_conversion_predictable_cost))
return param_max_rtl_if_conversion_predictable_cost;
}
else
{
- if (global_options_set.x_param_max_rtl_if_conversion_unpredictable_cost)
+ if (OPTION_SET_P (param_max_rtl_if_conversion_unpredictable_cost))
return param_max_rtl_if_conversion_unpredictable_cost;
}
@@ -1751,7 +1751,7 @@ process_options (bool no_backend)
/* Enable -Werror=coverage-mismatch when -Werror and -Wno-error
have not been set. */
- if (!global_options_set.x_warnings_are_errors)
+ if (!OPTION_SET_P (warnings_are_errors))
{
if (warn_coverage_mismatch
&& (global_dc->classify_diagnostic[OPT_Wcoverage_mismatch] ==
@@ -233,6 +233,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-scalar-evolution.h"
#include "tree-affine.h"
#include "builtins.h"
+#include "opts.h"
/* The maximum number of iterations between the considered memory
references. */
@@ -3492,7 +3493,7 @@ public:
only if predictive commoning isn't set explicitly, and it
doesn't allow unrolling. */
if (flag_tree_loop_vectorize
- && !global_options_set.x_flag_predictive_commoning)
+ && !OPTION_SET_P (flag_predictive_commoning))
return true;
return false;
@@ -99,7 +99,7 @@ along with GCC; see the file COPYING3. If not see
#include "dbgcnt.h"
#include "builtins.h"
#include "tree-sra.h"
-
+#include "opts.h"
/* Enumeration of all aggregate reductions we can do. */
enum sra_mode { SRA_MODE_EARLY_IPA, /* early call regularization */
@@ -3427,12 +3427,12 @@ analyze_all_variable_accesses (void)
if (optimize_speed_p)
{
- if (global_options_set.x_param_sra_max_scalarization_size_speed)
+ if (OPTION_SET_P (param_sra_max_scalarization_size_speed))
max_scalarization_size = param_sra_max_scalarization_size_speed;
}
else
{
- if (global_options_set.x_param_sra_max_scalarization_size_size)
+ if (OPTION_SET_P (param_sra_max_scalarization_size_size))
max_scalarization_size = param_sra_max_scalarization_size_size;
}
max_scalarization_size *= BITS_PER_UNIT;