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

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

https://gcc.gnu.org/g:777fa0a232a6bfc7ed3827f35322ec740fe714e9

commit r8-10457-g777fa0a232a6bfc7ed3827f35322ec740fe714e9
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Wed Mar 4 12:59:04 2020 +0100

    inliner: Copy DECL_BY_REFERENCE in copy_decl_to_var [PR93888]

    In the following testcase we emit wrong debug info for the karg
    parameter in the DW_TAG_inlined_subroutine into main.
    The problem is that the karg PARM_DECL is DECL_BY_REFERENCE and thus
    in the IL has const K & type, but in the source just const K.
    When the function is inlined, we create a VAR_DECL for it, but don't
    set DECL_BY_REFERENCE, so when emitting DW_AT_location, we treat it like
    a const K & typed variable, but it has DW_AT_abstract_origin which has
    just the const K type and thus the debugger thinks the variable has
    const K type.

    Fixed by copying the DECL_BY_REFERENCE flag.  Not doing it in
    copy_decl_for_dup_finish, because copy_decl_no_change already copies
    that flag through copy_node and in copy_result_decl_to_var it is
    undesirable, as we handle DECL_BY_REFERENCE in that case instead
    by changing the type.

    2020-03-04  Jakub Jelinek  <ja...@redhat.com>

            PR debug/93888
            * tree-inline.c (copy_decl_to_var): Copy DECL_BY_REFERENCE flag.

            * g++.dg/guality/pr93888.C: New test.

    (cherry picked from commit d2a810ee83e2952bf351498cecf8f5db28860a24)

Reply via email to