On Wed, 15 Aug 2012, Gabriel Dos Reis wrote:

> On Wed, Aug 15, 2012 at 5:11 AM, Florian Weimer <fwei...@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.

Reply via email to