aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2000-05-26 17:47:25 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2000-05-26 17:47:25 +0000
commit344e498c7c4a74003f21ce605b499e1d14180561 (patch)
tree9e8a126624a3c74d820e58e1053be78a5d90568c /gcc
parentcab8bde98e943c8bd7b01ea71848ceb24ec60b45 (diff)
downloadgcc-344e498c7c4a74003f21ce605b499e1d14180561.zip
gcc-344e498c7c4a74003f21ce605b499e1d14180561.tar.gz
gcc-344e498c7c4a74003f21ce605b499e1d14180561.tar.bz2
class.c (build_vtable_entry_ref): Correct usage of get_vtbl_decl_for_binfo.
* class.c (build_vtable_entry_ref): Correct usage of get_vtbl_decl_for_binfo. From-SVN: r34195
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/class.c4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/crash18.C14
3 files changed, 20 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1bccc36..656ce2a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2000-05-26 Mark Mitchell <mark@codesourcery.com>
+ * class.c (build_vtable_entry_ref): Correct usage of
+ get_vtbl_decl_for_binfo.
+
* decl2.c (grokclassfn): Set DECL_LANGUAGE here.
* method.c (implicitly_declare_fn): Not here.
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index d865fba..2fbdeb4 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -485,7 +485,9 @@ build_vtable_entry_ref (basetype, vtbl, idx)
static char asm_stmt[] = ".vtable_entry %c0, %c1";
tree s, i, i2;
- s = build_unary_op (ADDR_EXPR, get_vtbl_decl_for_binfo (basetype), 0);
+ s = build_unary_op (ADDR_EXPR,
+ get_vtbl_decl_for_binfo (TYPE_BINFO (basetype)),
+ 0);
s = build_tree_list (build_string (1, "s"), s);
i = build_array_ref (vtbl, idx);
diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash18.C b/gcc/testsuite/g++.old-deja/g++.other/crash18.C
new file mode 100644
index 0000000..789e316
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/crash18.C
@@ -0,0 +1,14 @@
+// Build don't link:
+// Special g++ Options: -fvtable-gc
+// Origin: Mark Mitchell <mitchell@codesourcery.com>
+
+struct S {
+ virtual void f ();
+};
+
+S* s;
+
+void g ()
+{
+ s->f ();
+}