https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61474

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Lewis Hyatt <lhy...@gcc.gnu.org>:

https://gcc.gnu.org/g:601dbf2a799f691688dfe78250b5bea2717b5b5e

commit r14-4185-g601dbf2a799f691688dfe78250b5bea2717b5b5e
Author: Lewis Hyatt <lhy...@gmail.com>
Date:   Fri Sep 15 13:31:51 2023 -0400

    libcpp: Fix ICE on #include after a line marker directive [PR61474]

    As noted in the PR, GCC will segfault if a file name is first seen in a
    linemarker directive, and then later seen in a normal #include.  This is
    because the fake include process adds the file to the cache with a null
PATH
    member. The normal #include finds this file in the cache and then attempts
    to use the null PATH.  Resolve by adding the file to the cache with a
unique
    starting directory, so that the fake entry will only be found by a
    subsequent fake include, not by a real one.

    libcpp/ChangeLog:

            PR preprocessor/61474
            * files.cc (_cpp_find_file): Set DONT_READ to TRUE for fake
            include files.
            (_cpp_fake_include): Pass a unique cpp_dir* address so
            the fake file will not be found when looked up for real.

    gcc/testsuite/ChangeLog:

            PR preprocessor/61474
            * c-c++-common/cpp/pr61474-2.h: New test.
            * c-c++-common/cpp/pr61474.c: New test.
            * c-c++-common/cpp/pr61474.h: New test.
  • [Bug preprocessor/61474] ICE (s... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to