aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-10-24 20:44:30 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-10-24 20:44:30 +0200
commit0f2a9e37fa5487d7f1b4ea3530c497661a6d7817 (patch)
tree6675f8e8df8869495a58275f084067520862325c /gcc/dwarf2out.c
parent331075711a0f19224c11cc880c695fd52723b881 (diff)
downloadgcc-0f2a9e37fa5487d7f1b4ea3530c497661a6d7817.zip
gcc-0f2a9e37fa5487d7f1b4ea3530c497661a6d7817.tar.gz
gcc-0f2a9e37fa5487d7f1b4ea3530c497661a6d7817.tar.bz2
dwarf2out.c (gen_subprogram_die): Add DW_AT_reference or DW_AT_rvalue_reference attributes.
* dwarf2out.c (gen_subprogram_die): Add DW_AT_reference or DW_AT_rvalue_reference attributes. * cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference and DW_AT_rvalue_reference. * g++.dg/debug/dwarf2/ref-2.C: New test. From-SVN: r241492
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index b059ed2..515ee6e 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -20662,6 +20662,21 @@ gen_subprogram_die (tree decl, dw_die_ref context_die)
if (defaulted != -1)
add_AT_unsigned (subr_die, DW_AT_defaulted, defaulted);
}
+
+ /* If this is a C++11 non-static member function with & ref-qualifier
+ then generate a DW_AT_reference attribute. */
+ if ((dwarf_version >= 5 || !dwarf_strict)
+ && lang_hooks.decls.decl_dwarf_attribute (decl,
+ DW_AT_reference) == 1)
+ add_AT_flag (subr_die, DW_AT_reference, 1);
+
+ /* If this is a C++11 non-static member function with &&
+ ref-qualifier then generate a DW_AT_reference attribute. */
+ if ((dwarf_version >= 5 || !dwarf_strict)
+ && lang_hooks.decls.decl_dwarf_attribute (decl,
+ DW_AT_rvalue_reference)
+ == 1)
+ add_AT_flag (subr_die, DW_AT_rvalue_reference, 1);
}
}
/* Tag abstract instances with DW_AT_inline. */