From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by sourceware.org (Postfix) with ESMTPS id C93A03858D38 for ; Tue, 11 Apr 2023 08:31:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C93A03858D38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-lf1-x136.google.com with SMTP id r27so9421545lfe.0 for ; Tue, 11 Apr 2023 01:31:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1681201891; x=1683793891; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ayLDTpWuZIxLsedPt+hsAAoa6gCNFAAzQvAh5NQ9MpY=; b=WVszr2Q9sZqoz7vpUcPceZGa0WIzAUA4fl4skpcUrXeM/hkTz9BWYKWwsQL+F+F6ba 33szjF8/78yWNf1bzTpneFSAKYjpI3yOvp8W6H6inWqpSZ1iihb+RwbDDe8s3PEhvhgi vDj0ee8rUBkFDkU7S79c0Qo92kLfWY5TOd2iR205OUdPg+do18/vEcLZhxwi1FAarPZq qBLBCXePFhJ91mxKFhPjsEMaJ3cSFz06unEBCrQvR2vQ2+I6xsufISdAGd/zpaFgfHgU OLRWQwd6w0TTTmTHkLFs7oJXIo1FYqWq8PkiZVOdV88O7/9pr42lsMMnNybSDS3n26AR Z4Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681201891; x=1683793891; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ayLDTpWuZIxLsedPt+hsAAoa6gCNFAAzQvAh5NQ9MpY=; b=IDc8802pfUz8tEQj8KNwjqfK3SzUQeIzNlJswsmYmEgixo2baWR9FKDPhZBpfrTui5 Z+rsSwP+aIO1tSOVGV5DrmwPoQ9aDA7eADMuzdC+2NBnlAwKkZLVK5pu7vSe5yFWPFm2 x4VRkV9CNnRzWXdyIcU8h3Mwcun50l/RVGCeHmzy/M1i/ELQ7XWKvWUe05e+sVbY1YJ0 H0/zL2Y41D7VtPBlZ9ySlE3e+yl1GMQ+vYqI5VvUv+OipsxF7M/ppZs1XpKOA8VeYJFL 0JhaqXxit1zMPTGwCePHUP4z67Q7/PCKsb4rqrkCVuz0EsXHzhBo/bKPKRABXD6f/pkt Sb5A== X-Gm-Message-State: AAQBX9fO0Lw3sKtSGcDE30Sckb6NuA8wko6coymSNOgp6D0R3AFDh7g9 JRxxsoyfcp8Y980x/XhS2QKJARk3yltGwVhYdf0= X-Google-Smtp-Source: AKy350Z7Qodycf1BICenm5Qe5wpiTcP7ja/H+TLciheIpBm3tPyfSiBKnLliOB/62pJwmMtsRjbWVcaPIcN9Vnyf3xQ= X-Received: by 2002:a19:ac07:0:b0:4ec:8aff:847f with SMTP id g7-20020a19ac07000000b004ec8aff847fmr1531184lfc.12.1681201891102; Tue, 11 Apr 2023 01:31:31 -0700 (PDT) MIME-Version: 1.0 References: <200bdb15-2621-2ba3-fc04-5fd20821f871@suse.cz> In-Reply-To: <200bdb15-2621-2ba3-fc04-5fd20821f871@suse.cz> From: Richard Biener Date: Tue, 11 Apr 2023 10:30:31 +0200 Message-ID: Subject: Re: [PATCH] ipa: propagate attributes for target attribute clones To: =?UTF-8?Q?Martin_Li=C5=A1ka?= Cc: gcc-patches@gcc.gnu.org, "H.J. Lu" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Mon, Apr 3, 2023 at 11:03=E2=80=AFAM Martin Li=C5=A1ka = wrote: > > Hi. > > The patch propagates noreturn attribute for MV functions. However, I noti= ced > we've got the following ICE when we do the same for TREE_READONLY attr: > > $ cat tc.c > double bar() __attribute__((target_clones("avx,avx2,avx512f,default"))); > double bar() { return 1.2f; } > > int foo() { return (int)bar(); } > > $ ./xgcc -B. ~/Programming/testcases/tc.c -O3 -c -fprofile-generate > /home/marxin/Programming/testcases/tc.c: In function =E2=80=98foo=E2=80= =99: > /home/marxin/Programming/testcases/tc.c:4:5: error: virtual definition of= statement not up to date > 4 | int foo() { return (int)bar(); } > | ^~~ > _1 =3D bar (); > during GIMPLE pass: fixup_cfg > > Thus my ambition is to propagate only noreturn attr. But wouldn't that mean the IL needs fixup for the call to the dispatcher which would be non-const for actually const implementations? That said, maybe the IPA cloning for the actual functions need adjustments as well? > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed? > Thanks, > Martin > > PR ipa/106816 > > gcc/ChangeLog: > > * config/i386/i386-features.cc (ix86_get_function_versions_dispat= cher): > Propagate function attributes for clones. > > gcc/testsuite/ChangeLog: > > * g++.target/i386/pr106816.C: New test. > > Co-Authored-By: H.J. Lu > --- > gcc/config/i386/i386-features.cc | 1 + > gcc/testsuite/g++.target/i386/pr106816.C | 23 +++++++++++++++++++++++ > 2 files changed, 24 insertions(+) > create mode 100644 gcc/testsuite/g++.target/i386/pr106816.C > > diff --git a/gcc/config/i386/i386-features.cc b/gcc/config/i386/i386-feat= ures.cc > index c09abf8fc20..f2b0d59a73c 100644 > --- a/gcc/config/i386/i386-features.cc > +++ b/gcc/config/i386/i386-features.cc > @@ -3379,6 +3379,7 @@ ix86_get_function_versions_dispatcher (void *decl) > /* Right now, the dispatching is done via ifunc. */ > dispatch_decl =3D make_dispatcher_decl (default_node->decl); > TREE_NOTHROW (dispatch_decl) =3D TREE_NOTHROW (fn); > + TREE_THIS_VOLATILE (dispatch_decl) =3D TREE_THIS_VOLATILE (fn); > > dispatcher_node =3D cgraph_node::get_create (dispatch_decl); > gcc_assert (dispatcher_node !=3D NULL); > diff --git a/gcc/testsuite/g++.target/i386/pr106816.C b/gcc/testsuite/g++= .target/i386/pr106816.C > new file mode 100644 > index 00000000000..0f5cc1f13dd > --- /dev/null > +++ b/gcc/testsuite/g++.target/i386/pr106816.C > @@ -0,0 +1,23 @@ > +// PR ipa/106816 > + > +// { dg-do compile } > +// { dg-require-ifunc "" } > +// { dg-options "-O2 -fdump-tree-optimized" } > + > +__attribute__((noreturn, target("default"))) void f() > +{ > + for (;;) {} > +} > + > +__attribute__((noreturn, target("sse4.2,bmi"))) void f() > +{ > + for (;;) {} > +} > + > +int main() > +{ > + f(); > + return 12345; > +} > + > +/* { dg-final { scan-tree-dump-not "12345" "optimized" } } */ > -- > 2.40.0 >