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

--- Comment #9 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Christophe Lyon <cl...@gcc.gnu.org>:

https://gcc.gnu.org/g:1a9b3f04c11eb467a8dc504a37dad57a371a0d4c

commit r12-938-g1a9b3f04c11eb467a8dc504a37dad57a371a0d4c
Author: Christophe Lyon <christophe.l...@linaro.org>
Date:   Thu May 20 08:10:50 2021 +0000

    c: Add support for __FILE_NAME__ macro (PR c/42579)

    The toolchain provided by ST for stm32 has had support for
    __FILENAME__ for a while, but clang/llvm has recently implemented
    support for __FILE_NAME__, so it seems better to use the same macro
    name in GCC.

    It happens that the ST patch is similar to the one proposed in PR
    c/42579.

    Given these input files:
    ::::::::::::::
    mydir/myinc.h
    ::::::::::::::
    char* mystringh_file = __FILE__;
    char* mystringh_filename = __FILE_NAME__;
    char* mystringh_base_file = __BASE_FILE__;
    ::::::::::::::
    mydir/mysrc.c
    ::::::::::::::

    char* mystring_file = __FILE__;
    char* mystring_filename = __FILE_NAME__;
    char* mystring_base_file = __BASE_FILE__;

    we produce:
    $ gcc mydir/mysrc.c -I . -E
    char* mystringh_file = "./mydir/myinc.h";
    char* mystringh_filename = "myinc.h";
    char* mystringh_base_file = "mydir/mysrc.c";

    char* mystring_file = "mydir/mysrc.c";
    char* mystring_filename = "mysrc.c";
    char* mystring_base_file = "mydir/mysrc.c";

    2021-05-20  Christophe Lyon  <christophe.l...@linaro.org>
                Torbjörn Svensson  <torbjorn.svens...@st.com>

            PR c/42579
            libcpp/
            * include/cpplib.h (cpp_builtin_type): Add BT_FILE_NAME entry.
            * init.c (builtin_array): Likewise.
            * macro.c (_cpp_builtin_macro_text): Add support for BT_FILE_NAME.

            gcc/
            * doc/cpp.texi (Common Predefined Macros): Document __FILE_NAME__.

            gcc/testsuite/
            * c-c++-common/spellcheck-reserved.c: Add tests for __FILE_NAME__.
            * c-c++-common/cpp/file-name-1.c: New test.

Reply via email to