Hi Guys, Last month I submitted a patch to add a new switch to gcc: --print-optimizers. The idea of this switch was that it would only display those switches that controlled optimizations, and that it would show their current status (activated/not activated). Mark Mitchell suggested that it would be better to integrate this feature into the current --help switch, so here is my proposal:
I would like to extend the --help switch so that, optionally, it takes a parameter describing what type of information is required: --help Does exactly the same as before. --help=target Displays target specific switches only. --target-help now becomes an alias for this switch. --help=warnings Displays switches that control warnings. Displays switch status as described below. --help=optimizers Displays switches that control optimizations. Display switch status as described below. --help={tool} Displays the --help output of the specified tool (cpp, cc1, cc1plus, as, collect-ld, ld). --help=pre-processor-symbols Displays all the symbols predefined by the pre-processor. (Not sure if this option will be popular. I like it because I can never remember the magic incantation to get this information emitted into the .i file, and besides I do not want the information in a .i file, I want it listed to stdout). For the --help=warnings and --help=optimizers switch extra information is also displayed about each switch. If the -Q switch has been enabled earlier on the command line, then the descriptive help text for each of the switches is displayed alongside the switch. Otherwise the help text is omitted and instead an indication is given as to whether the switch is currently enabled or disabled. This information is sensitive to the position of the --help=... switch on the command line, so that it is possible for example to use: gcc -O2 --help=optimizers to find out which optimizations are active at -O2, or even: gcc -O3 --help=optimizers > /tmp/O3-opts gcc -O2 --help=optimizers > /tmp/O2-opts diff /tmp/O2-opts /tmp/O3-opts | grep enabled to find out which extra optimizations are enabled by the -O3 switch. This enabled/disabled output will also be in a well defined format, making it machine parsable. This is helpful for another project we are working on - the automatic selection of the most effective optimization options to compile any given particular application. For switches which are not binary in nature, the current state of the switch would be displayed. What do you think ? Cheers Nick