C++ and gather-detailed-mem-stats

Diego Novillo dnovillo@google.com
Fri Aug 24 15:01:00 GMT 2012

On 2012-08-15 06:10 , Richard Guenther wrote:

> Maybe have a GNU C++ builtin type
> struct __Gcc_call_location_pack {
>    const char *file;
>    const char *function;
>    unsigned line;
> };
> and an attribute
> void foo (int bar) __attribute__((add_location_pack));
> that directs GNU C++ to add a __Gcc_call_location_pack typed
> argument at each call site (properly constructed of course)?
> Or more explicitely:
> void foo (int bar,
>            __Gcc_call_location_pack pack = __Gcc_create_location_pack ());
> ?  I'd be willing to pay the price that only GCC can build itself
> with mem-stat support.

I really like this idea.

Couldn't we make it even more transparent?  If a function is marked with 
__attribute__((add_location_pack)) (or some other attribute name), the 
callers will always pass file, function and line as hidden arguments (in 
the same way that 'this' is passed as a hidden argument).

The compiler will then always add 'file', 'function' and 'line' to the 
argument list, which can then be retrieved via builtins or special 
argument names (I think builtins may be safer).

This would allow us to handle operators.  I don't think it would be a 
big deal if this introduces ABI incompatibilities.


More information about the Gcc mailing list