[gcc/devel/lto-offload] preprocessor: add_path simplifications

John Ravi jjravi@gcc.gnu.org
Wed Aug 19 20:44:07 GMT 2020


https://gcc.gnu.org/g:18d96339d26e31f06707fe234040bde45b6de70b

commit 18d96339d26e31f06707fe234040bde45b6de70b
Author: Nathan Sidwell <nathan@acm.org>
Date:   Wed Jul 22 08:01:45 2020 -0700

    preprocessor: add_path simplifications
    
    I noticed add_path was calling strlen more than once on the same
    string.  Let's not do that.
    
            gcc/
            * incpath.c (add_path): Avoid multiple strlen calls.

Diff:
---
 gcc/incpath.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gcc/incpath.c b/gcc/incpath.c
index 8a2bda00f80..8437939bf1e 100644
--- a/gcc/incpath.c
+++ b/gcc/incpath.c
@@ -52,8 +52,8 @@ static void free_path (struct cpp_dir *, int);
 static void merge_include_chains (const char *, cpp_reader *, int);
 static void add_sysroot_to_chain (const char *, int);
 static struct cpp_dir *remove_duplicates (cpp_reader *, struct cpp_dir *,
-					   struct cpp_dir *,
-					   struct cpp_dir *, int);
+					  struct cpp_dir *, struct cpp_dir *,
+					  int);
 
 /* Include chains heads and tails.  */
 static struct cpp_dir *heads[INC_MAX];
@@ -432,6 +432,7 @@ void
 add_path (char *path, incpath_kind chain, int cxx_aware, bool user_supplied_p)
 {
   cpp_dir *p;
+  size_t pathlen = strlen (path);
 
 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
   /* Remove unnecessary trailing slashes.  On some versions of MS
@@ -439,18 +440,19 @@ add_path (char *path, incpath_kind chain, int cxx_aware, bool user_supplied_p)
      On newer versions, stat() does not recognize a directory that ends
      in a '\\' or '/', unless it is a drive root dir, such as "c:/",
      where it is obligatory.  */
-  int pathlen = strlen (path);
   char* end = path + pathlen - 1;
   /* Preserve the lead '/' or lead "c:/".  */
   char* start = path + (pathlen > 2 && path[1] == ':' ? 3 : 1);
 
   for (; end > start && IS_DIR_SEPARATOR (*end); end--)
     *end = 0;
+  pathlen = end - path;
 #endif
 
   p = XNEW (cpp_dir);
   p->next = NULL;
   p->name = path;
+  p->len = pathlen;
 #ifndef INO_T_EQ
   p->canonical_name = lrealpath (path);
 #endif


More information about the Gcc-cvs mailing list