re PR middle-end/48087 (-Wall -Werror adds warnings over and above those generated by -Wall)
PR middle-end/48087 * diagnostic.def (DK_WERROR): New kind. * diagnostic.h (werrorcount): Define. * diagnostic.c (diagnostic_report_diagnostic): For DK_WARNING promoted to DK_ERROR, increment DK_WERROR counter instead of DK_ERROR counter. * toplev.c (toplev_main): Call print_ignored_options even if just werrorcount is non-zero. Exit with FATAL_EXIT_CODE even if just werrorcount is non-zero. * pt.c (convert_nontype_argument): Count werrorcount as warnings. * call.c (build_temp): Likewise. * method.c (synthesize_method): Likewise. * typeck.c (convert_for_initialization): Likewise. From-SVN: r196887
This commit is contained in:
parent
c845cfe1af
commit
37e9911604
10 changed files with 37 additions and 12 deletions
|
@ -1,5 +1,15 @@
|
|||
2013-03-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/48087
|
||||
* diagnostic.def (DK_WERROR): New kind.
|
||||
* diagnostic.h (werrorcount): Define.
|
||||
* diagnostic.c (diagnostic_report_diagnostic): For DK_WARNING
|
||||
promoted to DK_ERROR, increment DK_WERROR counter instead of
|
||||
DK_ERROR counter.
|
||||
* toplev.c (toplev_main): Call print_ignored_options even if
|
||||
just werrorcount is non-zero. Exit with FATAL_EXIT_CODE
|
||||
even if just werrorcount is non-zero.
|
||||
|
||||
PR debug/55608
|
||||
* dwarf2out.c (tree_add_const_value_attribute): Call ggc_free (array)
|
||||
on failure.
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2013-03-21 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/48087
|
||||
* pt.c (convert_nontype_argument): Count werrorcount as warnings.
|
||||
* call.c (build_temp): Likewise.
|
||||
* method.c (synthesize_method): Likewise.
|
||||
* typeck.c (convert_for_initialization): Likewise.
|
||||
|
||||
2013-03-21 Marc Glisse <marc.glisse@inria.fr>
|
||||
|
||||
* call.c (build_conditional_expr_1): Fold VEC_COND_EXPR.
|
||||
|
|
|
@ -5709,12 +5709,12 @@ build_temp (tree expr, tree type, int flags,
|
|||
int savew, savee;
|
||||
vec<tree, va_gc> *args;
|
||||
|
||||
savew = warningcount, savee = errorcount;
|
||||
savew = warningcount + werrorcount, savee = errorcount;
|
||||
args = make_tree_vector_single (expr);
|
||||
expr = build_special_member_call (NULL_TREE, complete_ctor_identifier,
|
||||
&args, type, flags, complain);
|
||||
release_tree_vector (args);
|
||||
if (warningcount > savew)
|
||||
if (warningcount + werrorcount > savew)
|
||||
*diagnostic_kind = DK_WARNING;
|
||||
else if (errorcount > savee)
|
||||
*diagnostic_kind = DK_ERROR;
|
||||
|
|
|
@ -755,7 +755,7 @@ synthesize_method (tree fndecl)
|
|||
tree stmt;
|
||||
location_t save_input_location = input_location;
|
||||
int error_count = errorcount;
|
||||
int warning_count = warningcount;
|
||||
int warning_count = warningcount + werrorcount;
|
||||
|
||||
/* Reset the source location, we might have been previously
|
||||
deferred, and thus have saved where we were first needed. */
|
||||
|
@ -817,7 +817,7 @@ synthesize_method (tree fndecl)
|
|||
|
||||
pop_deferring_access_checks ();
|
||||
|
||||
if (error_count != errorcount || warning_count != warningcount)
|
||||
if (error_count != errorcount || warning_count != warningcount + werrorcount)
|
||||
inform (input_location, "synthesized method %qD first required here ",
|
||||
fndecl);
|
||||
}
|
||||
|
|
|
@ -5601,12 +5601,12 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
|
|||
{
|
||||
if (complain & tf_error)
|
||||
{
|
||||
int errs = errorcount, warns = warningcount;
|
||||
int errs = errorcount, warns = warningcount + werrorcount;
|
||||
if (processing_template_decl
|
||||
&& !require_potential_constant_expression (expr))
|
||||
return NULL_TREE;
|
||||
expr = cxx_constant_value (expr);
|
||||
if (errorcount > errs || warningcount > warns)
|
||||
if (errorcount > errs || warningcount + werrorcount > warns)
|
||||
inform (EXPR_LOC_OR_HERE (expr),
|
||||
"in template argument for type %qT ", type);
|
||||
if (expr == error_mark_node)
|
||||
|
|
|
@ -7977,11 +7977,11 @@ convert_for_initialization (tree exp, tree type, tree rhs, int flags,
|
|||
int savew = 0, savee = 0;
|
||||
|
||||
if (fndecl)
|
||||
savew = warningcount, savee = errorcount;
|
||||
savew = warningcount + werrorcount, savee = errorcount;
|
||||
rhs = initialize_reference (type, rhs, flags, complain);
|
||||
if (fndecl)
|
||||
{
|
||||
if (warningcount > savew)
|
||||
if (warningcount + werrorcount > savew)
|
||||
warning (0, "in passing argument %P of %q+D", parmnum, fndecl);
|
||||
else if (errorcount > savee)
|
||||
error ("in passing argument %P of %q+D", parmnum, fndecl);
|
||||
|
|
|
@ -729,7 +729,10 @@ diagnostic_report_diagnostic (diagnostic_context *context,
|
|||
diagnostic->message.format_spec,
|
||||
diagnostic->message.args_ptr);
|
||||
}
|
||||
++diagnostic_kind_count (context, diagnostic->kind);
|
||||
if (diagnostic->kind == DK_ERROR && orig_diag_kind == DK_WARNING)
|
||||
++diagnostic_kind_count (context, DK_WERROR);
|
||||
else
|
||||
++diagnostic_kind_count (context, diagnostic->kind);
|
||||
|
||||
saved_format_spec = diagnostic->message.format_spec;
|
||||
if (context->show_option_requested)
|
||||
|
|
|
@ -42,4 +42,6 @@ DEFINE_DIAGNOSTIC_KIND (DK_DEBUG, "debug: ")
|
|||
prefix does not matter. */
|
||||
DEFINE_DIAGNOSTIC_KIND (DK_PEDWARN, "pedwarn: ")
|
||||
DEFINE_DIAGNOSTIC_KIND (DK_PERMERROR, "permerror: ")
|
||||
|
||||
/* This one is just for counting DK_WARNING promoted to DK_ERROR
|
||||
due to -Werror and -Werror=warning. */
|
||||
DEFINE_DIAGNOSTIC_KIND (DK_WERROR, "error: ")
|
||||
|
|
|
@ -240,6 +240,8 @@ extern diagnostic_context *global_dc;
|
|||
#define errorcount diagnostic_kind_count (global_dc, DK_ERROR)
|
||||
/* Similarly, but for warnings. */
|
||||
#define warningcount diagnostic_kind_count (global_dc, DK_WARNING)
|
||||
/* Similarly, but for warnings promoted to errors. */
|
||||
#define werrorcount diagnostic_kind_count (global_dc, DK_WERROR)
|
||||
/* Similarly, but for sorrys. */
|
||||
#define sorrycount diagnostic_kind_count (global_dc, DK_SORRY)
|
||||
|
||||
|
|
|
@ -1951,7 +1951,7 @@ toplev_main (int argc, char **argv)
|
|||
if (!exit_after_options)
|
||||
do_compile ();
|
||||
|
||||
if (warningcount || errorcount)
|
||||
if (warningcount || errorcount || werrorcount)
|
||||
print_ignored_options ();
|
||||
diagnostic_finish (global_dc);
|
||||
|
||||
|
@ -1960,7 +1960,7 @@ toplev_main (int argc, char **argv)
|
|||
|
||||
finalize_plugins ();
|
||||
location_adhoc_data_fini (line_table);
|
||||
if (seen_error ())
|
||||
if (seen_error () || werrorcount)
|
||||
return (FATAL_EXIT_CODE);
|
||||
|
||||
return (SUCCESS_EXIT_CODE);
|
||||
|
|
Loading…
Add table
Reference in a new issue