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

--- Comment #13 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:9715663f7db7ac57121c9a60dd0078787e274f66

commit r11-5736-g9715663f7db7ac57121c9a60dd0078787e274f66
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Dec 4 08:08:39 2020 +0100

    c++: Change __builtin_source_location to use __PRETTY_FUNCTION__ instead of
__FUNCTION__ [PR80780]

    On Tue, Dec 01, 2020 at 01:03:52PM +0000, Jonathan Wakely via Gcc-patches
wrote:
    > I mentioned in PR 80780 that a __builtin__PRETTY_FUNCTION would have
    > been nice, because __FUNCTION__ isn't very useful for C++, because of
    > overloading and namespace/class scopes. There are an unlimited number
    > of functions that have __FUNCTION__ == "s", e.g. "ns::s(int)" and
    > "ns::s()" and "another_scope::s::s<T...>(T...)" etc.
    >
    > Since __builtin_source_location() can do whatever it wants (without
    > needing to add __builtin__PRETTY_FUNCTION) it might be nice to use the
    > __PRETTY_FUNCTION__ string. JeanHeyd's tests would still need changes,
    > because the name would be "s::s(void*)" not "s::s" but that still
    > seems better for users.

    When I've added template tests for the previous patch, I have noticed that
    the current __builtin_source_location behavior is not really __FUNCTION__,
    just close, because e.g. in function template __FUNCTION__ is still
    "bar" but __builtin_source_location gave "bar<0>".

    Anyway, this patch implements above request to follow __PRETTY_FUNCTION__
    (on top of the earlier posted patch).

    2020-12-04  Jakub Jelinek  <ja...@redhat.com>

            PR c++/80780
            * cp-gimplify.c (fold_builtin_source_location): Use 2 instead of 0
            as last argument to cxx_printable_name.

            * g++.dg/cpp2a/srcloc1.C (quux): Use __PRETTY_FUNCTION__ instead of
            function.
            * g++.dg/cpp2a/srcloc2.C (quux): Likewise.
            * g++.dg/cpp2a/srcloc15.C (S::S): Likewise.
            (bar): Likewise.  Adjust expected column.
            * g++.dg/cpp2a/srcloc17.C (S::S): Likewise.
            (bar): Likewise.  Adjust expected column.

            * testsuite/18_support/source_location/1.cc (main): Adjust for
            __builtin_source_location using __PRETTY_FUNCTION__-like names
instead
            __FUNCTION__-like.
            * testsuite/18_support/source_location/consteval.cc (main):
Likewise.

Reply via email to