[PATCH] Include path enumeration
authorNathan Sidwell <nathan@acm.org>
Wed, 11 Oct 2017 18:09:59 +0000 (18:09 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Wed, 11 Oct 2017 18:09:59 +0000 (18:09 +0000)
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00693.html
gcc/
* incpath.h (enum incpath_kind): Name enum, prefix values.
(add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
* incpath.c (heads, tails): Use INC_MAX.
(add_env_var_paths, add_standard_paths): Use incpath_kind.
(merge_include_chains, split_quote_chain,
register_include_chains): Update incpath_kind names.
(add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
* config/darwin-c.c (add_system_framework_path): Update incpath_kind
names.
(add_framework_path, darwin_register_objc_includes): Likewise.
* config/vms/vms-c.c (vms_c_register_includes): Likewise.
gcc/c-family/
* c-opts.c (add_prefixed_path): Change chain to incpath_kind.
(c_common_handle_option): Update incpath_kind names.
gcc/fortran/
* cpp.c (gfc_cpp_add_include_path): Update incpath_e names.
(gfc_cpp_add_include_path_after): Likewise.

From-SVN: r253654

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/config/darwin-c.c
gcc/config/vms/vms-c.c
gcc/fortran/ChangeLog
gcc/fortran/cpp.c
gcc/incpath.c
gcc/incpath.h

index 6f148dc051c111dba680d7c940b72a28356facc2..cb3a961b86ac4449babc05b529fc8c4b46a08e0c 100644 (file)
@@ -1,3 +1,17 @@
+2017-10-11  Nathan Sidwell  <nathan@acm.org>
+
+       * incpath.h (enum incpath_kind): Name enum, prefix values.
+       (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
+       * incpath.c (heads, tails): Use INC_MAX.
+       (add_env_var_paths, add_standard_paths): Use incpath_kind.
+       (merge_include_chains, split_quote_chain,
+       register_include_chains): Update incpath_kind names.
+       (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
+       * config/darwin-c.c (add_system_framework_path): Update incpath_kind
+       names.
+       (add_framework_path, darwin_register_objc_includes): Likewise.
+       * config/vms/vms-c.c (vms_c_register_includes): Likewise.
+
 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
index 51e1b771aad9841e5c6193310422a1a1937ce7fe..da40ab310026be10a706c033cfd1b7057a85ea15 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-11  Nathan Sidwell  <nathan@acm.org>
+
+       * c-opts.c (add_prefixed_path): Change chain to incpath_kind.
+       (c_common_handle_option): Update incpath_kind names.
+
 2017-10-11  Martin Liska  <mliska@suse.cz>
 
        PR sanitizer/82490
index 3662aa37be69660c7d1d15dde60f008ec1205104..6bd535532d3d315a07194bf2ebd656327321ffa0 100644 (file)
@@ -118,7 +118,7 @@ static void set_std_c11 (int);
 static void check_deps_environment_vars (void);
 static void handle_deferred_opts (void);
 static void sanitize_cpp_opts (void);
-static void add_prefixed_path (const char *, size_t);
+static void add_prefixed_path (const char *, incpath_kind);
 static void push_command_line_include (void);
 static void cb_file_change (cpp_reader *, const line_map_ordinary *);
 static void cb_dir_change (cpp_reader *, const char *);
@@ -316,7 +316,7 @@ c_common_handle_option (size_t scode, const char *arg, int value,
 
     case OPT_I:
       if (strcmp (arg, "-"))
-       add_path (xstrdup (arg), BRACKET, 0, true);
+       add_path (xstrdup (arg), INC_BRACKET, 0, true);
       else
        {
          if (quote_chain_split)
@@ -550,7 +550,7 @@ c_common_handle_option (size_t scode, const char *arg, int value,
       break;
 
     case OPT_idirafter:
-      add_path (xstrdup (arg), AFTER, 0, true);
+      add_path (xstrdup (arg), INC_AFTER, 0, true);
       break;
 
     case OPT_imacros:
@@ -567,7 +567,7 @@ c_common_handle_option (size_t scode, const char *arg, int value,
       break;
 
     case OPT_iquote:
-      add_path (xstrdup (arg), QUOTE, 0, true);
+      add_path (xstrdup (arg), INC_QUOTE, 0, true);
       break;
 
     case OPT_isysroot:
@@ -575,15 +575,15 @@ c_common_handle_option (size_t scode, const char *arg, int value,
       break;
 
     case OPT_isystem:
-      add_path (xstrdup (arg), SYSTEM, 0, true);
+      add_path (xstrdup (arg), INC_SYSTEM, 0, true);
       break;
 
     case OPT_iwithprefix:
-      add_prefixed_path (arg, SYSTEM);
+      add_prefixed_path (arg, INC_SYSTEM);
       break;
 
     case OPT_iwithprefixbefore:
-      add_prefixed_path (arg, BRACKET);
+      add_prefixed_path (arg, INC_BRACKET);
       break;
 
     case OPT_lang_asm:
@@ -1326,7 +1326,7 @@ sanitize_cpp_opts (void)
 
 /* Add include path with a prefix at the front of its name.  */
 static void
-add_prefixed_path (const char *suffix, size_t chain)
+add_prefixed_path (const char *suffix, incpath_kind chain)
 {
   char *path;
   const char *prefix;
index 157c2fd597dcfd2daba06119e7decd7402aa09a0..91f08a0dceea579ef6ecc27dba3a38c614b41363 100644 (file)
@@ -433,7 +433,7 @@ add_system_framework_path (char *path)
   p->construct = framework_construct_pathname;
   using_frameworks = 1;
 
-  add_cpp_dir_path (p, SYSTEM);
+  add_cpp_dir_path (p, INC_SYSTEM);
 }
 
 /* Add PATH to the bracket includes. PATH must be malloc-ed and
@@ -451,7 +451,7 @@ add_framework_path (char *path)
   p->construct = framework_construct_pathname;
   using_frameworks = 1;
 
-  add_cpp_dir_path (p, BRACKET);
+  add_cpp_dir_path (p, INC_BRACKET);
 }
 
 static const char *framework_defaults [] =
@@ -488,7 +488,7 @@ darwin_register_objc_includes (const char *sysroot, const char *iprefix,
        {
          str = concat (iprefix, fname + len, NULL);
           /* FIXME: wrap the headers for C++awareness.  */
-         add_path (str, SYSTEM, /*c++aware=*/false, false);
+         add_path (str, INC_SYSTEM, /*c++aware=*/false, false);
        }
 
       /* Should this directory start with the sysroot?  */
@@ -497,7 +497,7 @@ darwin_register_objc_includes (const char *sysroot, const char *iprefix,
       else
        str = update_path (fname, "");
 
-      add_path (str, SYSTEM, /*c++aware=*/false, false);
+      add_path (str, INC_SYSTEM, /*c++aware=*/false, false);
     }
 }
 
index c666ad18065b35d1ac0f8b4f6d8f0c2f01834567..278c8e236be5e494f8111298ebc3f7074d60eb23 100644 (file)
@@ -418,7 +418,7 @@ vms_c_register_includes (const char *sysroot,
   if (!stdinc)
     return;
 
-  for (dir = get_added_cpp_dirs (SYSTEM); dir != NULL; dir = dir->next)
+  for (dir = get_added_cpp_dirs (INC_SYSTEM); dir != NULL; dir = dir->next)
     {
       const char * const *lib;
       for (lib = vms_std_modules; *lib != NULL; lib++)
@@ -441,7 +441,7 @@ vms_c_register_includes (const char *sysroot,
               p->sysp = 1;
               p->construct = vms_construct_include_filename;
               p->user_supplied_p = 0;
-              add_cpp_dir_path (p, SYSTEM);
+              add_cpp_dir_path (p, INC_SYSTEM);
             }
           else
             free (path);
index 926bee73529be45dc7e46f4f31bdb36c0c26e90f..a37d16e51fa705e09ed42b4464e17622c5f3e618 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-11  Nathan Sidwell  <nathan@acm.org>
+
+       * cpp.c (gfc_cpp_add_include_path): Update incpath_e names.
+       (gfc_cpp_add_include_path_after): Likewise.
+
 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
 
        * target-memory.c (gfc_interpret_logical): Use wi::to_wide when
index 4d1b56a00450d576370246242173e0feea38774a..af8a69ca3f7653e6b7c6b6b639daa8c31deec27d 100644 (file)
@@ -683,14 +683,14 @@ gfc_cpp_add_include_path (char *path, bool user_supplied)
      include path. Fortran does not define any system include paths.  */
   int cxx_aware = 0;
 
-  add_path (path, BRACKET, cxx_aware, user_supplied);
+  add_path (path, INC_BRACKET, cxx_aware, user_supplied);
 }
 
 void
 gfc_cpp_add_include_path_after (char *path, bool user_supplied)
 {
   int cxx_aware = 0;
-  add_path (path, AFTER, cxx_aware, user_supplied);
+  add_path (path, INC_AFTER, cxx_aware, user_supplied);
 }
 
 void
index 47942e2547dbe24883af7aa1b6a7f716c82dcb36..a2ee69f428cebe19f0fccf0fbe2a95d8f10bfea2 100644 (file)
@@ -46,7 +46,7 @@
 
 static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
 
-static void add_env_var_paths (const char *, int);
+static void add_env_var_paths (const char *, incpath_kind);
 static void add_standard_paths (const char *, const char *, const char *, int);
 static void free_path (struct cpp_dir *, int);
 static void merge_include_chains (const char *, cpp_reader *, int);
@@ -56,8 +56,9 @@ static struct cpp_dir *remove_duplicates (cpp_reader *, struct cpp_dir *,
                                           struct cpp_dir *, int);
 
 /* Include chains heads and tails.  */
-static struct cpp_dir *heads[4];
-static struct cpp_dir *tails[4];
+static struct cpp_dir *heads[INC_MAX];
+static struct cpp_dir *tails[INC_MAX];
+
 static bool quote_ignores_source_dir;
 enum { REASON_QUIET = 0, REASON_NOENT, REASON_DUP, REASON_DUP_SYS };
 
@@ -92,7 +93,7 @@ free_path (struct cpp_dir *path, int reason)
 /* Read ENV_VAR for a PATH_SEPARATOR-separated list of file names; and
    append all the names to the search path CHAIN.  */
 static void
-add_env_var_paths (const char *env_var, int chain)
+add_env_var_paths (const char *env_var, incpath_kind chain)
 {
   char *p, *q, *path;
 
@@ -116,7 +117,7 @@ add_env_var_paths (const char *env_var, int chain)
          path[q - p] = '\0';
        }
 
-      add_path (path, chain, chain == SYSTEM, false);
+      add_path (path, chain, chain == INC_SYSTEM, false);
     }
 }
 
@@ -159,7 +160,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
                      str = reconcat (str, str, dir_separator_str,
                                      imultiarch, NULL);
                    }
-                 add_path (str, SYSTEM, p->cxx_aware, false);
+                 add_path (str, INC_SYSTEM, p->cxx_aware, false);
                }
            }
        }
@@ -225,7 +226,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
              str = reconcat (str, str, dir_separator_str, imultiarch, NULL);
            }
 
-         add_path (str, SYSTEM, p->cxx_aware, false);
+         add_path (str, INC_SYSTEM, p->cxx_aware, false);
        }
     }
 }
@@ -349,29 +350,32 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
   /* Add the sysroot to user-supplied paths starting with "=".  */
   if (sysroot)
     {
-      add_sysroot_to_chain (sysroot, QUOTE);
-      add_sysroot_to_chain (sysroot, BRACKET);
-      add_sysroot_to_chain (sysroot, SYSTEM);
-      add_sysroot_to_chain (sysroot, AFTER);
+      add_sysroot_to_chain (sysroot, INC_QUOTE);
+      add_sysroot_to_chain (sysroot, INC_BRACKET);
+      add_sysroot_to_chain (sysroot, INC_SYSTEM);
+      add_sysroot_to_chain (sysroot, INC_AFTER);
     }
 
   /* Join the SYSTEM and AFTER chains.  Remove duplicates in the
      resulting SYSTEM chain.  */
-  if (heads[SYSTEM])
-    tails[SYSTEM]->next = heads[AFTER];
+  if (heads[INC_SYSTEM])
+    tails[INC_SYSTEM]->next = heads[INC_AFTER];
   else
-    heads[SYSTEM] = heads[AFTER];
-  heads[SYSTEM] = remove_duplicates (pfile, heads[SYSTEM], 0, 0, verbose);
+    heads[INC_SYSTEM] = heads[INC_AFTER];
+  heads[INC_SYSTEM]
+    = remove_duplicates (pfile, heads[INC_SYSTEM], 0, 0, verbose);
 
   /* Remove duplicates from BRACKET that are in itself or SYSTEM, and
      join it to SYSTEM.  */
-  heads[BRACKET] = remove_duplicates (pfile, heads[BRACKET], heads[SYSTEM],
-                                     heads[SYSTEM], verbose);
+  heads[INC_BRACKET]
+    = remove_duplicates (pfile, heads[INC_BRACKET], heads[INC_SYSTEM],
+                        heads[INC_SYSTEM], verbose);
 
   /* Remove duplicates from QUOTE that are in itself or SYSTEM, and
      join it to BRACKET.  */
-  heads[QUOTE] = remove_duplicates (pfile, heads[QUOTE], heads[SYSTEM],
-                                   heads[BRACKET], verbose);
+  heads[INC_QUOTE]
+    = remove_duplicates (pfile, heads[INC_QUOTE], heads[INC_SYSTEM],
+                        heads[INC_BRACKET], verbose);
 
   /* If verbose, print the list of dirs to search.  */
   if (verbose)
@@ -379,9 +383,9 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
       struct cpp_dir *p;
 
       fprintf (stderr, _("#include \"...\" search starts here:\n"));
-      for (p = heads[QUOTE];; p = p->next)
+      for (p = heads[INC_QUOTE];; p = p->next)
        {
-         if (p == heads[BRACKET])
+         if (p == heads[INC_BRACKET])
            fprintf (stderr, _("#include <...> search starts here:\n"));
          if (!p)
            break;
@@ -398,14 +402,14 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
 void
 split_quote_chain (void)
 {
-  if (heads[QUOTE])
-    free_path (heads[QUOTE], REASON_QUIET);
-  if (tails[QUOTE])
-    free_path (tails[QUOTE], REASON_QUIET);
-  heads[QUOTE] = heads[BRACKET];
-  tails[QUOTE] = tails[BRACKET];
-  heads[BRACKET] = NULL;
-  tails[BRACKET] = NULL;
+  if (heads[INC_QUOTE])
+    free_path (heads[INC_QUOTE], REASON_QUIET);
+  if (tails[INC_QUOTE])
+    free_path (tails[INC_QUOTE], REASON_QUIET);
+  heads[INC_QUOTE] = heads[INC_BRACKET];
+  tails[INC_QUOTE] = tails[INC_BRACKET];
+  heads[INC_BRACKET] = NULL;
+  tails[INC_BRACKET] = NULL;
   /* This is NOT redundant.  */
   quote_ignores_source_dir = true;
 }
@@ -413,7 +417,7 @@ split_quote_chain (void)
 /* Add P to the chain specified by CHAIN.  */
 
 void
-add_cpp_dir_path (cpp_dir *p, int chain)
+add_cpp_dir_path (cpp_dir *p, incpath_kind chain)
 {
   if (tails[chain])
     tails[chain]->next = p;
@@ -425,7 +429,7 @@ add_cpp_dir_path (cpp_dir *p, int chain)
 /* Add PATH to the include chain CHAIN. PATH must be malloc-ed and
    NUL-terminated.  */
 void
-add_path (char *path, int chain, int cxx_aware, bool user_supplied_p)
+add_path (char *path, incpath_kind chain, int cxx_aware, bool user_supplied_p)
 {
   cpp_dir *p;
 
@@ -450,7 +454,7 @@ add_path (char *path, int chain, int cxx_aware, bool user_supplied_p)
 #ifndef INO_T_EQ
   p->canonical_name = lrealpath (path);
 #endif
-  if (chain == SYSTEM || chain == AFTER)
+  if (chain == INC_SYSTEM || chain == INC_AFTER)
     p->sysp = 1 + !cxx_aware;
   else
     p->sysp = 0;
@@ -480,8 +484,8 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
 
   /* CPATH and language-dependent environment variables may add to the
      include chain.  */
-  add_env_var_paths ("CPATH", BRACKET);
-  add_env_var_paths (lang_env_vars[idx], SYSTEM);
+  add_env_var_paths ("CPATH", INC_BRACKET);
+  add_env_var_paths (lang_env_vars[idx], INC_SYSTEM);
 
   target_c_incpath.extra_pre_includes (sysroot, iprefix, stdinc);
 
@@ -493,14 +497,14 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
 
   merge_include_chains (sysroot, pfile, verbose);
 
-  cpp_set_include_chains (pfile, heads[QUOTE], heads[BRACKET],
+  cpp_set_include_chains (pfile, heads[INC_QUOTE], heads[INC_BRACKET],
                          quote_ignores_source_dir);
 }
 
 /* Return the current chain of cpp dirs.  */
 
 struct cpp_dir *
-get_added_cpp_dirs (int chain)
+get_added_cpp_dirs (incpath_kind chain)
 {
   return heads[chain];
 }
index 39a29cdd47eb065b7ac16b0742a41d3824d91ca4..32c3dceb78b1a975c5aad3c21c53f79928e27d60 100644 (file)
 #ifndef GCC_INCPATH_H
 #define GCC_INCPATH_H
 
+/* Various fragments of include path.  */
+enum incpath_kind {
+  INC_QUOTE = 0, /* include "foo" */
+  INC_BRACKET,   /* include <foo> */
+  INC_SYSTEM,    /* sysinclude */
+  INC_AFTER,   /* post-sysinclude.  */
+  INC_MAX
+};
+
 extern void split_quote_chain (void);
-extern void add_path (char *, int, int, bool);
+extern void add_path (char *, incpath_kind, int, bool);
 extern void register_include_chains (cpp_reader *, const char *,
                                     const char *, const char *,
                                     int, int, int);
-extern void add_cpp_dir_path (struct cpp_dir *, int);
-extern struct cpp_dir *get_added_cpp_dirs (int);
+extern void add_cpp_dir_path (struct cpp_dir *, incpath_kind);
+extern struct cpp_dir *get_added_cpp_dirs (incpath_kind);
 
 struct target_c_incpath_s {
   /* Do extra includes processing.  STDINC is false iff -nostdinc was given.  */
@@ -34,6 +43,4 @@ struct target_c_incpath_s {
 
 extern struct target_c_incpath_s target_c_incpath;
 
-enum { QUOTE = 0, BRACKET, SYSTEM, AFTER };
-
 #endif /* GCC_INCPATH_H */