diff options
author | DJ Delorie <dj@redhat.com> | 2005-06-28 15:33:23 -0400 |
---|---|---|
committer | DJ Delorie <dj@gcc.gnu.org> | 2005-06-28 15:33:23 -0400 |
commit | 3176a0c28f6c38963c5beecdbbd44a91b62fc8eb (patch) | |
tree | 4f329fdddb0353188ddf7618481f6dfb4b14591c /gcc/c-format.c | |
parent | cec471db31969b339e4d6a7782ec398f9ccdbf28 (diff) | |
download | gcc-3176a0c28f6c38963c5beecdbbd44a91b62fc8eb.tar.gz |
c-decl.c (pop_scope): Move warning control into warning call.
* c-decl.c (pop_scope): Move warning control into warning call.
(diagnose_mismatched_decls): Likewise.
(pushdecl): Likewise.
(start_decl): Likewise.
(grokparms): Likewise.
(start_function): Likewise.
(store_parm_decls_newstyle): Likewise.
(store_parm_decls_oldstyle): Likewise.
(finish_function): Likewise.
(declspecs_add_scspec): Likewise.
* c-format.c (decode_format_attr): Likewise.
(maybe_read_dollar_number): Likewise.
(avoid_dollar_number): Likewise.
(finish_dollar_format_checking): Likewise.
(check_format_info): Likewise.
(check_format_info_main): Likewise.
(check_format_types): Likewise.
(format_type_warning): Likewise.
* c-typeck.c (function_types_compatible_p): Likewise.
(build_array_ref): Likewise.
(convert_arguments): Likewise.
(build_c_cast): Likewise.
(store_init_value): Likewise.
(process_init_element): Likewise.
(c_start_case): Likewise.
* stor-layout.c (finalize_record_size): Likewise.
* tree-cfg.c (execute_warn_function_noreturn): Likewise.
* tree-inline.c (expand_call_inline): Likewise.
From-SVN: r101384
Diffstat (limited to 'gcc/c-format.c')
-rw-r--r-- | gcc/c-format.c | 136 |
1 files changed, 75 insertions, 61 deletions
diff --git a/gcc/c-format.c b/gcc/c-format.c index 198363cad20..28eefd95a45 100644 --- a/gcc/c-format.c +++ b/gcc/c-format.c @@ -194,7 +194,7 @@ decode_format_attr (tree args, function_format_info *info, int validated_p) if (info->format_type == format_type_error) { gcc_assert (!validated_p); - warning (0, "%qE is an unrecognized format function type", + warning (OPT_Wformat, "%qE is an unrecognized format function type", format_type_id); return false; } @@ -925,7 +925,7 @@ maybe_read_dollar_number (const char **format, { if (dollar_needed) { - warning (0, "missing $ operand number in format"); + warning (OPT_Wformat, "missing $ operand number in format"); return -1; } else @@ -946,7 +946,7 @@ maybe_read_dollar_number (const char **format, { if (dollar_needed) { - warning (0, "missing $ operand number in format"); + warning (OPT_Wformat, "missing $ operand number in format"); return -1; } else @@ -955,14 +955,14 @@ maybe_read_dollar_number (const char **format, *format = fcp + 1; if (pedantic && !dollar_format_warned) { - warning (0, "%s does not support %%n$ operand number formats", + warning (OPT_Wformat, "%s does not support %%n$ operand number formats", C_STD_NAME (STD_EXT)); dollar_format_warned = 1; } if (overflow_flag || argnum == 0 || (dollar_first_arg_num && argnum > dollar_arguments_count)) { - warning (0, "operand number out of range in format"); + warning (OPT_Wformat, "operand number out of range in format"); return -1; } if (argnum > dollar_max_arg_used) @@ -985,7 +985,7 @@ maybe_read_dollar_number (const char **format, && dollar_arguments_used[argnum - 1] == 1) { dollar_arguments_used[argnum - 1] = 2; - warning (0, "format argument %d used more than once in %s format", + warning (OPT_Wformat, "format argument %d used more than once in %s format", argnum, fki->name); } else @@ -1017,7 +1017,7 @@ avoid_dollar_number (const char *format) format++; if (*format == '$') { - warning (0, "$ operand number used after format without operand number"); + warning (OPT_Wformat, "$ operand number used after format without operand number"); return true; } return false; @@ -1047,7 +1047,8 @@ finish_dollar_format_checking (format_check_results *res, int pointer_gap_ok) || dollar_arguments_pointer_p[i])) found_pointer_gap = true; else - warning (0, "format argument %d unused before used argument %d in $-style format", + warning (OPT_Wformat, + "format argument %d unused before used argument %d in $-style format", i + 1, dollar_max_arg_used); } } @@ -1175,21 +1176,21 @@ check_format_info (function_format_info *info, tree params) If the format is an empty string, this should be counted similarly to the case of extra format arguments. */ if (res.number_extra_args > 0 && res.number_non_literal == 0 - && res.number_other == 0 && warn_format_extra_args) - warning (0, "too many arguments for format"); + && res.number_other == 0) + warning (OPT_Wformat_extra_args, "too many arguments for format"); if (res.number_dollar_extra_args > 0 && res.number_non_literal == 0 - && res.number_other == 0 && warn_format_extra_args) - warning (0, "unused arguments in $-style format"); + && res.number_other == 0) + warning (OPT_Wformat_extra_args, "unused arguments in $-style format"); if (res.number_empty > 0 && res.number_non_literal == 0 - && res.number_other == 0 && warn_format_zero_length) - warning (0, "zero-length %s format string", + && res.number_other == 0) + warning (OPT_Wformat_zero_length, "zero-length %s format string", format_types[info->format_type].name); if (res.number_wide > 0) - warning (0, "format is a wide character string"); + warning (OPT_Wformat, "format is a wide character string"); if (res.number_unterminated > 0) - warning (0, "unterminated format string"); + warning (OPT_Wformat, "unterminated format string"); } /* Callback from check_function_arguments_recurse to check a @@ -1403,7 +1404,7 @@ check_format_info_main (format_check_results *res, if (*format_chars == 0) { if (format_chars - orig_format_chars != format_length) - warning (0, "embedded %<\\0%> in format"); + warning (OPT_Wformat, "embedded %<\\0%> in format"); if (info->first_arg_num != 0 && params != 0 && has_operand_number <= 0) { @@ -1418,7 +1419,7 @@ check_format_info_main (format_check_results *res, continue; if (*format_chars == 0) { - warning (0, "spurious trailing %<%%%> in format"); + warning (OPT_Wformat, "spurious trailing %<%%%> in format"); continue; } if (*format_chars == '%') @@ -1462,7 +1463,7 @@ check_format_info_main (format_check_results *res, *format_chars, NULL); if (strchr (flag_chars, *format_chars) != 0) { - warning (0, "repeated %s in format", _(s->name)); + warning (OPT_Wformat, "repeated %s in format", _(s->name)); } else { @@ -1475,7 +1476,7 @@ check_format_info_main (format_check_results *res, ++format_chars; if (*format_chars == 0) { - warning (0, "missing fill character at end of strfmon format"); + warning (OPT_Wformat, "missing fill character at end of strfmon format"); return; } } @@ -1519,7 +1520,7 @@ check_format_info_main (format_check_results *res, { if (params == 0) { - warning (0, "too few arguments for format"); + warning (OPT_Wformat, "too few arguments for format"); return; } cur_param = TREE_VALUE (params); @@ -1560,7 +1561,7 @@ check_format_info_main (format_check_results *res, } if (found_width && !non_zero_width_char && (fki->flags & (int) FMT_FLAG_ZERO_WIDTH_BAD)) - warning (0, "zero width in %s format", fki->name); + warning (OPT_Wformat, "zero width in %s format", fki->name); if (found_width) { i = strlen (flag_chars); @@ -1578,7 +1579,7 @@ check_format_info_main (format_check_results *res, flag_chars[i++] = fki->left_precision_char; flag_chars[i] = 0; if (!ISDIGIT (*format_chars)) - warning (0, "empty left precision in %s format", fki->name); + warning (OPT_Wformat, "empty left precision in %s format", fki->name); while (ISDIGIT (*format_chars)) ++format_chars; } @@ -1621,7 +1622,7 @@ check_format_info_main (format_check_results *res, { if (params == 0) { - warning (0, "too few arguments for format"); + warning (OPT_Wformat, "too few arguments for format"); return; } cur_param = TREE_VALUE (params); @@ -1651,7 +1652,7 @@ check_format_info_main (format_check_results *res, { if (!(fki->flags & (int) FMT_FLAG_EMPTY_PREC_OK) && !ISDIGIT (*format_chars)) - warning (0, "empty precision in %s format", fki->name); + warning (OPT_Wformat, "empty precision in %s format", fki->name); while (ISDIGIT (*format_chars)) ++format_chars; } @@ -1690,7 +1691,8 @@ check_format_info_main (format_check_results *res, { /* Warn if the length modifier is non-standard. */ if (ADJ_STD (length_chars_std) > C_STD_VER) - warning (0, "%s does not support the %qs %s length modifier", + warning (OPT_Wformat, + "%s does not support the %qs %s length modifier", C_STD_NAME (length_chars_std), length_chars, fki->name); } @@ -1706,7 +1708,7 @@ check_format_info_main (format_check_results *res, { const format_flag_spec *s = get_flag_spec (flag_specs, *format_chars, NULL); - warning (0, "repeated %s in format", _(s->name)); + warning (OPT_Wformat, "repeated %s in format", _(s->name)); } else { @@ -1740,7 +1742,7 @@ check_format_info_main (format_check_results *res, || (!(fki->flags & (int) FMT_FLAG_FANCY_PERCENT_OK) && format_char == '%')) { - warning (0, "conversion lacks type at end of format"); + warning (OPT_Wformat, "conversion lacks type at end of format"); continue; } format_chars++; @@ -1751,17 +1753,17 @@ check_format_info_main (format_check_results *res, if (fci->format_chars == 0) { if (ISGRAPH (format_char)) - warning (0, "unknown conversion type character %qc in format", + warning (OPT_Wformat, "unknown conversion type character %qc in format", format_char); else - warning (0, "unknown conversion type character 0x%x in format", + warning (OPT_Wformat, "unknown conversion type character 0x%x in format", format_char); continue; } if (pedantic) { if (ADJ_STD (fci->std) > C_STD_VER) - warning (0, "%s does not support the %<%%%c%> %s format", + warning (OPT_Wformat, "%s does not support the %<%%%c%> %s format", C_STD_NAME (fci->std), format_char, fki->name); } @@ -1777,7 +1779,7 @@ check_format_info_main (format_check_results *res, continue; if (strchr (fci->flag_chars, flag_chars[i]) == 0) { - warning (0, "%s used with %<%%%c%> %s format", + warning (OPT_Wformat, "%s used with %<%%%c%> %s format", _(s->name), format_char, fki->name); d++; continue; @@ -1786,7 +1788,7 @@ check_format_info_main (format_check_results *res, { const format_flag_spec *t; if (ADJ_STD (s->std) > C_STD_VER) - warning (0, "%s does not support %s", + warning (OPT_Wformat, "%s does not support %s", C_STD_NAME (s->std), _(s->long_name)); t = get_flag_spec (flag_specs, flag_chars[i], fci->flags2); if (t != NULL && ADJ_STD (t->std) > ADJ_STD (s->std)) @@ -1795,7 +1797,8 @@ check_format_info_main (format_check_results *res, ? t->long_name : s->long_name); if (ADJ_STD (t->std) > C_STD_VER) - warning (0, "%s does not support %s with the %<%%%c%> %s format", + warning (OPT_Wformat, + "%s does not support %s with the %<%%%c%> %s format", C_STD_NAME (t->std), _(long_name), format_char, fki->name); } @@ -1828,21 +1831,23 @@ check_format_info_main (format_check_results *res, if (bad_flag_pairs[i].ignored) { if (bad_flag_pairs[i].predicate != 0) - warning (0, "%s ignored with %s and %<%%%c%> %s format", + warning (OPT_Wformat, + "%s ignored with %s and %<%%%c%> %s format", _(s->name), _(t->name), format_char, fki->name); else - warning (0, "%s ignored with %s in %s format", + warning (OPT_Wformat, "%s ignored with %s in %s format", _(s->name), _(t->name), fki->name); } else { if (bad_flag_pairs[i].predicate != 0) - warning (0, "use of %s and %s together with %<%%%c%> %s format", + warning (OPT_Wformat, + "use of %s and %s together with %<%%%c%> %s format", _(s->name), _(t->name), format_char, fki->name); else - warning (0, "use of %s and %s together in %s format", + warning (OPT_Wformat, "use of %s and %s together in %s format", _(s->name), _(t->name), fki->name); } } @@ -1861,10 +1866,11 @@ check_format_info_main (format_check_results *res, else if (strchr (fci->flags2, '2') != 0) y2k_level = 2; if (y2k_level == 3) - warning (0, "%<%%%c%> yields only last 2 digits of year in some locales", - format_char); + warning (OPT_Wformat_y2k, "%<%%%c%> yields only last 2 digits of " + "year in some locales", format_char); else if (y2k_level == 2) - warning (0, "%<%%%c%> yields only last 2 digits of year", format_char); + warning (OPT_Wformat_y2k, "%<%%%c%> yields only last 2 digits of " + "year", format_char); } if (strchr (fci->flags2, '[') != 0) @@ -1880,7 +1886,7 @@ check_format_info_main (format_check_results *res, ++format_chars; if (*format_chars != ']') /* The end of the format string was reached. */ - warning (0, "no closing %<]%> for %<%%[%> format"); + warning (OPT_Wformat, "no closing %<]%> for %<%%[%> format"); } wanted_type = 0; @@ -1893,14 +1899,15 @@ check_format_info_main (format_check_results *res, wanted_type_std = fci->types[length_chars_val].std; if (wanted_type == 0) { - warning (0, "use of %qs length modifier with %qc type character", + warning (OPT_Wformat, + "use of %qs length modifier with %qc type character", length_chars, format_char); /* Heuristic: skip one argument when an invalid length/type combination is encountered. */ arg_num++; if (params == 0) { - warning (0, "too few arguments for format"); + warning (OPT_Wformat, "too few arguments for format"); return; } params = TREE_CHAIN (params); @@ -1914,7 +1921,8 @@ check_format_info_main (format_check_results *res, && ADJ_STD (wanted_type_std) > ADJ_STD (fci->std)) { if (ADJ_STD (wanted_type_std) > C_STD_VER) - warning (0, "%s does not support the %<%%%s%c%> %s format", + warning (OPT_Wformat, + "%s does not support the %<%%%s%c%> %s format", C_STD_NAME (wanted_type_std), length_chars, format_char, fki->name); } @@ -1931,9 +1939,11 @@ check_format_info_main (format_check_results *res, if (main_arg_num != 0) { if (suppressed) - warning (0, "operand number specified with suppressed assignment"); + warning (OPT_Wformat, "operand number specified with " + "suppressed assignment"); else - warning (0, "operand number specified for format taking no argument"); + warning (OPT_Wformat, "operand number specified for format " + "taking no argument"); } } else @@ -1950,7 +1960,7 @@ check_format_info_main (format_check_results *res, ++arg_num; if (has_operand_number > 0) { - warning (0, "missing $ operand number in format"); + warning (OPT_Wformat, "missing $ operand number in format"); return; } else @@ -1962,7 +1972,7 @@ check_format_info_main (format_check_results *res, { if (params == 0) { - warning (0, "too few arguments for format"); + warning (OPT_Wformat, "too few arguments for format"); return; } @@ -2075,16 +2085,16 @@ check_format_types (format_wanted_type *types, const char *format_start, && i == 0 && cur_param != 0 && integer_zerop (cur_param)) - warning (0, "writing through null pointer (argument %d)", - arg_num); + warning (OPT_Wformat, "writing through null pointer " + "(argument %d)", arg_num); /* Check for reading through a NULL pointer. */ if (types->reading_from_flag && i == 0 && cur_param != 0 && integer_zerop (cur_param)) - warning (0, "reading through null pointer (argument %d)", - arg_num); + warning (OPT_Wformat, "reading through null pointer " + "(argument %d)", arg_num); if (cur_param != 0 && TREE_CODE (cur_param) == ADDR_EXPR) cur_param = TREE_OPERAND (cur_param, 0); @@ -2103,8 +2113,8 @@ check_format_types (format_wanted_type *types, const char *format_start, && (CONSTANT_CLASS_P (cur_param) || (DECL_P (cur_param) && TREE_READONLY (cur_param)))))) - warning (0, "writing into constant object (argument %d)", - arg_num); + warning (OPT_Wformat, "writing into constant object " + "(argument %d)", arg_num); /* If there are extra type qualifiers beyond the first indirection, then this makes the types technically @@ -2114,8 +2124,8 @@ check_format_types (format_wanted_type *types, const char *format_start, && (TYPE_READONLY (cur_type) || TYPE_VOLATILE (cur_type) || TYPE_RESTRICT (cur_type))) - warning (0, "extra type qualifiers in format argument " - "(argument %d)", + warning (OPT_Wformat, "extra type qualifiers in format " + "argument (argument %d)", arg_num); } @@ -2225,20 +2235,24 @@ format_type_warning (const char *descr, const char *format_start, if (wanted_type_name) { if (descr) - warning (0, "%s should have type %<%s%s%>, but argument %d has type %qT", + warning (OPT_Wformat, "%s should have type %<%s%s%>, " + "but argument %d has type %qT", descr, wanted_type_name, p, arg_num, arg_type); else - warning (0, "format %q.*s expects type %<%s%s%>, but argument %d has type %qT", + warning (OPT_Wformat, "format %q.*s expects type %<%s%s%>, " + "but argument %d has type %qT", format_length, format_start, wanted_type_name, p, arg_num, arg_type); } else { if (descr) - warning (0, "%s should have type %<%T%s%>, but argument %d has type %qT", + warning (OPT_Wformat, "%s should have type %<%T%s%>, " + "but argument %d has type %qT", descr, wanted_type, p, arg_num, arg_type); else - warning (0, "format %q.*s expects type %<%T%s%>, but argument %d has type %qT", + warning (OPT_Wformat, "format %q.*s expects type %<%T%s%>, " + "but argument %d has type %qT", format_length, format_start, wanted_type, p, arg_num, arg_type); } } |