https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94459

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:0be9efad938726721fd8c8c35609b1e1d7d30035

commit r10-7560-g0be9efad938726721fd8c8c35609b1e1d7d30035
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Sun Apr 5 00:28:28 2020 +0200

    debug: Improve debug info of c++14 deduced return type [PR94459]

    On the following testcase, in gdb ptype S<long>::m1 prints long as return
    type, but all the other methods show void instead.
    PR53756 added code to add_type_attribute if the return type is
    auto/decltype(auto), but we actually should look through references,
    pointers and qualifiers.
    Haven't included there DW_TAG_atomic_type, because I think at least ATM
    one can't use that in C++.  Not sure about DW_TAG_array_type or what else
    could be deduced.

    > http://eel.is/c++draft/dcl.spec.auto#3 says it has to appear as a
    > decl-specifier.
    >
    > http://eel.is/c++draft/temp.deduct.type#8 lists the forms where a
template
    > argument can be deduced.
    >
    > Looks like you are missing arrays, pointers to members, and function
return
    > types.

    2020-04-04  Hannes Domani  <ssb...@yahoo.de>
                Jakub Jelinek  <ja...@redhat.com>

            PR debug/94459
            * dwarf2out.c (gen_subprogram_die): Look through references,
pointers,
            arrays, pointer-to-members, function types and qualifiers when
            checking if in-class DIE had an 'auto' or 'decltype(auto)' return
type
            to emit type again on definition.

            * g++.dg/debug/pr94459.C: New test.

    Co-Authored-By: Hannes Domani <ssb...@yahoo.de>

Reply via email to