From: Jason Merrill Date: Tue, 15 Jul 2014 21:38:48 +0000 (-0400) Subject: re PR c++/61811 (Firefox LTO build error due to undefined symbols) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1b60eaedde85fc88a15e9b5353d8d15eb500a540;p=gcc.git re PR c++/61811 (Firefox LTO build error due to undefined symbols) PR c++/61811 * decl2.c (maybe_emit_vtables): Return true for -fuse-all-virtuals. From-SVN: r212576 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1d5b7d6423c..231b315321c 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-07-15 Jason Merrill + PR c++/61811 + * decl2.c (maybe_emit_vtables): Return true for -fuse-all-virtuals. + PR c++/60848 PR c++/61723 * call.c (is_std_init_list): Don't check CLASSTYPE_TEMPLATE_INFO. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 0926dbc60fc..83a07e64d72 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -2014,11 +2014,15 @@ maybe_emit_vtables (tree ctype) if (DECL_COMDAT (primary_vtbl) && CLASSTYPE_DEBUG_REQUESTED (ctype)) note_debug_info_needed (ctype); - if (mark_all_virtuals) - /* Make sure virtual functions get instantiated/synthesized so that - they can be inlined after devirtualization even if the vtable is - never emitted. */ - mark_vtable_entries (primary_vtbl); + if (mark_all_virtuals && !DECL_ODR_USED (primary_vtbl)) + { + /* Make sure virtual functions get instantiated/synthesized so that + they can be inlined after devirtualization even if the vtable is + never emitted. */ + mark_used (primary_vtbl); + mark_vtable_entries (primary_vtbl); + return true; + } return false; }