[C++ PATCH] __builtin_source_location ()
Jakub Jelinek
jakub@redhat.com
Fri Nov 15 12:55:00 GMT 2019
On Fri, Nov 15, 2019 at 12:35:22PM +0000, Jonathan Wakely wrote:
> On 15/11/19 13:28 +0100, Jakub Jelinek wrote:
> > On Thu, Nov 14, 2019 at 08:34:26PM +0100, Jakub Jelinek wrote:
> > > The following WIP patch implements __builtin_source_location (),
> > > which returns const void pointer to a std::source_location::__impl
> > > struct that is required to contain __file, __function, __line and __column
> > > fields, the first two with const char * type, the latter some integral type.
> >
> > Here is hopefully final version, with the hashing implemented,
> > __file renamed to __file_name and __function to __function_name to match
> > how the standard names the methods and with testsuite coverage.
>
> The libstdc++ naming convention says the data members should be
> _M_file_name, _M_line etc.
>
> Since this is just a normal library type now, not defined by the
> compiler, I think we should follow the library convention (sorry for
> not noticing that sooner).
I guess it depends on what are the chances other compilers will implement
the same builtin, because doesn't say libc++ use __name rather than
_M_name convention?
Yet another option would be for the builtin to accept either
_M_file_name or __file_name, could be handled by
const char *n = IDENTIFIER_POINTER (DECL_NAME (field));
if (strncmp (n, "_M_", 3) == 0)
n += 3;
else if (strncmp (n, "__", 2) == 0)
n += 2;
else
n = "";
and then do the comparisons without __ in the patch.
Jakub
More information about the Gcc-patches
mailing list