diff options
author | Martin Sebor <msebor@redhat.com> | 2019-07-24 20:34:03 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2019-07-24 14:34:03 -0600 |
commit | fa5baeedd47e84b36aff8191bfdf86ee03829a4c (patch) | |
tree | 555ecd4cee3204df4576e6ad2ed71999246dd69c /gcc/opts-common.c | |
parent | e34616747028ebeb0be867dc6a23682539bfab60 (diff) | |
download | gcc-fa5baeedd47e84b36aff8191bfdf86ee03829a4c.zip gcc-fa5baeedd47e84b36aff8191bfdf86ee03829a4c.tar.gz gcc-fa5baeedd47e84b36aff8191bfdf86ee03829a4c.tar.bz2 |
PR driver/80545 - option -Wstringop-overflow not recognized by Fortran
gcc/cp/ChangeLog:
PR driver/80545
* decl.c (finish_function): Use lang_mask.
gcc/testsuite/ChangeLog:
PR driver/80545
* gcc.misc-tests/help.exp: Add tests.
* lib/options.exp: Handle C++.
gcc/ChangeLog:
PR driver/80545
* diagnostic.c (diagnostic_classify_diagnostic): Use lang_mask.
(diagnostic_report_diagnostic): Same.
* diagnostic.h (diagnostic_context::option_enabled): Add an argument.
(diagnostic_context::lang_mask): New data member.
* ipa-pure-const.c (suggest_attribute): Use
lang_hooks.option_lang_mask ().
* opts-common.c (option_enabled): Handle new argument.
(get_option_state): Pass an additional argument.
* opts.c (print_filtered_help): Print supported languages for
unsupported options. Adjust printing of current state.
* opts.h (option_enabled): Add argument.
* toplev.c (print_switch_values): Use lang_mask.
(general_init): Set global_dc->lang_mask.
From-SVN: r273771
Diffstat (limited to 'gcc/opts-common.c')
-rw-r--r-- | gcc/opts-common.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/opts-common.c b/gcc/opts-common.c index e3f9c54..e2a315b 100644 --- a/gcc/opts-common.c +++ b/gcc/opts-common.c @@ -1526,9 +1526,15 @@ option_flag_var (int opt_index, struct gcc_options *opts) or -1 if it isn't a simple on-off switch. */ int -option_enabled (int opt_idx, void *opts) +option_enabled (int opt_idx, unsigned lang_mask, void *opts) { const struct cl_option *option = &(cl_options[opt_idx]); + + /* A language-specific option can only be considered enabled when it's + valid for the current language. */ + if (option->flags & CL_LANG_ALL && !(option->flags | lang_mask)) + return 0; + struct gcc_options *optsg = (struct gcc_options *) opts; void *flag_var = option_flag_var (opt_idx, optsg); @@ -1598,7 +1604,7 @@ get_option_state (struct gcc_options *opts, int option, case CLVC_BIT_CLEAR: case CLVC_BIT_SET: - state->ch = option_enabled (option, opts); + state->ch = option_enabled (option, -1, opts); state->data = &state->ch; state->size = 1; break; |