summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-26 17:47:25 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-26 17:47:25 +0000
commit0c910bebb2f972ec60025613e25da7257a5928d5 (patch)
tree9e8a126624a3c74d820e58e1053be78a5d90568c
parent4d4e6d4b278ef3e9a3fc32c551cc85e96554f151 (diff)
downloadppe42-gcc-0c910bebb2f972ec60025613e25da7257a5928d5.tar.gz
ppe42-gcc-0c910bebb2f972ec60025613e25da7257a5928d5.zip
* class.c (build_vtable_entry_ref): Correct usage of
get_vtbl_decl_for_binfo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34195 138bc75d-0d04-0410-961f-82ee72b054a4
-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 1bccc360298..656ce2aab1d 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 d865fba5f99..2fbdeb4dde4 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 00000000000..789e3166fb4
--- /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 ();
+}
OpenPOWER on IntegriCloud