Just to complete this discussion, the syntax of the *.opt files is (almost exactly) mapped by the gen-*.awk scripts into flags that are defined in the file gcc/opts.h. This file contains some comments about these flags:
#define CL_PARAMS (1 << 18) /* Fake entry. Used to display --param info with --help. */ #define CL_WARNING (1 << 19) /* Enables an (optional) warning message. */ #define CL_OPTIMIZATION (1 << 20) /* Enables an (optional) optimization. */ #define CL_TARGET (1 << 21) /* Target-specific option. */ #define CL_COMMON (1 << 22) /* Language-independent. */ #define CL_MIN_OPTION_CLASS CL_PARAMS #define CL_MAX_OPTION_CLASS CL_COMMON /* From here on the bits describe attributes of the options. Before this point the bits have described the class of the option. This distinction is important because --help will not list options which only have these higher bits set. */ #define CL_DISABLED (1 << 23) /* Disabled in this configuration. */ #define CL_REPORT (1 << 24) /* Report argument with -fverbose-asm */ #define CL_JOINED (1 << 25) /* If takes joined argument. */ #define CL_SEPARATE (1 << 26) /* If takes a separate argument. */ #define CL_REJECT_NEGATIVE (1 << 27) /* Reject no- form. */ #define CL_MISSING_OK (1 << 28) /* Missing argument OK (joined). */ #define CL_UINTEGER (1 << 29) /* Argument is an integer >=0. */ #define CL_UNDOCUMENTED (1 << 30) /* Do not output with --help. */ Juan Luis, if you really want to contribute in this area, I would suggest to add a sentence to the *.opt files and the scripts pointing to gcc/opts.h and then improve the documentation there to mention the original syntax and how it maps into the flags (although in most cases it is pretty obvious: RejectNegative -> CL_REJECT_NEGATIVE). Nevertheless, this doesn't mean we are not open to suggestions on how to improve the current system. Thanks, Manuel.