On Thu, 21 Dec 2023, Lewis Hyatt wrote: > In libcpp/files.cc, the function _cpp_has_header(), which implements > __has_include and __has_include_next, does not check for a NULL return value > from search_path_head(), leading to an ICE tripping an assert when > _cpp_find_file() tries to use it. Fix it by checking for that case and > silently returning false instead. > > As suggested by the PR author, it is easiest to make a testcase by using > the -idirafter option. To enable that, also modify the dg-additional-options > testsuite procedure to make the global $srcdir available, since -idirafter > requires the full path. > > libcpp/ChangeLog: > > PR preprocessor/80755 > * files.cc (search_path_head): Add SUPPRESS_DIAGNOSTIC argument > defaulting to false. > (_cpp_has_header): Silently return false if the search path has been > exhausted, rather than issuing a diagnostic and then hitting an > assert. > > gcc/testsuite/ChangeLog: > > * lib/gcc-defs.exp (dg-additional-options): Make $srcdir usable in a > dg-additional-options directive. > * c-c++-common/cpp/has-include-next-2-dir/has-include-next-2.h: New > test. > * c-c++-common/cpp/has-include-next-2.c: New test.
OK. -- Joseph S. Myers josmy...@redhat.com