bool pedwarn_c99 (location_t location, int opt, const char *gmsgid, ...) { diagnostic_info diagnostic; va_list ap; bool warned = false; rich_location richloc (location); va_start (ap, gmsgid); /* If desired, issue the C99/C11 compat warning, which is more specific than -pedantic. */ if (warn_c99_c11_compat > 0) { diagnostic_set_info (&diagnostic, gmsgid, &ap, &richloc, (pedantic && !flag_isoc11) ? DK_PEDWARN : DK_WARNING); diagnostic.option_index = OPT_Wc99_c11_compat; warned = report_diagnostic (&diagnostic); } /* -Wno-c99-c11-compat suppresses even the pedwarns. */ else if (warn_c99_c11_compat == 0) ; /* For -pedantic outside C11, issue a pedwarn. */ else if (pedantic && !flag_isoc11) { diagnostic_set_info (&diagnostic, gmsgid, &ap, &richloc, DK_PEDWARN); diagnostic.option_index = opt; warned = report_diagnostic (&diagnostic); } va_end (ap); return warned; }
bool pedwarn_c90 (location_t location, int opt, const char *gmsgid, ...) { diagnostic_info diagnostic; va_list ap; bool warned = false; rich_location richloc (line_table, location); va_start (ap, gmsgid); /* Warnings such as -Wvla are the most specific ones. */ if (opt != OPT_Wpedantic) { int opt_var = *(int *) option_flag_var (opt, &global_options); if (opt_var == 0) goto out; else if (opt_var > 0) { diagnostic_set_info (&diagnostic, gmsgid, &ap, &richloc, (pedantic && !flag_isoc99) ? DK_PEDWARN : DK_WARNING); diagnostic.option_index = opt; report_diagnostic (&diagnostic); warned = true; goto out; } } /* Maybe we want to issue the C90/C99 compat warning, which is more specific than -pedantic. */ if (warn_c90_c99_compat > 0) { diagnostic_set_info (&diagnostic, gmsgid, &ap, &richloc, (pedantic && !flag_isoc99) ? DK_PEDWARN : DK_WARNING); diagnostic.option_index = OPT_Wc90_c99_compat; report_diagnostic (&diagnostic); } /* -Wno-c90-c99-compat suppresses the pedwarns. */ else if (warn_c90_c99_compat == 0) ; /* For -pedantic outside C99, issue a pedwarn. */ else if (pedantic && !flag_isoc99) { diagnostic_set_info (&diagnostic, gmsgid, &ap, &richloc, DK_PEDWARN); diagnostic.option_index = opt; report_diagnostic (&diagnostic); warned = true; } out: va_end (ap); return warned; }
/* Report a diagnostic MESSAGE (an error or a WARNING) at the line number of the insn INSN. This is used only when INSN is an `asm' with operands, and each ASM_OPERANDS records its own source file and line. */ static void diagnostic_for_asm (const rtx_insn *insn, const char *msg, va_list *args_ptr, diagnostic_t kind) { diagnostic_info diagnostic; diagnostic_set_info (&diagnostic, msg, args_ptr, location_for_asm (insn), kind); report_diagnostic (&diagnostic); }
void pedwarn_c90 (const char *gmsgid, ...) { diagnostic_info diagnostic; va_list ap; va_start (ap, gmsgid); diagnostic_set_info (&diagnostic, gmsgid, &ap, input_location, flag_isoc99 ? DK_WARNING : pedantic_error_kind ()); report_diagnostic (&diagnostic); va_end (ap); }
void pedwarn_c90 (location_t location, int opt, const char *gmsgid, ...) { diagnostic_info diagnostic; va_list ap; va_start (ap, gmsgid); diagnostic_set_info (&diagnostic, gmsgid, &ap, location, flag_isoc99 ? DK_WARNING : DK_PEDWARN); diagnostic.option_index = opt; report_diagnostic (&diagnostic); va_end (ap); }