re PR fortran/44054 (Handle -Werror, -Werror=, -fdiagnostics-show-option, !GCC$ diagnostic (pragmas) and color)
gcc/fortran/ChangeLog: 2014-10-06 Manuel López-Ibáñez <manu@gcc.gnu.org> PR fortran/44054 PR fortran/54687 * gfortran.h (gfc_warning_cmdline): Add overload that takes an option. (gfc_error_cmdline): Declare. * error.c (gfc_warning_cmdline): New overload that takes an option. (gfc_error_cmdline): New. * lang.opt (Wmissing-include-dirs): New. * scanner.c (add_path_to_list): Use the new functions. (load_file): Likewise. * options.c (gfc_init_options): Wmissing-include-dirs is enabled by default in Fortran. (gfc_handle_option): Accept automatically handled options. From-SVN: r215974
This commit is contained in:
parent
96f6e029ed
commit
7c02f68bf4
6 changed files with 77 additions and 14 deletions
|
@ -1,3 +1,19 @@
|
|||
2014-10-06 Manuel López-Ibáñez <manu@gcc.gnu.org>
|
||||
|
||||
PR fortran/44054
|
||||
PR fortran/54687
|
||||
* gfortran.h (gfc_warning_cmdline): Add overload that takes an
|
||||
option.
|
||||
(gfc_error_cmdline): Declare.
|
||||
* error.c (gfc_warning_cmdline): New overload that takes an option.
|
||||
(gfc_error_cmdline): New.
|
||||
* lang.opt (Wmissing-include-dirs): New.
|
||||
* scanner.c (add_path_to_list): Use the new functions.
|
||||
(load_file): Likewise.
|
||||
* options.c (gfc_init_options): Wmissing-include-dirs is enabled
|
||||
by default in Fortran.
|
||||
(gfc_handle_option): Accept automatically handled options.
|
||||
|
||||
2014-10-06 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* libgfortran.h (GFC_STD_F2015): Add.
|
||||
|
|
|
@ -1054,15 +1054,51 @@ gfc_diagnostic_finalizer (diagnostic_context *context,
|
|||
|
||||
/* Give a warning about the command-line. */
|
||||
|
||||
void
|
||||
bool
|
||||
gfc_warning_cmdline (int opt, const char *gmsgid, ...)
|
||||
{
|
||||
va_list argp;
|
||||
diagnostic_info diagnostic;
|
||||
bool ret;
|
||||
|
||||
va_start (argp, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &argp, UNKNOWN_LOCATION,
|
||||
DK_WARNING);
|
||||
diagnostic.option_index = opt;
|
||||
ret = report_diagnostic (&diagnostic);
|
||||
va_end (argp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* Give a warning about the command-line. */
|
||||
|
||||
bool
|
||||
gfc_warning_cmdline (const char *gmsgid, ...)
|
||||
{
|
||||
va_list argp;
|
||||
diagnostic_info diagnostic;
|
||||
bool ret;
|
||||
|
||||
va_start (argp, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &argp, UNKNOWN_LOCATION,
|
||||
DK_WARNING);
|
||||
ret = report_diagnostic (&diagnostic);
|
||||
va_end (argp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* Give an error about the command-line. */
|
||||
|
||||
void
|
||||
gfc_error_cmdline (const char *gmsgid, ...)
|
||||
{
|
||||
va_list argp;
|
||||
diagnostic_info diagnostic;
|
||||
|
||||
va_start (argp, gmsgid);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &argp, UNKNOWN_LOCATION,
|
||||
DK_WARNING);
|
||||
diagnostic_set_info (&diagnostic, gmsgid, &argp, UNKNOWN_LOCATION, DK_ERROR);
|
||||
report_diagnostic (&diagnostic);
|
||||
va_end (argp);
|
||||
}
|
||||
|
|
|
@ -2698,12 +2698,14 @@ const char *gfc_print_wide_char (gfc_char_t);
|
|||
|
||||
void gfc_warning (const char *, ...) ATTRIBUTE_GCC_GFC(1,2);
|
||||
void gfc_warning_now (const char *, ...) ATTRIBUTE_GCC_GFC(1,2);
|
||||
void gfc_warning_cmdline (const char *gmsgid, ...) ATTRIBUTE_GCC_GFC(1,2);
|
||||
bool gfc_warning_cmdline (const char *gmsgid, ...) ATTRIBUTE_GCC_GFC(1,2);
|
||||
bool gfc_warning_cmdline (int opt, const char *gmsgid, ...) ATTRIBUTE_GCC_GFC(2,3);
|
||||
|
||||
void gfc_clear_warning (void);
|
||||
void gfc_warning_check (void);
|
||||
|
||||
void gfc_error (const char *, ...) ATTRIBUTE_GCC_GFC(1,2);
|
||||
void gfc_error_cmdline (const char *gmsgid, ...) ATTRIBUTE_GCC_GFC(1,2);
|
||||
void gfc_error_now (const char *, ...) ATTRIBUTE_GCC_GFC(1,2);
|
||||
void gfc_fatal_error (const char *, ...) ATTRIBUTE_NORETURN ATTRIBUTE_GCC_GFC(1,2);
|
||||
void gfc_internal_error (const char *, ...) ATTRIBUTE_NORETURN ATTRIBUTE_GCC_GFC(1,2);
|
||||
|
|
|
@ -257,6 +257,10 @@ Wintrinsics-std
|
|||
Fortran Warning
|
||||
Warn on intrinsics not part of the selected standard
|
||||
|
||||
Wmissing-include-dirs
|
||||
Fortran
|
||||
; Documented in C/C++
|
||||
|
||||
Wuse-without-only
|
||||
Fortran Warning
|
||||
Warn about USE statements that have no ONLY qualifier
|
||||
|
|
|
@ -172,6 +172,12 @@ gfc_init_options (unsigned int decoded_options_count,
|
|||
gfc_option.rtcheck = 0;
|
||||
gfc_option.coarray = GFC_FCOARRAY_NONE;
|
||||
|
||||
/* ??? Wmissing-include-dirs is disabled by default in C/C++ but
|
||||
enabled by default in Fortran. Ideally, we should express this
|
||||
in .opt, but that is not supported yet. */
|
||||
if (!global_options_set.x_cpp_warn_missing_include_dirs)
|
||||
global_options.x_cpp_warn_missing_include_dirs = 1;;
|
||||
|
||||
set_default_std_flags ();
|
||||
|
||||
/* Initialize cpp-related options. */
|
||||
|
@ -634,6 +640,8 @@ gfc_handle_option (size_t scode, const char *arg, int value,
|
|||
switch (code)
|
||||
{
|
||||
default:
|
||||
if (cl_options[code].flags & gfc_option_lang_mask ())
|
||||
break;
|
||||
result = false;
|
||||
break;
|
||||
|
||||
|
|
|
@ -324,19 +324,16 @@ add_path_to_list (gfc_directorylist **list, const char *path,
|
|||
if (stat (q, &st))
|
||||
{
|
||||
if (errno != ENOENT)
|
||||
gfc_warning_now ("Include directory \"%s\": %s", path,
|
||||
xstrerror(errno));
|
||||
else
|
||||
{
|
||||
/* FIXME: Also support -Wmissing-include-dirs. */
|
||||
if (warn)
|
||||
gfc_warning_now ("Nonexistent include directory \"%s\"", path);
|
||||
}
|
||||
gfc_warning_cmdline ("Include directory %qs: %s", path,
|
||||
xstrerror(errno));
|
||||
else if (warn)
|
||||
gfc_warning_cmdline (OPT_Wmissing_include_dirs,
|
||||
"Nonexistent include directory %qs", path);
|
||||
return;
|
||||
}
|
||||
else if (!S_ISDIR (st.st_mode))
|
||||
{
|
||||
gfc_warning_now ("\"%s\" is not a directory", path);
|
||||
gfc_warning_cmdline ("%qs is not a directory", path);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1925,7 +1922,7 @@ load_file (const char *realfilename, const char *displayedname, bool initial)
|
|||
input = gfc_open_file (realfilename);
|
||||
if (input == NULL)
|
||||
{
|
||||
gfc_error_now ("Can't open file '%s'", filename);
|
||||
gfc_error_cmdline ("Can't open file %qs", filename);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue