aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2001-11-30 09:00:25 -0500
committerJason Merrill <jason@gcc.gnu.org>2001-11-30 09:00:25 -0500
commit1d3d6b1e6db42c2a95d1136431c6c6eee78ea93f (patch)
treecea90bd13d074c82a94d0faa81f02b6cfc530426 /gcc
parent3248917b3e4d768bb0e949b18f73e89f4a5d9da8 (diff)
downloadgcc-1d3d6b1e6db42c2a95d1136431c6c6eee78ea93f.zip
gcc-1d3d6b1e6db42c2a95d1136431c6c6eee78ea93f.tar.gz
gcc-1d3d6b1e6db42c2a95d1136431c6c6eee78ea93f.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dbxout.c2
-rw-r--r--gcc/dwarf2out.c9
3 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f525d91..ac2de5f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2001-11-30 Jason Merrill <jason@redhat.com>
+
+ * 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 <kenner@vlsi1.ultra.nyu.edu>
* dwarf2asm.c (dw2_asm_output_encoded_addr_rtx): Handle const1_rtx.
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 8b14f5d..718250d 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 55bb264..557730d 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -4831,6 +4831,13 @@ is_c_family ()
}
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 ()
{
unsigned lang = get_AT_unsigned (comp_unit_die, DW_AT_language);
@@ -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