PING^1
On 07/18/2018 03:49 PM, Martin Liška wrote:
> On 07/18/2018 02:40 PM, Jason Merrill wrote:
>> On Wed, Jul 18, 2018 at 7:03 PM, Martin Liška <mli...@suse.cz> wrote:
>>> On 07/18/2018 03:45 AM, Jason Merrill wrote:
>>>> On Mon, Jul 16, 2018 at 5:23 PM, Martin Liška <mli...@suse.cz> wrote:
>>>>> For purpose of --coverage I would like to distinguish lambda functions
>>>>> among DECL_ARTIFICIAL functions.
>>>>
>>>> I'm curious, why?
>>>
>>> It's important for GCOV to report coverage for functions that are
>>> really present in a source file. Lambdas are such functions.
>>> On the other hand functions like
>>> _Z41__static_initialization_and_destruction_*
>>> or some implicit constructors (Centering<3>::Centering(Centering<3> const&))
>>> should not be reported. It confuses a user. Note that both have a valid
>>> location and one can't distinguish them.
>>
>> Those other functions may have *a* location, but only
>> DECL_SOURCE_LOCATION; could we distinguish on that basis?
>>
>> Jason
>>
>
> I don't know how to distinguish them. Consider:
>
> <function_decl 0x7fffe82f7200 __dt_base
> type <method_type 0x7fffe82f9000
> type <void_type 0x7ffff67c0f18 void type_6 VOID
> align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
> 0x7ffff67c0f18
> pointer_to_this <pointer_type 0x7ffff67c8000> reference_to_this
> <reference_type 0x7fffefb642a0>>
> QI
> size <integer_cst 0x7ffff67a2f60 constant 8>
> unit-size <integer_cst 0x7ffff67a2f78 constant 1>
> align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
> 0x7fffe82f62a0 method basetype <record_type 0x7fffe829abd0 BinaryNode>
> arg-types <tree_list 0x7fffeba3ffa0 value <pointer_type
> 0x7fffe82af000>
> chain <tree_list 0x7ffff67b6898 value <void_type 0x7ffff67c0f18
> void>>>
> throws <tree_list 0x7ffff68f4050
> purpose <integer_cst 0x7ffff67c31f8 constant 1>>
> pointer_to_this <pointer_type 0x7fffe8344000>>
> nothrow public static weak autoinline decl_3 decl_5 QI
> tramp3d-v4.cpp:867:7 align:16 warn_if_not_align:0 context <record_type
> 0x7fffe829abd0 BinaryNode> initial <block 0x7fffe832eea0> abstract_origin
> <function_decl 0x7fffe82f7000 __dt >
> result <result_decl 0x7fffe8330f78 D.471838 type <void_type
> 0x7ffff67c0f18 void>
> ignored VOID tramp3d-v4.cpp:867:7
> align:8 warn_if_not_align:0 context <function_decl 0x7fffe82f7200
> __dt_base >>
> full-name "BinaryNode<OpLT, Field<UniformRectilinearMesh<MeshTraits<3,
> double, UniformRectilinearTag, CartesianTag, 3> >, double, BrickView>,
> Scalar<double> >::~BinaryNode() noexcept"
> pending-inline-info 0x7fffe8341510
> arguments <parm_decl 0x7fffe82f5b00 this
> type <pointer_type 0x7fffe82af150 type <record_type 0x7fffe829abd0
> BinaryNode>
> readonly unsigned DI
> size <integer_cst 0x7ffff67a2e70 constant 64>
> unit-size <integer_cst 0x7ffff67a2e88 constant 8>
> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
> 0x7fffe82af150>
> readonly unsigned read DI tramp3d-v4.cpp:34712:13 size <integer_cst
> 0x7ffff67a2e70 64> unit-size <integer_cst 0x7ffff67a2e88 8>
> align:64 warn_if_not_align:0 context <function_decl 0x7fffe82f7200
> __dt_base > abstract_origin <parm_decl 0x7fffe82f5900 this> arg-type
> <pointer_type 0x7fffe82af150>>
> struct-function 0x7fffe833e580 chain <function_decl 0x7fffe82f7100
> __dt_comp >>
>
> it's DECL_SOURCE_LOCATION is:
> $2 = 200862249
>
> and expand_location (DECL_SOURCE_LOCATION (current_function_decl)) is:
> (gdb) p xloc
> $1 = {
> file = 0x2a58df0 "tramp3d-v4.cpp",
> line = 867,
> column = 7,
> data = 0x0,
> sysp = false
> }
>
> Martin
>