From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1226 invoked by alias); 18 Jan 2019 14:30:41 -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 991 invoked by uid 89); 18 Jan 2019 14:30:20 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=unavailable version=3.3.2 spammy= X-HELO: mail-ot1-f67.google.com Received: from mail-ot1-f67.google.com (HELO mail-ot1-f67.google.com) (209.85.210.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 18 Jan 2019 14:30:03 +0000 Received: by mail-ot1-f67.google.com with SMTP id 81so14559042otj.2 for ; Fri, 18 Jan 2019 06:30:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=48rEk3omtKq9PnX8pCjF92lWRHMKMhsGtRREQxex91c=; b=S4/lNJHHDuWKvESXAEj6meFhb+Vt4+w7OvoiJ9bnbO80ZVOe7CoTSJRnTuoZeKh4Zl WQ0iEK7nnrmDx22+MSfaAbCT8hleHmDFKve2A9oGOdu+mX3LhSsGvQmfmp/mNadFdB4h x6Znvtf0vam2u5Kx4/1Mj8c8ZWpYrFK1qNjae/8M3t93pqQ8GX42At8xd7WKHt0Jha/G 23h8OUYFWugZBtcleMPSVfzpm/iRWwQAAg9ShmEmf6/TjTe62QjjHNAAK+ITkBMzVLAT x5fLwZm9njRzLUKUOO3YIBRx4jsk7tzAK588/IU+GzGlkRrj8LwurDdnCHOFIhXm7nET 8R5Q== MIME-Version: 1.0 References: <0d2f9afa-b0fb-b81b-aba4-1f7f1faa5f35@suse.cz> <7848ce81-1dd2-9abd-08b2-86e9c2c40a18@suse.cz> In-Reply-To: From: "H.J. Lu" Date: Fri, 18 Jan 2019 14:30:00 -0000 Message-ID: Subject: Re: [PATCH] Reset proper type on vector types (PR middle-end/88587). To: Richard Biener Cc: =?UTF-8?Q?Martin_Li=C5=A1ka?= , GCC Patches Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2019-01/txt/msg01076.txt.bz2 On Fri, Jan 18, 2019 at 6:25 AM H.J. Lu wrote: > > On Thu, Jan 17, 2019 at 4:51 AM Richard Biener > wrote: > > > > On Thu, Jan 17, 2019 at 12:21 PM Martin Li=C5=A1ka wro= te: > > > > > > On 1/16/19 1:06 PM, Richard Biener wrote: > > > > On Wed, Jan 16, 2019 at 10:20 AM Martin Li=C5=A1ka = wrote: > > > >> > > > >> Hi. > > > >> > > > >> The patch is about resetting TYPE_MODE of vector types. This is pr= oblematic > > > >> when an inlining among different ISAs happen. Then we end up with = a different > > > >> mode than when it's expected from debug info. > > > >> > > > >> When creating a new function decl in target_clones, we must valid_= attribute_p early > > > >> so that the declaration has a proper cl_target_.. node and so that= inliner can > > > >> fix modes. > > > >> > > > >> Patch can bootstrap on x86_64-linux-gnu and survives regression te= sts. > > > >> > > > >> Ready to be installed? > > > > > > > > I don't like the new failure mode too much. It looks like > > > > create_version_clone_with_body > > > > can fail so why not simply return NULL when > > > > targetm.target_option.valid_attribute_p > > > > returns false and handle that case in multi-versioning? > > > > > > > > That is, > > > > > > > > + return !seen_error (); > > > > > > > > that looks very wrong to me. > > > > > > Yep, update patch should be better. > > > > > > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > > > > > Ready to be installed? > > > > OK. > > > > Thanks, > > Richard. > > > > > Thanks, > > > Martin > > > > > > > > > > > Richard. > > > > > > > >> Thanks, > > > >> Martin > > > >> > > > >> gcc/ChangeLog: > > > >> > > > >> 2019-01-16 Martin Liska > > > >> Richard Biener > > > >> > > > >> PR middle-end/88587 > > > >> * cgraph.h (create_version_clone_with_body): Add new argum= ent > > > >> with attributes. > > > >> * cgraphclones.c (cgraph_node::create_version_clone): Add > > > >> DECL_ATTRIBUTES to a newly created decl. And call > > > >> valid_attribute_p so that proper cl_target_optimization_no= de > > > >> is set for the newly created declaration. > > > >> * multiple_target.c (create_target_clone): Set DECL_ATTRIB= UTES > > > >> for declaration. > > > >> (expand_target_clones): Do not call valid_attribute_p, it = must > > > >> be already done. > > > >> * tree-inline.c (copy_decl_for_dup_finish): Reset mode for > > > >> vector types. > > > >> > > > >> gcc/testsuite/ChangeLog: > > > >> > > > >> 2019-01-16 Martin Liska > > > >> > > > >> PR middle-end/88587 > > > >> * g++.target/i386/pr88587.C: New test. > > > >> * gcc.target/i386/mvc13.c: New test. > > > >> --- > > > >> gcc/cgraph.h | 7 +++++- > > > >> gcc/cgraphclones.c | 18 +++++++++++++- > > > >> gcc/multiple_target.c | 32 ++++++++------------= ----- > > > >> gcc/testsuite/g++.target/i386/pr88587.C | 15 ++++++++++++ > > > >> gcc/testsuite/gcc.target/i386/mvc13.c | 9 +++++++ > > > >> gcc/tree-inline.c | 4 ++++ > > > >> 6 files changed, 61 insertions(+), 24 deletions(-) > > > >> create mode 100644 gcc/testsuite/g++.target/i386/pr88587.C > > > >> create mode 100644 gcc/testsuite/gcc.target/i386/mvc13.c > > > >> > > > >> > > > > > It is wrong to use -m32 in dg-options: > > /* { dg-do compile } */ > /* { dg-require-ifunc "" } */ > /* { dg-options "-O -m32 -g -mno-sse" } */ > > You should use > > /* { dg-do compile { target ia32 } } */ > > Since g++.target/i386/pr88587.C doesn't support -fPIC, > > [hjl@gnu-cfl-1 gcc]$ ./xgcc -B./ > /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.target/i386/pr88587.C > -mx32 -fpic -S > /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.target/i386/pr88587.= C:6:6: > warning: always_inline function might not be inlinable [-Wattributes] > 6 | void a() > | ^ > /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.target/i386/pr88587.= C: > In function \u2018void a2()\u2019: > /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.target/i386/pr88587.= C:6:6: > error: inlining failed in call to always_inline \u2018void a()\u2019: > function body can be overwritten at link time > /export/gnu/import/git/sources/gcc/gcc/testsuite/g++.target/i386/pr88587.= C:13:5: > note: called from here > 13 | a (); > | ~~^~ > [hjl@gnu-cfl-1 gcc]$ > > you should add -fno-pic. > I am checking in this patch as an obvious fix. --=20 H.J. --- diff --git a/gcc/testsuite/g++.target/i386/pr88587.C b/gcc/testsuite/g++.target/i386/pr88587.C index 6808ab68cbb..e7488e68743 100644 --- a/gcc/testsuite/g++.target/i386/pr88587.C +++ b/gcc/testsuite/g++.target/i386/pr88587.C @@ -1,6 +1,6 @@ -/* { dg-do compile } */ +/* { dg-do compile { target ia32 } } */ /* { dg-require-ifunc "" } */ -/* { dg-options "-O -m32 -g -mno-sse -Wno-attributes" } */ +/* { dg-options "-O -fno-pic -g -mno-sse -Wno-attributes" } */ __attribute__((target("default"),always_inline)) void a() diff --git a/gcc/testsuite/gcc.target/i386/mvc13.c b/gcc/testsuite/gcc.target/i386/mvc13.c index 9e31ef7c4da..8d7e34437b4 100644 --- a/gcc/testsuite/gcc.target/i386/mvc13.c +++ b/gcc/testsuite/gcc.target/i386/mvc13.c @@ -1,6 +1,6 @@ -/* { dg-do compile } */ +/* { dg-do compile { target ia32 } } */ /* { dg-require-ifunc "" } */ -/* { dg-options "-O -m32 -g -mno-sse" } */ +/* { dg-options "-O -g -mno-sse" } */ __attribute__((target_clones("default,sse2"))) void a()