From patchwork Tue Jul 4 07:42:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Li=C5=A1ka?= X-Patchwork-Id: 783771 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3x1ww30gykz9s65 for ; Tue, 4 Jul 2017 17:42:56 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="PLNBN3va"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-type; q=dns; s=default; b=CM8NLe3XTbveh1SKM xgqLCsHmZKcSV0WiJC7K2LDIqaXKeEYOUowPD0j0fnfy6jTg47MQjaEGDwDMW706 FBPudGzPwulc0w84vgPOwccUK6geEkQ2ZPH4CKDgL6WE6LZQjfGNXBmu7ANhED2J Org1btKL5jRpf8M2u5XSu2ewpI= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-type; s=default; bh=2pqzvV4s95Cyv3AvAuaasAN 9F7w=; b=PLNBN3vaUFByz//27jUJa+h/Qa53a52nIbo1RhDQjlhwkh6SVjP0TQ7 ryc3Z2TYHHh5UyRgGXNSj5oLtqvS0J0PEuk7kcRGlhtpWXMs+affbQLMXC5n2rYc QPxWpt5mYbKrS2eDbQS61w0xk9mw+xwfJN85ETZNLd4X4pwlQctE= Received: (qmail 33567 invoked by alias); 4 Jul 2017 07:42:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 33553 invoked by uid 89); 4 Jul 2017 07:42:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 04 Jul 2017 07:42:42 +0000 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 0B755ACC0; Tue, 4 Jul 2017 07:42:40 +0000 (UTC) Subject: Re: [PATCH] Fix removal of ifunc (PR ipa/81214). To: Rainer Orth Cc: gcc-patches@gcc.gnu.org, Michael Meissner , Dominique d'Humieres References: From: =?UTF-8?Q?Martin_Li=c5=a1ka?= Message-ID: <3c269b2c-e1cd-aee3-d3b8-64c468817141@suse.cz> Date: Tue, 4 Jul 2017 09:42:38 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: X-IsSubscribed: yes On 07/03/2017 03:44 PM, Rainer Orth wrote: > Hi Martin, > >> Following patch fixes the issue where we do not emit ifunc and resolver >> for function that are not called in a compilation unit or and not >> referenced. >> >> Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. >> i386.exp tests work on x86_64-linux-gnu. > > your patch caused a testsuite regression on various targets: > > FAIL: gcc.target/i386/mvc6.c (test for excess errors) > UNRESOLVED: gcc.target/i386/mvc6.c scan-assembler punpcklbw > UNRESOLVED: gcc.target/i386/mvc6.c scan-assembler vpshufb Hello. Thanks for the patch, actually I was working on the patch when you committed :) > > Excess errors: > /vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/i386/mvc6.c:8:1: error: the call requires ifunc, which is not supported by this target > > I'm seeing it on i386-pc-solaris2.12, Dominique reported it in the PR on > Darwin/x86, and there are also testsuite results on FreeBSD/x86. > > Unlike most other __attribute__((target_clones)) tests, this one lacked > { dg-require-ifunc "" } and didn't need it before. > > The following patch fixes this. Tested with the appropriate runtest > invocation on i386-pc-solaris2.12 and x86_64-pc-linux-gnu, installed on > mainline. > > While I was at it, I checked the other testcases with > __attribute__((target_clones)): > > g++.dg/ext/mvc1.C dg-require-ifunc "" > g++.dg/ext/mvc2.C 00 (dg-warning) > g++.dg/ext/mvc3.C 00 (dg-warning) > g++.dg/ext/mvc4.C dg-require-ifunc "" > gcc.dg/tree-prof/pr66295.c dg-require-ifunc "" > gcc.target/i386/mvc1.c dg-require-ifunc "" > gcc.target/i386/mvc2.c 00 > gcc.target/i386/mvc3.c 00 (dg-error) > gcc.target/i386/mvc4.c dg-require-ifunc "" > gcc.target/i386/mvc5.c dg-require-ifunc "" > gcc.target/i386/mvc6.c 00 > gcc.target/i386/mvc7.c dg-require-ifunc "" > gcc.target/i386/mvc8.c dg-require-ifunc "" > gcc.target/i386/mvc9.c dg-require-ifunc "" > gcc.target/i386/pr78419.c dg-require-ifunc "" > gcc.target/i386/pr80732.c dg-require-ifunc "" > gcc.target/i386/pr81214.c dg-require-ifunc "" > gcc.target/powerpc/clone1.c powerpc*-*-linux* && lp64 > > Of those without dg-require-ifunc, the powerpc one is (sort of) ok since > it's restricted to Linux, and those with dg-warning/dg-error are too > since the warnings is emitted before the error about missing ifunc > support. That leaves us with gcc.target/i386/mvc2.c, which is sort of > weird because it emits no code at all. No idea if this intended, > though. I prefer to add ifunc to all these tests. I'll do it in attached patch that I'm going to install. Thanks and sorry for the fallout. Martin > > Rainer > From 8b3d6abf45c6f1fdfe6780869eb0c8e6a0380f5a Mon Sep 17 00:00:00 2001 From: marxin Date: Tue, 4 Jul 2017 09:39:10 +0200 Subject: [PATCH] Add dg-require ifunc for mvc test-cases. gcc/testsuite/ChangeLog: 2017-07-04 Martin Liska PR ipa/81214 * g++.dg/ext/mvc2.C: Add dg-require ifunc. * g++.dg/ext/mvc3.C: Likewise. * gcc.target/i386/mvc2.c: Likewise. * gcc.target/i386/mvc3.c: Likewise. --- gcc/testsuite/g++.dg/ext/mvc2.C | 1 + gcc/testsuite/g++.dg/ext/mvc3.C | 1 + gcc/testsuite/gcc.target/i386/mvc2.c | 1 + gcc/testsuite/gcc.target/i386/mvc3.c | 1 + 4 files changed, 4 insertions(+) diff --git a/gcc/testsuite/g++.dg/ext/mvc2.C b/gcc/testsuite/g++.dg/ext/mvc2.C index e7abab81d95..1b8c6f4d6e9 100644 --- a/gcc/testsuite/g++.dg/ext/mvc2.C +++ b/gcc/testsuite/g++.dg/ext/mvc2.C @@ -1,4 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-ifunc "" } */ __attribute__((target_clones("avx","arch=slm","default"))) __attribute__((target("avx"))) diff --git a/gcc/testsuite/g++.dg/ext/mvc3.C b/gcc/testsuite/g++.dg/ext/mvc3.C index 05bebf7d4fb..d32b2c93aa0 100644 --- a/gcc/testsuite/g++.dg/ext/mvc3.C +++ b/gcc/testsuite/g++.dg/ext/mvc3.C @@ -1,4 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ +/* { dg-require-ifunc "" } */ __attribute__((target("avx"))) __attribute__((target_clones("avx","arch=slm","default"))) diff --git a/gcc/testsuite/gcc.target/i386/mvc2.c b/gcc/testsuite/gcc.target/i386/mvc2.c index 9635ec83fac..34a777c1d5e 100644 --- a/gcc/testsuite/gcc.target/i386/mvc2.c +++ b/gcc/testsuite/gcc.target/i386/mvc2.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-ifunc "" } */ __attribute__((target_clones("avx","arch=slm","arch=core-avx2"))) int foo (); diff --git a/gcc/testsuite/gcc.target/i386/mvc3.c b/gcc/testsuite/gcc.target/i386/mvc3.c index f940cdbbf55..1c7755fabbe 100644 --- a/gcc/testsuite/gcc.target/i386/mvc3.c +++ b/gcc/testsuite/gcc.target/i386/mvc3.c @@ -1,4 +1,5 @@ /* { dg-do compile } */ +/* { dg-require-ifunc "" } */ __attribute__((target_clones("avx","arch=slm","arch=core-avx2"))) int foo (); /* { dg-error "default target was not set" } */ -- 2.13.2