]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fortran: Fix -Wno-missing-include-dirs handling [PR55534]
authorTobias Burnus <tobias@codesourcery.com>
Tue, 21 Sep 2021 06:27:00 +0000 (08:27 +0200)
committerTobias Burnus <tobias@codesourcery.com>
Tue, 21 Sep 2021 06:28:30 +0000 (08:28 +0200)
gcc/fortran/ChangeLog:

PR fortran/55534
* cpp.c: Define GCC_C_COMMON_C for #include "options.h" to make
cpp_reason_option_codes available.
(gfc_cpp_register_include_paths): Make static, set pfile's
warn_missing_include_dirs and move before caller.
(gfc_cpp_init_cb): New, cb code moved from ...
(gfc_cpp_init_0): ... here.
(gfc_cpp_post_options): Call gfc_cpp_init_cb.
(cb_cpp_diagnostic_cpp_option): New. As implemented in c-family
to match CppReason flags to -W... names.
(cb_cpp_diagnostic): Use it to replace single special case.
* cpp.h (gfc_cpp_register_include_paths): Remove as now static.
* gfortran.h (gfc_check_include_dirs): New prototype.
(gfc_add_include_path): Add new bool arg.
* options.c (gfc_init_options): Don't set -Wmissing-include-dirs.
(gfc_post_options): Set it here after commandline processing. Call
gfc_add_include_path with defer_warn=false.
(gfc_handle_option): Call it with defer_warn=true.
* scanner.c (gfc_do_check_include_dir, gfc_do_check_include_dirs,
gfc_check_include_dirs): New. Diagnostic moved from ...
(add_path_to_list): ... here, which came before cmdline processing.
Take additional bool defer_warn argument.
(gfc_add_include_path): Take additional defer_warn arg.
* scanner.h (struct gfc_directorylist): Reorder for alignment issues,
add new 'bool warn'.

libgfortran/ChangeLog:
PR fortran/55534
* configure.ac (AM_FCFLAGS): Add -Wno-missing-include-dirs.
* configure: Regenerate.

libgomp/ChangeLog:
PR fortran/55534
* testsuite/libgomp.fortran/fortran.exp: Add -Wno-missing-include-dirs
to ALWAYS_CFLAGS.
* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.

gcc/testsuite/ChangeLog:
* gfortran.dg/include_6.f90: Change dg-error to
dg-warning and update pattern.
* gfortran.dg/include_14.f90: New test.
* gfortran.dg/include_15.f90: New test.
* gfortran.dg/include_16.f90: New test.
* gfortran.dg/include_17.f90: New test.
* gfortran.dg/include_18.f90: New test.
* gfortran.dg/include_19.f90: New test.
* gfortran.dg/include_20.f90: New test.
* gfortran.dg/include_21.f90: New test.

19 files changed:
gcc/fortran/cpp.c
gcc/fortran/cpp.h
gcc/fortran/gfortran.h
gcc/fortran/options.c
gcc/fortran/scanner.c
gcc/fortran/scanner.h
gcc/testsuite/gfortran.dg/include_14.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_15.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_16.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_17.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_18.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_19.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_20.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_21.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/include_6.f90
libgfortran/configure
libgfortran/configure.ac
libgomp/testsuite/libgomp.fortran/fortran.exp
libgomp/testsuite/libgomp.oacc-fortran/fortran.exp

index 83c4517acdbb3ec1413838070be0bc580ec0bc4f..3ff895455e95193e91714964d6c37b7a46cd556a 100644 (file)
@@ -19,11 +19,15 @@ along with GCC; see the file COPYING3.  If not see
 #include "config.h"
 #include "system.h"
 #include "coretypes.h"
+
+#define GCC_C_COMMON_C
+#include "options.h"  /* For cpp_reason_option_codes. */
+#undef GCC_C_COMMON_C
+
 #include "target.h"
 #include "gfortran.h"
 #include "diagnostic.h"
 
-
 #include "toplev.h"
 
 #include "../../libcpp/internal.h"
@@ -240,6 +244,18 @@ gfc_cpp_temporary_file (void)
   return gfc_cpp_option.temporary_filename;
 }
 
+static void
+gfc_cpp_register_include_paths (void)
+{
+  int cxx_stdinc = 0;
+  cpp_get_options (cpp_in)->warn_missing_include_dirs
+    = global_options.x_cpp_warn_missing_include_dirs;
+  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,
+                          gfc_cpp_option.verbose);
+}
+
 void
 gfc_cpp_init_options (unsigned int decoded_options_count,
                      struct cl_decoded_option *decoded_options ATTRIBUTE_UNUSED)
@@ -435,6 +451,37 @@ gfc_cpp_handle_option (size_t scode, const char *arg, int value ATTRIBUTE_UNUSED
   return result;
 }
 
+/* This function needs to be called before gfc_cpp_register_include_paths
+   as the latter may diagnose missing include directories.  */
+static void
+gfc_cpp_init_cb (void)
+{
+  struct cpp_callbacks *cb;
+
+  cb = cpp_get_callbacks (cpp_in);
+  cb->file_change = cb_file_change;
+  cb->line_change = cb_line_change;
+  cb->ident = cb_ident;
+  cb->def_pragma = cb_def_pragma;
+  cb->diagnostic = cb_cpp_diagnostic;
+
+  if (gfc_cpp_option.dump_includes)
+    cb->include = cb_include;
+
+  if ((gfc_cpp_option.dump_macros == 'D')
+      || (gfc_cpp_option.dump_macros == 'N'))
+    {
+      cb->define = cb_define;
+      cb->undef  = cb_undef;
+    }
+
+  if (gfc_cpp_option.dump_macros == 'U')
+    {
+      cb->before_define = dump_queued_macros;
+      cb->used_define = cb_used_define;
+      cb->used_undef = cb_used_undef;
+    }
+}
 
 void
 gfc_cpp_post_options (void)
@@ -498,6 +545,7 @@ gfc_cpp_post_options (void)
      way libcpp will do it, namely, with no charset conversion but with
      skipping of a UTF-8 BOM if present.  */
   diagnostic_initialize_input_context (global_dc, nullptr, true);
+  gfc_cpp_init_cb ();
 
   gfc_cpp_register_include_paths ();
 }
@@ -506,32 +554,6 @@ gfc_cpp_post_options (void)
 void
 gfc_cpp_init_0 (void)
 {
-  struct cpp_callbacks *cb;
-
-  cb = cpp_get_callbacks (cpp_in);
-  cb->file_change = cb_file_change;
-  cb->line_change = cb_line_change;
-  cb->ident = cb_ident;
-  cb->def_pragma = cb_def_pragma;
-  cb->diagnostic = cb_cpp_diagnostic;
-
-  if (gfc_cpp_option.dump_includes)
-    cb->include = cb_include;
-
-  if ((gfc_cpp_option.dump_macros == 'D')
-      || (gfc_cpp_option.dump_macros == 'N'))
-    {
-      cb->define = cb_define;
-      cb->undef  = cb_undef;
-    }
-
-  if (gfc_cpp_option.dump_macros == 'U')
-    {
-      cb->before_define = dump_queued_macros;
-      cb->used_define = cb_used_define;
-      cb->used_undef = cb_used_undef;
-    }
-
   /* Initialize the print structure.  Setting print.src_line to -1 here is
      a trick to guarantee that the first token of the file will cause
      a linemarker to be output by maybe_print_line.  */
@@ -723,17 +745,6 @@ gfc_cpp_add_include_path_after (char *path, bool user_supplied)
   add_path (path, INC_AFTER, cxx_aware, user_supplied);
 }
 
-void
-gfc_cpp_register_include_paths (void)
-{
-  int cxx_stdinc = 0;
-  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,
-                          gfc_cpp_option.verbose);
-}
-
-
 
 static void scan_translation_unit_trad (cpp_reader *);
 static void account_for_newlines (const unsigned char *, size_t);
@@ -1043,6 +1054,21 @@ cb_used_define (cpp_reader *pfile, location_t line ATTRIBUTE_UNUSED,
   cpp_define_queue = q;
 }
 
+/* Return the gcc option code associated with the reason for a cpp
+   message, or 0 if none.  */
+
+static int
+cb_cpp_diagnostic_cpp_option (enum cpp_warning_reason reason)
+{
+  const struct cpp_reason_option_codes_t *entry;
+
+  for (entry = cpp_reason_option_codes; entry->reason != CPP_W_NONE; entry++)
+    if (entry->reason == reason)
+      return entry->option_code;
+  return 0;
+}
+
+
 /* Callback from cpp_error for PFILE to print diagnostics from the
    preprocessor.  The diagnostic is of type LEVEL, with REASON set
    to the reason code if LEVEL is represents a warning, at location
@@ -1089,8 +1115,8 @@ cb_cpp_diagnostic (cpp_reader *pfile ATTRIBUTE_UNUSED,
     }
   diagnostic_set_info_translated (&diagnostic, msg, ap,
                                  richloc, dlevel);
-  if (reason == CPP_W_WARNING_DIRECTIVE)
-    diagnostic_override_option_index (&diagnostic, OPT_Wcpp);
+  diagnostic_override_option_index (&diagnostic,
+                                   cb_cpp_diagnostic_cpp_option (reason));
   ret = diagnostic_report_diagnostic (global_dc, &diagnostic);
   if (level == CPP_DL_WARNING_SYSHDR)
     global_dc->dc_warn_system_headers = save_warn_system_headers;
index f642c7745f762cd37c2ebdc028f761dbec245b7b..5cb7e5a9c342181d85834be6c1b27c5de9766882 100644 (file)
@@ -50,6 +50,4 @@ void gfc_cpp_done (void);
 void gfc_cpp_add_include_path (char *path, bool user_supplied);
 void gfc_cpp_add_include_path_after (char *path, bool user_supplied);
 
-void gfc_cpp_register_include_paths (void);
-
 #endif /* GFC_CPP_H */
index 8b91225d6593fb18f5f642512a618b83a634447b..3c7a8434d07964e1762da7e20d75c13be126e991 100644 (file)
@@ -3029,9 +3029,10 @@ match gfc_get_pdt_instance (gfc_actual_arglist *, gfc_symbol **,
 void gfc_scanner_done_1 (void);
 void gfc_scanner_init_1 (void);
 
-void gfc_add_include_path (const char *, bool, bool, bool);
+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);
 FILE *gfc_open_included_file (const char *, bool, bool);
 
 int gfc_at_end (void);
index 847e20e8829739ed5aefb1c00fa0a89c0914cdea..d789397515ade91d8c11f181083add439bb9a84e 100644 (file)
@@ -159,14 +159,7 @@ gfc_init_options (unsigned int decoded_options_count,
                           | GFC_FPE_UNDERFLOW;
   gfc_option.rtcheck = 0;
 
-  /* ??? 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.  */
-  SET_OPTION_IF_UNSET (&global_options, &global_options_set,
-                      cpp_warn_missing_include_dirs, 1);
-
   set_dec_flags (0);
-
   set_default_std_flags ();
 
   /* Initialize cpp-related options.  */
@@ -260,6 +253,13 @@ gfc_post_options (const char **pfilename)
   char *source_path;
   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.  */
+  SET_OPTION_IF_UNSET (&global_options, &global_options_set,
+                      cpp_warn_missing_include_dirs, 1);
+  gfc_check_include_dirs ();
+
   /* Finalize DEC flags.  */
   post_dec_flags (flag_dec);
 
@@ -339,10 +339,10 @@ 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);
+      gfc_add_include_path (source_path, true, true, true, false);
     }
   else
-    gfc_add_include_path (".", true, true, true);
+    gfc_add_include_path (".", true, true, true, false);
 
   if (canon_source_file != gfc_source_file)
     free (CONST_CAST (char *, canon_source_file));
@@ -511,7 +511,7 @@ gfc_handle_module_path_options (const char *arg)
   gfc_option.module_dir = XCNEWVEC (char, strlen (arg) + 2);
   strcpy (gfc_option.module_dir, arg);
 
-  gfc_add_include_path (gfc_option.module_dir, true, false, true);
+  gfc_add_include_path (gfc_option.module_dir, true, false, true, true);
 
   strcat (gfc_option.module_dir, "/");
 }
@@ -690,7 +690,7 @@ gfc_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value,
         with intrinsic modules.  Do no warn because during testing
         without an installed compiler, we would get lots of bogus
         warnings for a missing include directory.  */
-      gfc_add_include_path (arg, false, false, false);
+      gfc_add_include_path (arg, false, false, false, true);
 
       gfc_add_intrinsic_modules_path (arg);
       break;
@@ -737,7 +737,7 @@ gfc_handle_option (size_t scode, const char *arg, HOST_WIDE_INT value,
       break;
 
     case OPT_I:
-      gfc_add_include_path (arg, true, false, true);
+      gfc_add_include_path (arg, true, false, true, true);
       break;
 
     case OPT_J:
index 39db0994b62d0e29168dc572a7bf38c15ada748a..6fe74bd5b8d26b8962d9d90a9f40fe6d207c01b5 100644 (file)
@@ -298,17 +298,69 @@ gfc_scanner_done_1 (void)
     }
 }
 
+static bool
+gfc_do_check_include_dir (const char *path, bool warn)
+{
+  struct stat st;
+  if (stat (path, &st))
+    {
+      if (errno != ENOENT)
+       gfc_warning_now (0, "Include directory %qs: %s",
+                        path, xstrerror(errno));
+      else if (warn && !gfc_cpp_enabled ())
+         gfc_warning_now (OPT_Wmissing_include_dirs,
+                            "Nonexistent include directory %qs", path);
+      return false;
+    }
+  else if (!S_ISDIR (st.st_mode))
+    {
+      gfc_fatal_error ("%qs is not a directory", path);
+      return false;
+    }
+  return true;
+}
+
+/* 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_directorylist *prev, *q, *n;
+  prev = NULL;
+  n = *list;
+  while (n)
+    {
+      q = n; n = n->next;
+      if (gfc_do_check_include_dir (q->path, q->warn))
+       {
+         prev = q;
+         continue;
+       }
+      if (prev == NULL)
+       *list = n;
+      else
+       prev->next = n;
+      free (q->path);
+      free (q);
+    }
+}
+
+void
+gfc_check_include_dirs ()
+{
+  gfc_do_check_include_dirs (&include_dirs);
+  gfc_do_check_include_dirs (&intrinsic_modules_dirs);
+}
 
 /* Adds path to the list pointed to by list.  */
 
 static void
 add_path_to_list (gfc_directorylist **list, const char *path,
-                 bool use_for_modules, bool head, bool warn)
+                 bool use_for_modules, bool head, bool warn, bool defer_warn)
 {
   gfc_directorylist *dir;
   const char *p;
   char *q;
-  struct stat st;
   size_t len;
   int i;
   
@@ -326,21 +378,8 @@ add_path_to_list (gfc_directorylist **list, const char *path,
   while (i >=0 && IS_DIR_SEPARATOR (q[i]))
     q[i--] = '\0';
 
-  if (stat (q, &st))
-    {
-      if (errno != ENOENT)
-       gfc_warning_now (0, "Include directory %qs: %s", path,
-                        xstrerror(errno));
-      else if (warn)
-       gfc_warning_now (OPT_Wmissing_include_dirs,
-                        "Nonexistent include directory %qs", path);
-      return;
-    }
-  else if (!S_ISDIR (st.st_mode))
-    {
-      gfc_fatal_error ("%qs is not a directory", path);
-      return;
-    }
+  if (!defer_warn && !gfc_do_check_include_dir (q, warn))
+    return;
 
   if (head || *list == NULL)
     {
@@ -362,17 +401,20 @@ add_path_to_list (gfc_directorylist **list, const char *path,
   if (head)
     *list = dir;
   dir->use_for_modules = use_for_modules;
+  dir->warn = warn;
   dir->path = XCNEWVEC (char, strlen (p) + 2);
   strcpy (dir->path, p);
   strcat (dir->path, "/");     /* make '/' last character */
 }
 
+/* defer_warn is set to true while parsing the commandline.  */
 
 void
 gfc_add_include_path (const char *path, bool use_for_modules, bool file_dir,
-                     bool warn)
+                     bool warn, bool defer_warn)
 {
-  add_path_to_list (&include_dirs, path, use_for_modules, file_dir, warn);
+  add_path_to_list (&include_dirs, path, use_for_modules, file_dir, warn,
+                   defer_warn);
 
   /* For '#include "..."' these directories are automatically searched.  */
   if (!file_dir)
@@ -383,7 +425,7 @@ gfc_add_include_path (const char *path, bool use_for_modules, bool file_dir,
 void
 gfc_add_intrinsic_modules_path (const char *path)
 {
-  add_path_to_list (&intrinsic_modules_dirs, path, true, false, false);
+  add_path_to_list (&intrinsic_modules_dirs, path, true, false, false, false);
 }
 
 
index 0bad63f4ffb877deab989d1bdca4c8fa653d506e..8782fe6ccc543e74560085e49a5210fe79cd1e22 100644 (file)
@@ -23,8 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 typedef struct gfc_directorylist
 {
   char *path;
-  bool use_for_modules;
   struct gfc_directorylist *next;
+  bool use_for_modules, warn;
 }
 gfc_directorylist;
 
diff --git a/gcc/testsuite/gfortran.dg/include_14.f90 b/gcc/testsuite/gfortran.dg/include_14.f90
new file mode 100644 (file)
index 0000000..b306b2c
--- /dev/null
@@ -0,0 +1,5 @@
+! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar" }
+end
+
+! { dg-warning "/fdaf/: No such file or directory" "" { target *-*-* } 0 }
+! { dg-warning "bar: No such file or directory" "" { target *-*-* } 0 }
diff --git a/gcc/testsuite/gfortran.dg/include_15.f90 b/gcc/testsuite/gfortran.dg/include_15.f90
new file mode 100644 (file)
index 0000000..4944282
--- /dev/null
@@ -0,0 +1,5 @@
+! { dg-additional-options "-cpp -idirafter /fdaf/ -I 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 }
diff --git a/gcc/testsuite/gfortran.dg/include_16.f90 b/gcc/testsuite/gfortran.dg/include_16.f90
new file mode 100644 (file)
index 0000000..45794f2
--- /dev/null
@@ -0,0 +1,2 @@
+! { dg-additional-options "-cpp -idirafter /fdaf/ -I bar -Wno-missing-include-dirs" }
+end
diff --git a/gcc/testsuite/gfortran.dg/include_17.f90 b/gcc/testsuite/gfortran.dg/include_17.f90
new file mode 100644 (file)
index 0000000..0ed5c86
--- /dev/null
@@ -0,0 +1,4 @@
+! { dg-do compile }
+! { dg-options "-I foo-bar -Wno-missing-include-dirs" }
+end 
+
diff --git a/gcc/testsuite/gfortran.dg/include_18.f90 b/gcc/testsuite/gfortran.dg/include_18.f90
new file mode 100644 (file)
index 0000000..ca69df3
--- /dev/null
@@ -0,0 +1,3 @@
+! { dg-do compile }
+! { dg-options "-I nothere -Wno-missing-include-dirs" }
+end 
diff --git a/gcc/testsuite/gfortran.dg/include_19.f90 b/gcc/testsuite/gfortran.dg/include_19.f90
new file mode 100644 (file)
index 0000000..2a06817
--- /dev/null
@@ -0,0 +1,4 @@
+! { dg-do compile }
+! { dg-options "-J foobar/foo -Wno-missing-include-dirs" }
+program main
+end program main
diff --git a/gcc/testsuite/gfortran.dg/include_20.f90 b/gcc/testsuite/gfortran.dg/include_20.f90
new file mode 100644 (file)
index 0000000..4f8fdc6
--- /dev/null
@@ -0,0 +1,5 @@
+! { dg-do compile }
+! { dg-options "-J foobar/foo" }
+program main
+end program main
+! { dg-warning "Nonexistent include directory" "" { target *-*-* } 0 }
diff --git a/gcc/testsuite/gfortran.dg/include_21.f90 b/gcc/testsuite/gfortran.dg/include_21.f90
new file mode 100644 (file)
index 0000000..40bc598
--- /dev/null
@@ -0,0 +1,26 @@
+# 1 "../../../trunk/libgfortran/generated/_abs_c4.F90"
+# 1 "C:\\msys\\1.0.10\\home\\FX\\ibin\\i586-pc-mingw32\\libgfortran//"
+# 1 "<built-in>"
+# 1 "<command-line>"
+# 1 "../../../trunk/libgfortran/generated/_abs_c4.F90"
+!   Comment here
+
+# 1 "./config.h" 1
+
+# 37 "../../../trunk/libgfortran/generated/_abs_c4.F90" 2
+
+# 1 "./kinds.inc" 1
+# 38 "../../../trunk/libgfortran/generated/_abs_c4.F90" 2
+
+# 1 "./c99_protos.inc" 1
+# 39 "../../../trunk/libgfortran/generated/_abs_c4.F90" 2
+
+elemental function abs_c4 (parm)
+   complex (kind=4), intent (in) :: parm
+   real (kind=4) :: abs_c4
+
+   abs_c4 = abs (parm)
+end function
+
+! { dg-do compile }
+! { dg-options "-fpreprocessed -g3 -Wno-missing-include-dirs" }
index f5bb085d32112087471b6fcdd3202b2d84af519d..3e3be1b7bd5ab515379389732dc7faa64c858d09 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do compile }
 ! { dg-options "-I gfortran.log" }
-! { dg-error "is not a directory" "" { target *-*-* } 0 }
+! { dg-warning "Include directory 'gfortran.log/': Not a directory" "" { target *-*-* } 0 }
 ! { dg-prune-output "compilation terminated." }
 end 
 
index 4810b9b032e3bb96076ea34c3ffb6779b5b41704..350159aa4fed1b6987a7a0c84ff5188642d78d0a 100755 (executable)
@@ -5985,7 +5985,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"
+  AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring -Wno-missing-include-dirs"
   ## 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 a77509801e68b88ba9b01b4fd6c7fbc76fbebedd..a3550b4e5d07d802aa346fb34992577aa713dc3e 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"
+  AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring -Wno-missing-include-dirs"
   ## 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 eb701311b6a05b1ce943d4087adeee5918a7ffe6..912dd2a743e89fec4378e75943a1e377e96cb87f 100644 (file)
@@ -20,6 +20,9 @@ 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 7365b320668aad63130004771fd6b5d3f4f440d2..22e91eca256f4c4ddf0becae128a0d1db426d8d7 100644 (file)
@@ -22,6 +22,9 @@ 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)$}