From: Jason Merrill Date: Fri, 30 Nov 2001 14:00:25 +0000 (-0500) Subject: dwarf2out.c (is_cxx): New fn. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1d3d6b1e6db42c2a95d1136431c6c6eee78ea93f;p=gcc.git dwarf2out.c (is_cxx): New fn. * dwarf2out.c (is_cxx): New fn. (add_data_member_location_attribute): Check it. * dbxout.c (dbxout_type): Only look at BINFO_VPTR_FIELD for C++. From-SVN: r47483 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f525d91e42f..ac2de5f6aba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-11-30 Jason Merrill + + * dwarf2out.c (is_cxx): New fn. + (add_data_member_location_attribute): Check it. + * dbxout.c (dbxout_type): Only look at BINFO_VPTR_FIELD for C++. + Fri Nov 30 08:26:57 2001 Richard Kenner * dwarf2asm.c (dw2_asm_output_encoded_addr_rtx): Handle const1_rtx. diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 8b14f5d2efe..718250d4960 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -1492,7 +1492,7 @@ dbxout_type (type, full) putc (TREE_VIA_VIRTUAL (child) ? '1' : '0', asmfile); putc (TREE_VIA_PUBLIC (child) ? '2' : '0', asmfile); CHARS (2); - if (TREE_VIA_VIRTUAL (child)) + if (TREE_VIA_VIRTUAL (child) && strcmp (lang_hooks.name, "GNU C++") == 0) /* For a virtual base, print the (negative) offset within the vtable where we must look to find the necessary adjustment. */ diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 55bb26420bd..557730dc892 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -4830,6 +4830,13 @@ is_c_family () || lang == DW_LANG_C_plus_plus); } +static inline int +is_cxx () +{ + return (get_AT_unsigned (comp_unit_die, DW_AT_language) + == DW_LANG_C_plus_plus); +} + static inline int is_fortran () { @@ -8414,7 +8421,7 @@ add_data_member_location_attribute (die, decl) { /* We're working on the TAG_inheritance for a base class. */ - if (TREE_VIA_VIRTUAL (decl)) + if (TREE_VIA_VIRTUAL (decl) && is_cxx ()) { /* For C++ virtual bases we can't just use BINFO_OFFSET, as they aren't at a fixed offset from all (sub)objects of the same