diff options
-rw-r--r-- | gcc/doc/options.texi | 23 | ||||
-rw-r--r-- | gcc/opth-gen.awk | 13 |
2 files changed, 28 insertions, 8 deletions
diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi index 1f7c15b..715f0a1 100644 --- a/gcc/doc/options.texi +++ b/gcc/doc/options.texi @@ -404,18 +404,27 @@ You may also specify @code{Var} to select a variable other than The options-processing script will automatically allocate a unique bit for the option. If the option is attached to @samp{target_flags} or @code{Var} which is defined by @code{TargetVariable}, the script will set the macro -@code{MASK_@var{name}} to the appropriate bitmask. It will also declare a -@code{TARGET_@var{name}} macro that has the value 1 when the option is active -and 0 otherwise. If you use @code{Var} to attach the option to a different variable -which is not defined by @code{TargetVariable}, the bitmask macro with be -called @code{OPTION_MASK_@var{name}}. +@code{MASK_@var{name}} to the appropriate bitmask. It will also declare a +@code{TARGET_@var{name}}, @code{TARGET_@var{name}_P} and +@code{TARGET_@var{name}_OPTS_P}: @code{TARGET_@var{name}} macros that has the +value 1 when the option is active and 0 otherwise, @code{TARGET_@var{name}_P} is +similar to @code{TARGET_@var{name}} but take an argument as @samp{target_flags} +or @code{TargetVariable}, and @code{TARGET_@var{name}_OPTS_P} also similar to +@code{TARGET_@var{name}} but take an argument as @code{gcc_options}. +If you use @code{Var} to attach the option to a different variable which is not +defined by @code{TargetVariable}, the bitmask macro with be called +@code{OPTION_MASK_@var{name}}. @item InverseMask(@var{othername}) @itemx InverseMask(@var{othername}, @var{thisname}) The option is the inverse of another option that has the @code{Mask(@var{othername})} property. If @var{thisname} is given, -the options-processing script will declare a @code{TARGET_@var{thisname}} -macro that is 1 when the option is active and 0 otherwise. +the options-processing script will declare @code{TARGET_@var{thisname}}, +@code{TARGET_@var{name}_P} and @code{TARGET_@var{name}_OPTS_P} macros: +@code{TARGET_@var{thisname}} is 1 when the option is active and 0 otherwise, +@code{TARGET_@var{name}_P} is similar to @code{TARGET_@var{name}} but take an +argument as @samp{target_flags}, and and @code{TARGET_@var{name}_OPTS_P} also +similar to @code{TARGET_@var{name}} but take an argument as @code{gcc_options}. @item Enum(@var{name}) The option's argument is a string from the set of strings associated diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk index c4398be..2655157 100644 --- a/gcc/opth-gen.awk +++ b/gcc/opth-gen.awk @@ -439,6 +439,10 @@ for (i = 0; i < n_target_vars; i++) { print "#define TARGET_" other_masks[i "," j] \ " ((" target_vars[i] " & MASK_" other_masks[i "," j] ") != 0)" + print "#define TARGET_" other_masks[i "," j] "_P(" target_vars[i] ")" \ + " (((" target_vars[i] ") & MASK_" other_masks[i "," j] ") != 0)" + print "#define TARGET_" other_masks[i "," j] "_OPTS_P(opts)" \ + " (((opts->x_" target_vars[i] ") & MASK_" other_masks[i "," j] ") != 0)" } } print "" @@ -469,15 +473,22 @@ for (i = 0; i < n_opts; i++) { " ((" vname " & " mask original_name ") != 0)" print "#define TARGET_" name "_P(" vname ")" \ " (((" vname ") & " mask original_name ") != 0)" + print "#define TARGET_" name "_OPTS_P(opts)" \ + " (((opts->x_" vname ") & " mask original_name ") != 0)" print "#define TARGET_EXPLICIT_" name "_P(opts)" \ " ((opts->x_" vname "_explicit & " mask original_name ") != 0)" print "#define SET_TARGET_" name "(opts) opts->x_" vname " |= " mask original_name } } for (i = 0; i < n_extra_masks; i++) { - if (extra_mask_macros[extra_masks[i]] == 0) + if (extra_mask_macros[extra_masks[i]] == 0) { print "#define TARGET_" extra_masks[i] \ " ((target_flags & MASK_" extra_masks[i] ") != 0)" + print "#define TARGET_" extra_masks[i] "_P(target_flags)" \ + " (((target_flags) & " extra_masks[i] ") != 0)" + print "#define TARGET_" extra_masks[i] "_OPTS_P(opts)" \ + " (((opts->x_target_flags) & MASK_" extra_masks[i] ") != 0)" + } } print "" |