The second field of an option record can specify any of the following properties. When an option takes an argument, it is enclosed in parentheses following the option property name. The parser that handles option files is quite simplistic, and will be tricked by any nested parentheses within the argument text itself; in this case, the entire option argument can be wrapped in curly braces within the parentheses to demarcate it, e.g.:
It is possible to specify several different languages for the same
option. Each language must have been declared by an earlier
Language record. See Option file format.
Negativeproperty of the option to be turned off.
Joinedindicates that the option and argument can be included in the same
argventry (as with
-mflush-func=name, for example).
Separateindicates that the option and argument can be separate
argventries (as with
-o). An option is allowed to have both of these properties.
argventry as the option itself.
This property cannot be used alongside
Separate, the message message will be used as an error message if the mandatory argument is missing; for options without
MissingArgError, a generic error message is used. message should contain a single `%qs' format, which will be used to format the name of the option passed.
Separate, indicate that it takes n arguments. The default is 1.
UIntegershould also be used on options like
-falign-loops=n are supported to make sure the saved options are given a full integer.
Separate, the option only takes an argument in the compiler proper, not in the driver. This is for compatibility with existing options that are used both directly and via -Wp,; new options should not have this property.
global_options.x_var). The way that the state is stored depends on the type of option:
InverseMaskproperties, var is the integer variable that contains the mask.
UIntegerproperty, var is an integer variable that stores the value of the argument.
Enumproperty, var is a variable (type given in the
Typeproperty of the `Enum' record whose
Nameproperty has the same argument as the
Enumproperty of this option) that stores the value of the argument.
Deferproperty, var is a pointer to a
VEC(cl_deferred_option,heap)that stores the option for later processing. (var is declared with type
void *and needs to be cast to
The option-processing script will usually zero-initialize var.
You can modify this behavior using
!set when the “no-” form is used.
var is declared in the same way as for the single-argument form
Varproperty should be statically initialized to value. If more than one option using the same variable specifies
Init, all must specify the same initializer.
target_flagsvariable (see Run-time Target) and is active when that bit is set. You may also specify
Varto select a variable other than
The options-processing script will automatically allocate a unique bit
for the option. If the option is attached to `target_flags',
the script will set the macro
MASK_name to the appropriate
bitmask. It will also declare a
TARGET_name macro that has
the value 1 when the option is active and 0 otherwise. If you use
to attach the option to a different variable, the associated macros are
You can disable automatic bit allocation using
)property. If thisname is given, the options-processing script will declare a
TARGET_thisname macro that is 1 when the option is active and 0 otherwise.
Maskproperty already exists. No
TARGETdefinitions should be added to options.h in response to this option record.
The main purpose of this property is to support synonymous options.
The first option should use `Mask(name)' and the others
should use `Mask(name) MaskExists'.
Var, for later processing.
Aliases should not specify
UInteger. Aliases should normally specify the same languages
as the target of the alias; the flags on the target will be used to
determine any diagnostic for use of an option for the wrong language,
while those on the alias will be used to identify what command-line
text is the option and what text is any argument to that option.
Alias definition is used for an option, driver specs do
not need to handle it and no `OPT_' enumeration value is defined
for it; only the canonical form of the option will be seen in those
Warn. The option will not be seen by specs and no `OPT_' enumeration value is defined for it.
Alias, the option only acts as an alias when passed a separate argument; with a joined argument it acts as a normal option, with an `OPT_' enumeration value. This is for compatibility with the Java -d option and should not be used for new options.
Warn, the target of the alias must not also be marked
Varshould be saved and restored when the optimization level is changed with
cl_target_optionstructure to hold a copy of the option, add the functions
cl_target_option_restoreto save and restore the options.
gcc_optionsstruct to have a field
frontend_set_name, where name is the name of the field holding the value of this option (without the leading
x_). This gives the front end a way to indicate that the value has been set explicitly and should not be changed by the combined option. For example, some front ends use this to prevent -ffast-math and -fno-fast-math from changing the value of -fmath-errno for languages that do not use