From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19656 invoked by alias); 10 Apr 2015 16:15:08 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 19634 invoked by uid 89); 10 Apr 2015 16:15:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.8 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 X-HELO: mx2.suse.de Received: from cantor2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (CAMELLIA256-SHA encrypted) ESMTPS; Fri, 10 Apr 2015 16:15:06 +0000 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 6892BADDA; Fri, 10 Apr 2015 16:15:02 +0000 (UTC) Message-ID: <5527F705.5020509@suse.cz> Date: Fri, 10 Apr 2015 16:15:00 -0000 From: =?UTF-8?B?TWFydGluIExpxaFrYQ==?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: GCC Patches CC: Jan Hubicka Subject: [PATCH] Fix PR ipa/65722 Content-Type: multipart/mixed; boundary="------------030209010800000903090605" X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg00456.txt.bz2 This is a multi-part message in MIME format. --------------030209010800000903090605 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 222 Hello. Attached patch fixes PR, where we should consider just cgraph_nodes as objects referred by virtual table. Patch survives regression tests on x86_64-linux-pc with enabled checking. Ready for trunk? Thanks, Martin --------------030209010800000903090605 Content-Type: text/x-patch; name="0001-Fix-PR-ipa-65722.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Fix-PR-ipa-65722.patch" Content-length: 1784 >From 8bff38438f6ba57732a6c3ccc3632f6789ca4d7e Mon Sep 17 00:00:00 2001 From: mliska Date: Fri, 10 Apr 2015 11:37:04 +0200 Subject: [PATCH] Fix PR ipa/65722. gcc/testsuite/ChangeLog: 2015-04-10 Martin Liska * g++.dg/ipa/pr65722.C: New test. gcc/ChangeLog: 2015-04-10 Martin Liska PR ipa/65722 * ipa-icf.c (sem_variable::equals_wpa): Consider comparsion just for references coming from cgraph nodes. --- gcc/ipa-icf.c | 4 ++++ gcc/testsuite/g++.dg/ipa/pr65722.C | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ipa/pr65722.C diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c index 8f8a0cf..9e5d19c 100644 --- a/gcc/ipa-icf.c +++ b/gcc/ipa-icf.c @@ -1670,6 +1670,10 @@ sem_variable::equals_wpa (sem_item *item, /* DECL_FINAL_P flag on methods referred by virtual tables is used to decide on completeness possible_polymorphic_call_targets lists and therefore it must match. */ + if (!is_a (ref->referred) + || !is_a (ref2->referred)) + continue; + if ((DECL_VIRTUAL_P (decl) || DECL_VIRTUAL_P (item->decl)) && (DECL_VIRTUAL_P (ref->referred->decl) || DECL_VIRTUAL_P (ref2->referred->decl)) diff --git a/gcc/testsuite/g++.dg/ipa/pr65722.C b/gcc/testsuite/g++.dg/ipa/pr65722.C new file mode 100644 index 0000000..ee4ea24 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr65722.C @@ -0,0 +1,21 @@ +// { dg-do compile } +// { dg-options "-O -fipa-icf -fno-rtti" } + +struct A +{ + virtual void f () + { + __builtin_abort (); + } + virtual void g (); +}; + +struct B : virtual A { }; +struct C : B, virtual A { }; + +void foo() +{ + C c; + C *p = &c; + p->f (); +} -- 2.1.4 --------------030209010800000903090605--