diff options
author | Martin Sebor <msebor@redhat.com> | 2015-10-21 22:24:41 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2015-10-21 16:24:41 -0600 |
commit | a7b2e1845f0c20da4ed6462161f58f706a587d44 (patch) | |
tree | 0e86ee5c584e34b06f641c070503e72ef5231aaf /gcc/opts.c | |
parent | 22d663823adbd7b1a17e0c7b89ab8c489ae6c8f4 (diff) | |
download | gcc-a7b2e1845f0c20da4ed6462161f58f706a587d44.zip gcc-a7b2e1845f0c20da4ed6462161f58f706a587d44.tar.gz gcc-a7b2e1845f0c20da4ed6462161f58f706a587d44.tar.bz2 |
Improve --help output to generate references to option aliases.
gcc/
PR driver/68043
* opts.c (undocumented_msg, use_diagnosed_msg): New globals.
(print_filtered_help): Reference aliased option's name and encourage
readers to use it in preference to the alias if the former is not
documented. Mention when using an option is diagnosed.
* gcc.c (display_help): End each sentence with a period.
* ada/gcc-interface/lang.opt: End each sentence that describes
an option with a period.
* c-family/c.opt: Same.
* common.opt: Same.
* config/aarch64/aarch64.opt: Same.
* config/alpha/alpha.opt: Same.
* config/arc/arc.opt: Same.
* config/arm/arm.opt: Same.
* config/avr/avr.opt: Same.
* config/bfin/bfin.opt: Same.
* config/c6x/c6x.opt: Same.
* config/cr16/cr16.opt: Same.
* config/cris/cris.opt: Same.
* config/cris/linux.opt: Same.
* config/darwin.opt: Same.
* config/epiphany/epiphany.opt: Same.
* config/fr30/fr30.opt: Same.
* config/frv/frv.opt: Same.
* config/ft32/ft32.opt: Same.
* config/g.opt: Same.
* config/h8300/h8300.opt: Same.
* config/i386/cygming.opt: Same.
* config/i386/djgpp.opt: Same.
* config/i386/i386.opt: Same.
* config/i386/interix.opt: Same.
* config/i386/mingw-w64.opt: Same.
* config/i386/mingw.opt: Same.
* config/ia64/ia64.opt: Same.
* config/ia64/ilp32.opt: Same.
* config/iq2000/iq2000.opt: Same.
* config/linux.opt: Same.
* config/lm32/lm32.opt: Same.
* config/lynx.opt: Same.
* config/m32c/m32c.opt: Same.
* config/m32r/m32r.opt: Same.
* config/m68k/ieee.opt: Same.
* config/m68k/m68k.opt: Same.
* config/mcore/mcore.opt: Same.
* config/mep/mep.opt: Same.
* config/microblaze/microblaze.opt: Same.
* config/mips/mips.opt: Same.
* config/mmix/mmix.opt: Same.
* config/mn10300/mn10300.opt: Same.
* config/moxie/moxie.opt: Same.
* config/msp430/msp430.opt: Same.
* config/nios2/elf.opt: Same.
* config/nios2/nios2.opt: Same.
* config/nvptx/nvptx.opt: Same.
* config/pa/pa-hpux.opt: Same.
* config/pa/pa-hpux1010.opt: Same.
* config/pa/pa-hpux1111.opt: Same.
* config/pa/pa-hpux1131.opt: Same.
* config/pa/pa.opt: Same.
* config/pa/pa64-hpux.opt: Same.
* config/pdp11/pdp11.opt: Same.
* config/rl78/rl78.opt: Same.
* config/rs6000/476.opt: Same.
* config/rs6000/aix64.opt: Same.
* config/rs6000/darwin.opt: Same.
* config/rs6000/linux64.opt: Same.
* config/rs6000/rs6000.opt: Same.
* config/rs6000/sysv4.opt: Same.
* config/s390/s390.opt: Same.
* config/s390/tpf.opt: Same.
* config/sh/sh.opt: Same.
* config/sol2.opt: Same.
* config/sparc/long-double-switch.opt: Same.
* config/sparc/sparc.opt: Same.
* config/spu/spu.opt: Same.
* config/stormy16/stormy16.opt: Same.
* config/tilegx/tilegx.opt: Same.
* config/tilepro/tilepro.opt: Same.
* config/v850/v850.opt: Same.
* config/vax/vax.opt: Same.
* config/visium/visium.opt: Same.
* config/vms/vms.opt: Same.
* config/vxworks.opt: Same.
* config/xtensa/xtensa.opt: Same.
* fortran/lang.opt: Same.
testsuite/
PR driver/68043
* gcc.misc-tests/help.exp: Adjust.
* lib/options.exp (check_for_options): Add detail to output.
From-SVN: r229155
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 46 |
1 files changed, 43 insertions, 3 deletions
@@ -181,7 +181,8 @@ base_of_path (const char *path, const char **base_out) } /* What to print when a switch has no documentation. */ -static const char undocumented_msg[] = N_("This switch lacks documentation"); +static const char undocumented_msg[] = N_("This option lacks documentation."); +static const char use_diagnosed_msg[] = N_("Uses of this option are diagnosed."); typedef char *char_p; /* For DEF_VEC_P. */ @@ -1012,7 +1013,7 @@ print_filtered_help (unsigned int include_flags, const char *help; bool found = false; bool displayed = false; - char new_help[128]; + char new_help[256]; if (include_flags == CL_PARAMS) { @@ -1088,9 +1089,48 @@ print_filtered_help (unsigned int include_flags, { if (exclude_flags & CL_UNDOCUMENTED) continue; + help = undocumented_msg; } + if (option->alias_target < N_OPTS + && cl_options [option->alias_target].help) + { + if (help == undocumented_msg) + { + /* For undocumented options that are aliases for other options + that are documented, point the reader to the other option in + preference of the former. */ + snprintf (new_help, sizeof new_help, + _("Same as %s. Use the latter option instead."), + cl_options [option->alias_target].opt_text); + } + else + { + /* For documented options with aliases, mention the aliased + option's name for reference. */ + snprintf (new_help, sizeof new_help, + _("%s Same as %s."), + help, cl_options [option->alias_target].opt_text); + } + + help = new_help; + } + + if (option->warn_message) + { + /* Mention that the use of the option will trigger a warning. */ + if (help == new_help) + snprintf (new_help + strlen (new_help), + sizeof new_help - strlen (new_help), + " %s", _(use_diagnosed_msg)); + else + snprintf (new_help, sizeof new_help, + "%s %s", help, _(use_diagnosed_msg)); + + help = new_help; + } + /* Get the translation. */ help = _(help); @@ -1180,7 +1220,7 @@ print_filtered_help (unsigned int include_flags, options supported by a specific front end. */ for (i = 0; (1U << i) < CL_LANG_ALL; i ++) if ((1U << i) & langs) - printf (_(" None found. Use --help=%s to show *all* the options supported by the %s front-end\n"), + printf (_(" None found. Use --help=%s to show *all* the options supported by the %s front-end.\n"), lang_names[i], lang_names[i]); } |