]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fortran: Improve -Wmissing-include-dirs warnings [PR55534]
authorTobias Burnus <tobias@codesourcery.com>
Wed, 22 Sep 2021 22:10:00 +0000 (00:10 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Wed, 22 Sep 2021 22:10:00 +0000 (00:10 +0200)
It turned out that enabling the -Wmissing-include-dirs for libcpp did output
too many warnings – at least as run with -B and similar options during the
GCC build and warning for internal include dirs like finclude, unlikely of
relevance to for a real-world user.
This patch now only warns for -I and -J by default but permits to get the
full warnings including libcpp ones with -Wmissing-include-dirs. It
additionally documents this in the manual.

With that change, the -Wno-missing-include-dirs could be removed
from libgfortran's configure and libgomp's testsuite always cflags.
This reverts those bits of the previous
commit r12-3722-g417ea5c02cef7f000e66d1af22b066c2c1cda047

Additionally, it turned out that all call to load_file called exit
explicitly - except for the main file via gfc_init -> gfc_new_file. The
latter also output a file not existing fatal error, such that two errors
where printed. Now exit is called in line with the other users of
load_file.

Finally, when compileing with "nonexisting/file.f90", first a warning that
"nonexisting" does not exist as include path was printed before the file
not found error was printed. Now the directory in which the physical file
is located is added silently, relying on the file-not-found diagnostic for
those.

PR fortran/55534
gcc/ChangeLog:

* doc/invoke.texi (-Wno-missing-include-dirs.): Document Fortran
behavior.

gcc/fortran/ChangeLog:

* cpp.c (gfc_cpp_register_include_paths, gfc_cpp_post_options):
Add new bool verbose_missing_dir_warn argument.
* cpp.h (gfc_cpp_post_options): Update prototype.
* f95-lang.c (gfc_init): Remove duplicated file-not found diag.
* gfortran.h (gfc_check_include_dirs): Takes bool
verbose_missing_dir_warn arg.
(gfc_new_file): Returns now void.
* options.c (gfc_post_options): Update to warn for -I and -J,
only, by default but for all when user requested.
* scanner.c (gfc_do_check_include_dir):
(gfc_do_check_include_dirs, gfc_check_include_dirs): Take bool
verbose warn arg and update to avoid printing the same message
twice or never.
(load_file): Fix indent.
(gfc_new_file): Return void and exit when load_file failed
as all other load_file users do.

libgfortran/ChangeLog:

* configure.ac (AM_FCFLAGS): Revert r12-3722 by removing
-Wno-missing-include-dirs.
* configure: Regenerate.

libgomp/ChangeLog:

* testsuite/libgomp.fortran/fortran.exp (ALWAYS_CFLAGS): Revert
r12-3722 by removing -Wno-missing-include-dirs.
* testsuite/libgomp.oacc-fortran/fortran.exp (ALWAYS_CFLAGS): Likewise.

gcc/testsuite/ChangeLog:

* gfortran.dg/include_14.f90: Add -J testcase and update dg-output.
* gfortran.dg/include_15.f90: Likewise.
* gfortran.dg/include_16.f90: Likewise.
* gfortran.dg/include_17.f90: Likewise.
* gfortran.dg/include_18.f90: Likewise.
* gfortran.dg/include_19.f90: Likewise.

(cherry picked from commit 83aac698835edcdb3e6d96b856bef1c5f92e5e24)

22 files changed:
gcc/ChangeLog.omp
gcc/doc/invoke.texi
gcc/fortran/ChangeLog.omp
gcc/fortran/cpp.c
gcc/fortran/cpp.h
gcc/fortran/f95-lang.c
gcc/fortran/gfortran.h
gcc/fortran/options.c
gcc/fortran/scanner.c
gcc/testsuite/ChangeLog.omp
gcc/testsuite/gfortran.dg/include_14.f90
gcc/testsuite/gfortran.dg/include_15.f90
gcc/testsuite/gfortran.dg/include_16.f90
gcc/testsuite/gfortran.dg/include_17.f90
gcc/testsuite/gfortran.dg/include_18.f90
gcc/testsuite/gfortran.dg/include_19.f90
libgfortran/ChangeLog.omp
libgfortran/configure
libgfortran/configure.ac
libgomp/ChangeLog.omp
libgomp/testsuite/libgomp.fortran/fortran.exp
libgomp/testsuite/libgomp.oacc-fortran/fortran.exp

index b5476c750a7f8094dda05921f88b2e55c38ff9e2..a4b5f840e9d277e6a76f9a2e6cee595dd67d418c 100644 (file)
@@ -1,3 +1,12 @@
+2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       Backported from master:
+       2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       PR fortran/55534
+       * doc/invoke.texi (-Wno-missing-include-dirs.): Document Fortran
+       behavior.
+
 2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
 
        Backported from master:
index 5ee1cf686c8b58c172d8a1dd3063a6572b5c80d9..258935528f77f2d2124c7ca163c24c5b54d66f28 100644 (file)
@@ -6450,10 +6450,12 @@ int b[2][2] = @{ @{ 0, 1 @}, @{ 2, 3 @} @};
 
 This warning is enabled by @option{-Wall}.
 
-@item -Wmissing-include-dirs @r{(C, C++, Objective-C and Objective-C++ only)}
+@item -Wmissing-include-dirs @r{(C, C++, Objective-C, Objective-C++ and Fortran only)}
 @opindex Wmissing-include-dirs
 @opindex Wno-missing-include-dirs
-Warn if a user-supplied include directory does not exist.
+Warn if a user-supplied include directory does not exist. This opions is disabled
+by default for C, C++, Objective-C and Objective-C++. For Fortran, it is partially
+enabled by default by warning for -I and -J, only.
 
 @item -Wno-missing-profile
 @opindex Wmissing-profile
index 524d2d04f808cdf364b80840ec6ea224625aa722..1a49de61a8d70fcf9bca5007307b822693043484 100644 (file)
@@ -1,3 +1,26 @@
+2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       Backported from master:
+       2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       PR fortran/55534
+       * cpp.c (gfc_cpp_register_include_paths, gfc_cpp_post_options):
+       Add new bool verbose_missing_dir_warn argument.
+       * cpp.h (gfc_cpp_post_options): Update prototype.
+       * f95-lang.c (gfc_init): Remove duplicated file-not found diag.
+       * gfortran.h (gfc_check_include_dirs): Takes bool
+       verbose_missing_dir_warn arg.
+       (gfc_new_file): Returns now void.
+       * options.c (gfc_post_options): Update to warn for -I and -J,
+       only, by default but for all when user requested.
+       * scanner.c (gfc_do_check_include_dir):
+       (gfc_do_check_include_dirs, gfc_check_include_dirs): Take bool
+       verbose warn arg and update to avoid printing the same message
+       twice or never.
+       (load_file): Fix indent.
+       (gfc_new_file): Return void and exit when load_file failed
+       as all other load_file users do.
+
 2021-09-21  Tobias Burnus  <tobias@codesourcery.com>
 
        Backported from master:
index 6197e2c2714c13ce6fb356b30d07efb542a511d6..da8676caa394bb186872a05c47173913d9b0a4fb 100644 (file)
@@ -245,11 +245,12 @@ gfc_cpp_temporary_file (void)
 }
 
 static void
-gfc_cpp_register_include_paths (void)
+gfc_cpp_register_include_paths (bool verbose_missing_dir_warn)
 {
   int cxx_stdinc = 0;
   cpp_get_options (cpp_in)->warn_missing_include_dirs
-    = global_options.x_cpp_warn_missing_include_dirs;
+    = (global_options.x_cpp_warn_missing_include_dirs
+       && verbose_missing_dir_warn);
   register_include_chains (cpp_in, gfc_cpp_option.sysroot,
                           gfc_cpp_option.prefix, gfc_cpp_option.multilib,
                           gfc_cpp_option.standard_include_paths, cxx_stdinc,
@@ -484,7 +485,7 @@ gfc_cpp_init_cb (void)
 }
 
 void
-gfc_cpp_post_options (void)
+gfc_cpp_post_options (bool verbose_missing_dir_warn)
 {
   /* Any preprocessing-related option without '-cpp' is considered
      an error.  */
@@ -542,7 +543,7 @@ gfc_cpp_post_options (void)
 
   gfc_cpp_init_cb ();
 
-  gfc_cpp_register_include_paths ();
+  gfc_cpp_register_include_paths (verbose_missing_dir_warn);
 }
 
 
index 5cb7e5a9c342181d85834be6c1b27c5de9766882..44644a2a333d945549c175cdafc049efdcbf6c3a 100644 (file)
@@ -41,7 +41,7 @@ void gfc_cpp_init_options (unsigned int decoded_options_count,
 
 int gfc_cpp_handle_option(size_t scode, const char *arg, int value);
 
-void gfc_cpp_post_options (void);
+void gfc_cpp_post_options (bool);
 
 bool gfc_cpp_preprocess (const char *source_file);
 
index 1b3ea0f67c6989aa86f3c9f668e657525587b7f4..a4271982786157e49955d8f884ace45e14c6676f 100644 (file)
@@ -259,8 +259,8 @@ gfc_init (void)
 
   gfc_init_1 ();
 
-  if (!gfc_new_file ())
-    fatal_error (input_location, "cannot open input file: %s", gfc_source_file);
+  /* Calls exit in case of a fail. */
+  gfc_new_file ();
 
   if (flag_preprocess_only)
     return false;
index 13ebff27010199fe5ad32b75a728caff8a665159..48e20811b35154c5e251cc8728d9c83e0f527fdb 100644 (file)
@@ -3033,7 +3033,7 @@ void gfc_scanner_init_1 (void);
 void gfc_add_include_path (const char *, bool, bool, bool, bool);
 void gfc_add_intrinsic_modules_path (const char *);
 void gfc_release_include_path (void);
-void gfc_check_include_dirs (void);
+void gfc_check_include_dirs (bool);
 FILE *gfc_open_included_file (const char *, bool, bool);
 
 int gfc_at_end (void);
@@ -3065,7 +3065,7 @@ gfc_char_t gfc_peek_char (void);
 char gfc_peek_ascii_char (void);
 void gfc_error_recovery (void);
 void gfc_gobble_whitespace (void);
-bool gfc_new_file (void);
+void gfc_new_file (void);
 const char * gfc_read_orig_filename (const char *, const char **);
 
 extern gfc_source_form gfc_current_form;
index a657ad8ac114151e901c8eebdc5d9019f40223f4..40e80b5a9aaa916e678eafb82885d70eee842b25 100644 (file)
@@ -251,14 +251,20 @@ gfc_post_options (const char **pfilename)
 {
   const char *filename = *pfilename, *canon_source_file = NULL;
   char *source_path;
+  bool verbose_missing_dir_warn;
   int i;
 
   /* This needs to be after the commandline has been processed.
      In Fortran, the options is by default enabled, in C/C++
-     by default disabled.  */
+     by default disabled.
+     If not enabled explicitly by the user, only warn for -I
+     and -J, otherwise warn for all include paths.  */
+  verbose_missing_dir_warn
+    = (global_options_set.x_cpp_warn_missing_include_dirs
+       && global_options.x_cpp_warn_missing_include_dirs);
   SET_OPTION_IF_UNSET (&global_options, &global_options_set,
                       cpp_warn_missing_include_dirs, 1);
-  gfc_check_include_dirs ();
+  gfc_check_include_dirs (verbose_missing_dir_warn);
 
   /* Finalize DEC flags.  */
   post_dec_flags (flag_dec);
@@ -336,10 +342,13 @@ gfc_post_options (const char **pfilename)
       source_path = (char *) alloca (i + 1);
       memcpy (source_path, canon_source_file, i);
       source_path[i] = 0;
-      gfc_add_include_path (source_path, true, true, true, false);
+      /* Only warn if the directory is different from the input file as
+        if that one is not found, already an error is shown.  */
+      bool warn = gfc_option.flag_preprocessed && gfc_source_file != filename;
+      gfc_add_include_path (source_path, true, true, warn, false);
     }
   else
-    gfc_add_include_path (".", true, true, true, false);
+    gfc_add_include_path (".", true, true, false, false);
 
   if (canon_source_file != gfc_source_file)
     free (CONST_CAST (char *, canon_source_file));
@@ -487,7 +496,7 @@ gfc_post_options (const char **pfilename)
     gfc_fatal_error ("Maximum subrecord length cannot exceed %d",
                     MAX_SUBRECORD_LENGTH);
 
-  gfc_cpp_post_options ();
+  gfc_cpp_post_options (verbose_missing_dir_warn);
 
   if (gfc_option.allow_std & GFC_STD_F2008)
     lang_hooks.name = "GNU Fortran2008";
index 6fe74bd5b8d26b8962d9d90a9f40fe6d207c01b5..52124bd5d361f843a1a80a60cb2eb12518b902c4 100644 (file)
@@ -307,9 +307,9 @@ gfc_do_check_include_dir (const char *path, bool warn)
       if (errno != ENOENT)
        gfc_warning_now (0, "Include directory %qs: %s",
                         path, xstrerror(errno));
-      else if (warn && !gfc_cpp_enabled ())
+      else if (warn)
          gfc_warning_now (OPT_Wmissing_include_dirs,
-                            "Nonexistent include directory %qs", path);
+                          "Nonexistent include directory %qs", path);
       return false;
     }
   else if (!S_ISDIR (st.st_mode))
@@ -323,7 +323,7 @@ gfc_do_check_include_dir (const char *path, bool warn)
 /* In order that -W(no-)missing-include-dirs works, the diagnostic can only be
    run after processing the commandline.  */
 static void
-gfc_do_check_include_dirs (gfc_directorylist **list)
+gfc_do_check_include_dirs (gfc_directorylist **list, bool do_warn)
 {
   gfc_directorylist *prev, *q, *n;
   prev = NULL;
@@ -331,7 +331,7 @@ gfc_do_check_include_dirs (gfc_directorylist **list)
   while (n)
     {
       q = n; n = n->next;
-      if (gfc_do_check_include_dir (q->path, q->warn))
+      if (gfc_do_check_include_dir (q->path, q->warn && do_warn))
        {
          prev = q;
          continue;
@@ -346,10 +346,16 @@ gfc_do_check_include_dirs (gfc_directorylist **list)
 }
 
 void
-gfc_check_include_dirs ()
+gfc_check_include_dirs (bool verbose_missing_dir_warn)
 {
-  gfc_do_check_include_dirs (&include_dirs);
-  gfc_do_check_include_dirs (&intrinsic_modules_dirs);
+  /* This is a bit convoluted: If gfc_cpp_enabled () and
+     verbose_missing_dir_warn, the warning is shown by libcpp. Otherwise,
+     it is shown here, still conditional on OPT_Wmissing_include_dirs.  */
+  bool warn = !gfc_cpp_enabled () || !verbose_missing_dir_warn;
+  gfc_do_check_include_dirs (&include_dirs, warn);
+  gfc_do_check_include_dirs (&intrinsic_modules_dirs, verbose_missing_dir_warn);
+  if (gfc_option.module_dir && gfc_cpp_enabled ())
+    gfc_do_check_include_dirs (&include_dirs, true);
 }
 
 /* Adds path to the list pointed to by list.  */
@@ -2771,7 +2777,7 @@ load_file (const char *realfilename, const char *displayedname, bool initial)
    it tries to determine the source form from the filename, defaulting
    to free form.  */
 
-bool
+void
 gfc_new_file (void)
 {
   bool result;
@@ -2789,6 +2795,9 @@ gfc_new_file (void)
   else
     result = load_file (gfc_source_file, NULL, true);
 
+  if (!result)
+    exit (FATAL_EXIT_CODE);
+
   gfc_current_locus.lb = line_head;
   gfc_current_locus.nextc = (line_head == NULL) ? NULL : line_head->line;
 
@@ -2799,8 +2808,6 @@ gfc_new_file (void)
 
   exit (SUCCESS_EXIT_CODE);
 #endif
-
-  return result;
 }
 
 static char *
index 48a9f531afe5426183578b304fb8b5811b5d545f..16a511512ec2ec898efb73b88645a04d28165ce0 100644 (file)
@@ -1,3 +1,16 @@
+2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       Backported from master:
+       2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       PR fortran/55534
+       * gfortran.dg/include_14.f90: Add -J testcase and update dg-output.
+       * gfortran.dg/include_15.f90: Likewise.
+       * gfortran.dg/include_16.f90: Likewise.
+       * gfortran.dg/include_17.f90: Likewise.
+       * gfortran.dg/include_18.f90: Likewise.
+       * gfortran.dg/include_19.f90: Likewise.
+
 2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
 
        Backported from master:
index b306b2c813b9f2179476d24d7096f51759f4bdf2..8110e49bf4305066cbc256c1e55be70583c0294b 100644 (file)
@@ -1,5 +1,6 @@
-! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar" }
+! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar -J foo/bar" }
 end
+! default: warn for -I and -J but ignore other options.
+! { dg-warning "Nonexistent include directory 'bar/'" "" { target *-*-* } 0 }
+! { dg-warning "Nonexistent include directory 'foo/bar/'" "" { target *-*-* } 0 }
 
-! { dg-warning "/fdaf/: No such file or directory" "" { target *-*-* } 0 }
-! { dg-warning "bar: No such file or directory" "" { target *-*-* } 0 }
index 4944282f931bf2fcdb252c7fcce012bffd8e731c..068dcef5826fe3de7928b076d05b9c4c7a2ac042 100644 (file)
@@ -1,5 +1,6 @@
-! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar -Wmissing-include-dirs" }
+! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar -J foo/bar -Wmissing-include-dirs" }
 end
 
-! { dg-warning "/fdaf/: No such file or directory" "" { target *-*-* } 0 }
-! { dg-warning "bar: No such file or directory" "" { target *-*-* } 0 }
+! { dg-warning " /fdaf/: No such file or directory" "" { target *-*-* } 0 }
+! { dg-warning " bar: No such file or directory" "" { target *-*-* } 0 }
+! { dg-warning " foo/bar: No such file or directory" "" { target *-*-* } 0 }
index 45794f28e735a35957db69f32d4d2a583ba86055..65e4c7efdaddf433b3a6422745c0275306f4c639 100644 (file)
@@ -1,2 +1,2 @@
-! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar -Wno-missing-include-dirs" }
+! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar -J foo/bar -Wno-missing-include-dirs" }
 end
index 0ed5c86d323ccd769306f153a6f55fa421d4c881..06677590be3432f83c134a4738c7673639fe43b5 100644 (file)
@@ -1,4 +1,6 @@
 ! { dg-do compile }
-! { dg-options "-I foo-bar -Wno-missing-include-dirs" }
+! { dg-options "-I foo-bar -J foo/bar" }
 end 
+! { dg-warning "Nonexistent include directory 'foo-bar/'" "" { target *-*-* } 0 }
+! { dg-warning "Nonexistent include directory 'foo/bar/'" "" { target *-*-* } 0 }
 
index ca69df382fede4c890f5541127bdcd92b00c3cd9..b74a585bf1be8746f69c69a427aac2c9f00c220f 100644 (file)
@@ -1,3 +1,5 @@
 ! { dg-do compile }
-! { dg-options "-I nothere -Wno-missing-include-dirs" }
+! { dg-options "-I nothere -J neither/here -Wmissing-include-dirs" }
 end 
+! { dg-warning "Nonexistent include directory 'nothere/'" "" { target *-*-* } 0 }
+! { dg-warning "Nonexistent include directory 'neither/here/'" "" { target *-*-* } 0 }
index 2a068174b7e67a4ca4dd72f28df4d943b5681625..740492952810d8f19aec721c18c0ae4695c1ce68 100644 (file)
@@ -1,4 +1,4 @@
 ! { dg-do compile }
-! { dg-options "-J foobar/foo -Wno-missing-include-dirs" }
+! { dg-options "-I nothere -J foobar/foo -Wno-missing-include-dirs" }
 program main
 end program main
index b8b50f83e8a237551c33e7600abbc0daea360cf1..bd0c1b81b56d0b6b3549762a8aa930a5465f6dae 100644 (file)
@@ -1,3 +1,13 @@
+2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       Backported from master:
+       2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       PR fortran/55534
+       * configure.ac (AM_FCFLAGS): Revert r12-3722 by removing
+       -Wno-missing-include-dirs.
+       * configure: Regenerate.
+
 2021-09-21  Tobias Burnus  <tobias@codesourcery.com>
 
        Backported from master:
index c3c066930a338d2ebcb461c5dae6c8573596d362..f3634389cf806555c74090947f6bd3cdbefd636b 100755 (executable)
@@ -5984,7 +5984,7 @@ fi
 
 # Add -Wall -fno-repack-arrays -fno-underscoring if we are using GCC.
 if test "x$GCC" = "xyes"; then
-  AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring -Wno-missing-include-dirs"
+  AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
   ## We like to use C11 and C99 routines when available.  This makes
   ## sure that
   ## __STDC_VERSION__ is set such that libc includes make them available.
index 5e0ef62d9f3fc92ae2ad8c31f9c38ff252444137..8961e314d82b47dade89452a213481c8cc077e57 100644 (file)
@@ -146,7 +146,7 @@ AM_PROG_CC_C_O
 
 # Add -Wall -fno-repack-arrays -fno-underscoring if we are using GCC.
 if test "x$GCC" = "xyes"; then
-  AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring -Wno-missing-include-dirs"
+  AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
   ## We like to use C11 and C99 routines when available.  This makes
   ## sure that
   ## __STDC_VERSION__ is set such that libc includes make them available.
index 223961ffe57b06c6428345c7dfc46145192436e9..b7ea7f492ab21771960b715f089891fffa7e0451 100644 (file)
@@ -1,3 +1,13 @@
+2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       Backported from master:
+       2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
+
+       PR fortran/55534
+       * testsuite/libgomp.fortran/fortran.exp (ALWAYS_CFLAGS): Revert
+       r12-3722 by removing -Wno-missing-include-dirs.
+       * testsuite/libgomp.oacc-fortran/fortran.exp (ALWAYS_CFLAGS): Likewise.
+
 2021-09-22  Tobias Burnus  <tobias@codesourcery.com>
 
        Backported from master:
index 912dd2a743e89fec4378e75943a1e377e96cb87f..eb701311b6a05b1ce943d4087adeee5918a7ffe6 100644 (file)
@@ -20,9 +20,6 @@ dg-init
 
 # Turn on OpenMP.
 lappend ALWAYS_CFLAGS "additional_flags=-fopenmp"
-# Silence warnings due to explicitly passed but nonexisting
-# -isystem <instdir>/target>/{sys-,}include (gfortran warns by default)
-lappend ALWAYS_CFLAGS "additional_flags=-Wno-missing-include-dirs"
 
 if { $blddir != "" } {
     set lang_source_re {^.*\.[fF](|90|95|03|08)$}
index 22e91eca256f4c4ddf0becae128a0d1db426d8d7..7365b320668aad63130004771fd6b5d3f4f440d2 100644 (file)
@@ -22,9 +22,6 @@ dg-init
 
 # Turn on OpenACC.
 lappend ALWAYS_CFLAGS "additional_flags=-fopenacc"
-# Silence warnings due to explicitly passed but nonexisting
-# -isystem <instdir>/target>/{sys-,}include (gfortran warns by default)
-lappend ALWAYS_CFLAGS "additional_flags=-Wno-missing-include-dirs"
 
 if { $blddir != "" } {
     set lang_source_re {^.*\.[fF](|90|95|03|08)$}