mirror of git://gcc.gnu.org/git/gcc.git
re PR c/79677 (Weird handling of -Werror=)
PR c/79677 * opts.h (handle_generated_option): Add GENERATED_P argument. * opts-common.c (handle_option): Adjust function comment. (handle_generated_option): Add GENERATED_P argument, pass it to handle_option. (control_warning_option): Pass false to handle_generated_option GENERATED_P. * opts.c (maybe_default_option): Pass true to handle_generated_option GENERATED_P. * optc-gen.awk: Likewise. ada/ * gcc-interface/misc.c (gnat_handle_option): Pass true to handle_generated_option GENERATED_P. testsuite/ * gcc.dg/pr79677.c: New test. From-SVN: r245728
This commit is contained in:
parent
91f66e78cc
commit
b982244362
|
|
@ -1,3 +1,16 @@
|
||||||
|
2017-02-24 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR c/79677
|
||||||
|
* opts.h (handle_generated_option): Add GENERATED_P argument.
|
||||||
|
* opts-common.c (handle_option): Adjust function comment.
|
||||||
|
(handle_generated_option): Add GENERATED_P argument, pass it to
|
||||||
|
handle_option.
|
||||||
|
(control_warning_option): Pass false to handle_generated_option
|
||||||
|
GENERATED_P.
|
||||||
|
* opts.c (maybe_default_option): Pass true to handle_generated_option
|
||||||
|
GENERATED_P.
|
||||||
|
* optc-gen.awk: Likewise.
|
||||||
|
|
||||||
2017-02-24 Segher Boessenkool <segher@kernel.crashing.org>
|
2017-02-24 Segher Boessenkool <segher@kernel.crashing.org>
|
||||||
|
|
||||||
* config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
|
* config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-02-24 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR c/79677
|
||||||
|
* gcc-interface/misc.c (gnat_handle_option): Pass true to
|
||||||
|
handle_generated_option GENERATED_P.
|
||||||
|
|
||||||
2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
|
2017-02-24 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
* gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper
|
* gcc-interface/decl.c (gnat_to_gnu_field): Do not remove the wrapper
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ gnat_handle_option (size_t scode, const char *arg, int value, int kind,
|
||||||
handle_generated_option (&global_options, &global_options_set,
|
handle_generated_option (&global_options, &global_options_set,
|
||||||
OPT_Wunused, NULL, value,
|
OPT_Wunused, NULL, value,
|
||||||
gnat_option_lang_mask (), kind, loc,
|
gnat_option_lang_mask (), kind, loc,
|
||||||
handlers, global_dc);
|
handlers, true, global_dc);
|
||||||
warn_uninitialized = value;
|
warn_uninitialized = value;
|
||||||
warn_maybe_uninitialized = value;
|
warn_maybe_uninitialized = value;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -444,7 +444,7 @@ for (i = 0; i < n_enabledby; i++) {
|
||||||
print " if (" condition ")"
|
print " if (" condition ")"
|
||||||
print " handle_generated_option (opts, opts_set,"
|
print " handle_generated_option (opts, opts_set,"
|
||||||
print " " opt_enum(thisenable[j]) ", NULL, " value ","
|
print " " opt_enum(thisenable[j]) ", NULL, " value ","
|
||||||
print " lang_mask, kind, loc, handlers, dc);"
|
print " lang_mask, kind, loc, handlers, true, dc);"
|
||||||
} else {
|
} else {
|
||||||
print "#error " thisenable[j] " does not have a Var() flag"
|
print "#error " thisenable[j] " does not have a Var() flag"
|
||||||
}
|
}
|
||||||
|
|
@ -497,7 +497,7 @@ for (i = 0; i < n_langs; i++) {
|
||||||
print " if (!opts_set->x_" opt_var_name ")"
|
print " if (!opts_set->x_" opt_var_name ")"
|
||||||
print " handle_generated_option (opts, opts_set,"
|
print " handle_generated_option (opts, opts_set,"
|
||||||
print " " opt_enum(thisenable_opt) ", NULL, " value ","
|
print " " opt_enum(thisenable_opt) ", NULL, " value ","
|
||||||
print " lang_mask, kind, loc, handlers, dc);"
|
print " lang_mask, kind, loc, handlers, true, dc);"
|
||||||
} else {
|
} else {
|
||||||
print "#error " thisenable_opt " does not have a Var() flag"
|
print "#error " thisenable_opt " does not have a Var() flag"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -959,9 +959,10 @@ keep:
|
||||||
option for options from the source file, UNKNOWN_LOCATION
|
option for options from the source file, UNKNOWN_LOCATION
|
||||||
otherwise. GENERATED_P is true for an option generated as part of
|
otherwise. GENERATED_P is true for an option generated as part of
|
||||||
processing another option or otherwise generated internally, false
|
processing another option or otherwise generated internally, false
|
||||||
for one explicitly passed by the user. Returns false if the switch
|
for one explicitly passed by the user. control_warning_option
|
||||||
was invalid. DC is the diagnostic context for options affecting
|
generated options are considered explicitly passed by the user.
|
||||||
diagnostics state, or NULL. */
|
Returns false if the switch was invalid. DC is the diagnostic
|
||||||
|
context for options affecting diagnostics state, or NULL. */
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
handle_option (struct gcc_options *opts,
|
handle_option (struct gcc_options *opts,
|
||||||
|
|
@ -1005,13 +1006,13 @@ handle_generated_option (struct gcc_options *opts,
|
||||||
size_t opt_index, const char *arg, int value,
|
size_t opt_index, const char *arg, int value,
|
||||||
unsigned int lang_mask, int kind, location_t loc,
|
unsigned int lang_mask, int kind, location_t loc,
|
||||||
const struct cl_option_handlers *handlers,
|
const struct cl_option_handlers *handlers,
|
||||||
diagnostic_context *dc)
|
bool generated_p, diagnostic_context *dc)
|
||||||
{
|
{
|
||||||
struct cl_decoded_option decoded;
|
struct cl_decoded_option decoded;
|
||||||
|
|
||||||
generate_option (opt_index, arg, value, lang_mask, &decoded);
|
generate_option (opt_index, arg, value, lang_mask, &decoded);
|
||||||
return handle_option (opts, opts_set, &decoded, lang_mask, kind, loc,
|
return handle_option (opts, opts_set, &decoded, lang_mask, kind, loc,
|
||||||
handlers, true, dc);
|
handlers, generated_p, dc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fill in *DECODED with an option described by OPT_INDEX, ARG and
|
/* Fill in *DECODED with an option described by OPT_INDEX, ARG and
|
||||||
|
|
@ -1503,7 +1504,7 @@ control_warning_option (unsigned int opt_index, int kind, const char *arg,
|
||||||
|
|
||||||
handle_generated_option (opts, opts_set,
|
handle_generated_option (opts, opts_set,
|
||||||
opt_index, arg, value, lang_mask,
|
opt_index, arg, value, lang_mask,
|
||||||
kind, loc, handlers, dc);
|
kind, loc, handlers, false, dc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -403,13 +403,13 @@ maybe_default_option (struct gcc_options *opts,
|
||||||
handle_generated_option (opts, opts_set, default_opt->opt_index,
|
handle_generated_option (opts, opts_set, default_opt->opt_index,
|
||||||
default_opt->arg, default_opt->value,
|
default_opt->arg, default_opt->value,
|
||||||
lang_mask, DK_UNSPECIFIED, loc,
|
lang_mask, DK_UNSPECIFIED, loc,
|
||||||
handlers, dc);
|
handlers, true, dc);
|
||||||
else if (default_opt->arg == NULL
|
else if (default_opt->arg == NULL
|
||||||
&& !option->cl_reject_negative)
|
&& !option->cl_reject_negative)
|
||||||
handle_generated_option (opts, opts_set, default_opt->opt_index,
|
handle_generated_option (opts, opts_set, default_opt->opt_index,
|
||||||
default_opt->arg, !default_opt->value,
|
default_opt->arg, !default_opt->value,
|
||||||
lang_mask, DK_UNSPECIFIED, loc,
|
lang_mask, DK_UNSPECIFIED, loc,
|
||||||
handlers, dc);
|
handlers, true, dc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* As indicated by the optimization level LEVEL (-Os if SIZE is set,
|
/* As indicated by the optimization level LEVEL (-Os if SIZE is set,
|
||||||
|
|
|
||||||
|
|
@ -353,7 +353,7 @@ bool handle_generated_option (struct gcc_options *opts,
|
||||||
size_t opt_index, const char *arg, int value,
|
size_t opt_index, const char *arg, int value,
|
||||||
unsigned int lang_mask, int kind, location_t loc,
|
unsigned int lang_mask, int kind, location_t loc,
|
||||||
const struct cl_option_handlers *handlers,
|
const struct cl_option_handlers *handlers,
|
||||||
diagnostic_context *dc);
|
bool generated_p, diagnostic_context *dc);
|
||||||
void generate_option (size_t opt_index, const char *arg, int value,
|
void generate_option (size_t opt_index, const char *arg, int value,
|
||||||
unsigned int lang_mask,
|
unsigned int lang_mask,
|
||||||
struct cl_decoded_option *decoded);
|
struct cl_decoded_option *decoded);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2017-02-24 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR c/79677
|
||||||
|
* gcc.dg/pr79677.c: New test.
|
||||||
|
|
||||||
2017-02-24 Matthew Fortune <matthew.fortune@imgtec.com>
|
2017-02-24 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||||
|
|
||||||
* gcc.target/mips/mips-ps-type-2.c (move): Force generation
|
* gcc.target/mips/mips-ps-type-2.c (move): Force generation
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
/* PR c/79677 */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-Wformat -Werror=format-security -Wformat" } */
|
||||||
|
/* { dg-message "some warnings being treated as errors" "" { target *-*-* } 0 } */
|
||||||
|
|
||||||
|
void foo (char *);
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
char s[10] = "%s";
|
||||||
|
foo (s);
|
||||||
|
__builtin_printf (s); /* { dg-error "format not a string literal and no format arguments" } */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue