c++: Change __builtin_source_location to use __PRETTY_FUNCTION__ instead of __FUNCTIO...
authorJakub Jelinek <jakub@redhat.com>
Fri, 4 Dec 2020 07:08:39 +0000 (08:08 +0100)
committerJakub Jelinek <jakub@redhat.com>
Fri, 4 Dec 2020 07:08:39 +0000 (08:08 +0100)
commit9715663f7db7ac57121c9a60dd0078787e274f66
tree6f51f472f041ac4178e04e91980900ff0a49a806
parentb8dd0ef74dd799a0a6d35e912239f0819912890f
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  <jakub@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.
gcc/cp/cp-gimplify.c
gcc/testsuite/g++.dg/cpp2a/srcloc1.C
gcc/testsuite/g++.dg/cpp2a/srcloc15.C
gcc/testsuite/g++.dg/cpp2a/srcloc17.C
gcc/testsuite/g++.dg/cpp2a/srcloc2.C
libstdc++-v3/testsuite/18_support/source_location/1.cc
libstdc++-v3/testsuite/18_support/source_location/consteval.cc