On Fri, Nov 28, 2025 at 07:04:42PM +0530, Jason Merrill wrote:
> Tested x86_64-pc-linux-gnu, OK for trunk? I also checked that a darwin
> cross-compiler builds.
>
> This is a cleanup for my #include <vector> -> import <bits/stdc++.h> patch,
> since the new hook wants to query path/name/dir.
>
> -- 8< --
>
> Back in r78875 mrs added cpp_get_path/dir accessors for _cpp_file in order
> to interface with the darwin framework system. But now I notice that the
> latter duplicates the better-named _cpp_get_file_dir, and I'm inclined to
> rename the former to match.
>
> Perhaps we should drop the initial underscore since these are no
> longer internal interfaces; OTOH, _cpp_hashnode_value and
> _cpp_backup_tokens still have the initial underscore in cpplib.h.
>
> libcpp/ChangeLog:
>
> * include/cpplib.h (cpp_get_path, cpp_get_dir): Remove.
> (_cpp_get_file_path, _cpp_get_file_name, _cpp_get_file_stat)
> (_cpp_get_file_dir): Move prototypes from...
> * internal.h: ...here.
> * files.cc (_cpp_get_file_path): Rename from...
> (cpp_get_path): ...this.
> (cpp_get_dir): Remove.
>
> gcc/ChangeLog:
>
> * config/darwin-c.cc (find_subframework_header): Use
> _cpp_get_file_*.
> ---
> libcpp/include/cpplib.h | 6 ++++--
> libcpp/internal.h | 3 ---
> gcc/config/darwin-c.cc | 7 ++++---
> libcpp/files.cc | 28 ++++++++++------------------
> 4 files changed, 18 insertions(+), 26 deletions(-)
>
> diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
> index 5190ff7d08f..16f030c82f3 100644
> --- a/libcpp/include/cpplib.h
> +++ b/libcpp/include/cpplib.h
> @@ -1563,8 +1563,10 @@ extern void cpp_make_system_header (cpp_reader *, int,
> int);
> extern bool cpp_push_include (cpp_reader *, const char *);
> extern bool cpp_push_default_include (cpp_reader *, const char *);
> extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *);
> -extern const char *cpp_get_path (struct _cpp_file *);
> -extern cpp_dir *cpp_get_dir (struct _cpp_file *);
> +extern const char *_cpp_get_file_path (_cpp_file *);
> +extern const char *_cpp_get_file_name (_cpp_file *);
> +extern struct stat *_cpp_get_file_stat (_cpp_file *);
> +extern struct cpp_dir *_cpp_get_file_dir (_cpp_file *);
> extern cpp_buffer *cpp_get_buffer (cpp_reader *);
> extern struct _cpp_file *cpp_get_file (cpp_buffer *);
> extern cpp_buffer *cpp_get_prev (cpp_buffer *);
> diff --git a/libcpp/internal.h b/libcpp/internal.h
> index bcf55593b0c..ae985241415 100644
> --- a/libcpp/internal.h
> +++ b/libcpp/internal.h
> @@ -788,9 +788,6 @@ extern void _cpp_pop_file_buffer (cpp_reader *, struct
> _cpp_file *,
> const unsigned char *);
> extern bool _cpp_save_file_entries (cpp_reader *pfile, FILE *f);
> extern bool _cpp_read_file_entries (cpp_reader *, FILE *);
> -extern const char *_cpp_get_file_name (_cpp_file *);
> -extern struct stat *_cpp_get_file_stat (_cpp_file *);
> -extern struct cpp_dir *_cpp_get_file_dir (_cpp_file *);
> extern bool _cpp_has_header (cpp_reader *, const char *, int,
> enum include_type);
>
> diff --git a/gcc/config/darwin-c.cc b/gcc/config/darwin-c.cc
> index 7257015cd08..c3a1cd56561 100644
> --- a/gcc/config/darwin-c.cc
> +++ b/gcc/config/darwin-c.cc
> @@ -537,17 +537,18 @@ find_subframework_header (cpp_reader *pfile, const char
> *header, cpp_dir **dirp)
> const char *n;
>
> for (b = cpp_get_buffer (pfile);
> - b && cpp_get_file (b) && cpp_get_path (cpp_get_file (b));
> + b && cpp_get_file (b) && _cpp_get_file_path (cpp_get_file (b));
> b = cpp_get_prev (b))
> {
> - n = find_subframework_file (fname, cpp_get_path (cpp_get_file (b)));
> + n = find_subframework_file (fname,
> + _cpp_get_file_path (cpp_get_file (b)));
> if (n)
> {
> /* Logically, the place where we found the subframework is
> the place where we found the Framework that contains the
> subframework. This is useful for tracking wether or not
> we are in a system header. */
> - *dirp = cpp_get_dir (cpp_get_file (b));
> + *dirp = _cpp_get_file_dir (cpp_get_file (b));
> return n;
> }
> }
> diff --git a/libcpp/files.cc b/libcpp/files.cc
> index d80c4bfd907..c195fe07d35 100644
> --- a/libcpp/files.cc
> +++ b/libcpp/files.cc
> @@ -2335,6 +2335,16 @@ _cpp_get_file_name (_cpp_file *file)
> return file->name;
> }
>
> +/* Get the path associated with the _cpp_file F. The path includes
> + the base name from the include directive and the directory it was
> + found in via the search path. */
> +
> +const char *
> +_cpp_get_file_path (struct _cpp_file *f)
I'd drop the "struct" here.
LGTM otherwise.
> +{
> + return f->path;
> +}
> +
> /* Inteface to file statistics record in _cpp_file structure. */
> struct stat *
> _cpp_get_file_stat (_cpp_file *file)
> @@ -2574,24 +2584,6 @@ validate_pch (cpp_reader *pfile, _cpp_file *file,
> const char *pchname)
> return valid;
> }
>
> -/* Get the path associated with the _cpp_file F. The path includes
> - the base name from the include directive and the directory it was
> - found in via the search path. */
> -
> -const char *
> -cpp_get_path (struct _cpp_file *f)
> -{
> - return f->path;
> -}
> -
> -/* Get the directory associated with the _cpp_file F. */
> -
> -cpp_dir *
> -cpp_get_dir (struct _cpp_file *f)
> -{
> - return f->dir;
> -}
> -
> /* Get the cpp_buffer currently associated with the cpp_reader
> PFILE. */
>
>
> base-commit: ca19686a6b87696c0ecea5e9fce825b5e5e10144
> --
> 2.51.0
>
Marek