C++ and gather-detailed-mem-stats
Richard Guenther
rguenther@suse.de
Wed Aug 15 11:04:00 GMT 2012
On Wed, 15 Aug 2012, Gabriel Dos Reis wrote:
> On Wed, Aug 15, 2012 at 5:11 AM, Florian Weimer <fweimer@redhat.com> wrote:
> > On 08/15/2012 12:07 PM, Gabriel Dos Reis wrote:
> >
> >> You might try to encode/package information with the
> >> parameters T and A, but essentially you will hit the wall
> >> that __FILE__, __LINE__, and __FUNCTION__ are CPP artifacts.
> >
> >
> > GNAT has built-in functions which return this information.
>
> This is a very sensible thing to do.
>
> > When they are
> > used in default argument expressions and these arguments are omitted, the
> > functions are evaluated in the context of the caller and return the file
> > position at that point. Perhaps that would be an approach for C++ as well?
>
> C++ already has the rule that default arguments are evaluated at the call
> site, so this is definitely something to consider for stage 2 and higher builds.
> For stage 1 builds, I suppose one would have to fake it and leave
> with the imprecision that is bothering Richard?
>
> > (This assumes that gather-detailed-mem-stats is not needed in the first
> > stage compiler.)
>
> it is built into stage 1 compiler, but I doubt that stage 1 compiler is
> really useful to the kind of detailed statistics that would require this.
The configury for --enable-gather-detailed-mem-stats is re-done for
each stage, so if we add a proper feature check we can simply disable
it in stage1 when the host compiler does not support this feature.
We can add __builtin__FILE__ and friends in generic code, for example
"folding" them during gimplification using location information on
the CALL_EXPR and the current function context. I think at least
__FUNCTION__ is already sort-of a "builtin" as the preprocessor
has no way of expanding it.
Richard.
More information about the Gcc
mailing list