Hello. I'm sending Honza's patch (which is pre-approved) that I've just tested on ppc64le-redhat-linux. It also fixes the issue spotted in the PR.
Martin
>From 10050e47af7dbf217469da083666b16dbbbf606d Mon Sep 17 00:00:00 2001 From: marxin <mli...@suse.cz> Date: Thu, 2 Mar 2017 18:46:25 +0100 Subject: [PATCH] Properly handle __cxa_pure_virtual visibility (PR lto/79760). gcc/ChangeLog: 2017-03-02 Jan Hubicka <j...@suse.cz> PR lto/79760 * ipa-devirt.c (maybe_record_node): Properly handle __cxa_pure_virtual visibility. --- gcc/ipa-devirt.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index 4428d679722..0e5eb85b61d 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -2462,10 +2462,19 @@ maybe_record_node (vec <cgraph_node *> &nodes, nodes.safe_push (target_node); } } - else if (completep - && (!type_in_anonymous_namespace_p - (DECL_CONTEXT (target)) - || flag_ltrans)) + else if (!completep) + ; + /* We have definition of __cxa_pure_virtual that is not accessible (it is + optimized out or partitioned to other unit) so we can not add it. When + not sanitizing, there is nothing to do. + Otherwise declare the list incomplete. */ + else if (pure_virtual) + { + if (flag_sanitize & SANITIZE_UNREACHABLE) + *completep = false; + } + else if (flag_ltrans + || !type_in_anonymous_namespace_p (DECL_CONTEXT (target))) *completep = false; } -- 2.11.1