From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 41211 invoked by alias); 30 Jul 2018 13:16:50 -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 41197 invoked by uid 89); 30 Jul 2018 13:16:49 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.2 spammy=sk:specba, GmbH, gmbh, UD:spec-barrier-1.c 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; Mon, 30 Jul 2018 13:16:48 +0000 Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 16E10ADD4; Mon, 30 Jul 2018 13:16:46 +0000 (UTC) Date: Mon, 30 Jul 2018 13:16:00 -0000 From: Richard Biener To: Richard Earnshaw cc: gcc-patches@gcc.gnu.org, joseph@codesourcery.com, jason@redhat.com, nathan@acm.org Subject: Re: [PATCH 01/11] Add __builtin_speculation_safe_value In-Reply-To: <1532684275-13041-2-git-send-email-Richard.Earnshaw@arm.com> Message-ID: References: <1531154299-28349-1-git-send-email-Richard.Earnshaw@arm.com> <1532684275-13041-1-git-send-email-Richard.Earnshaw@arm.com> <1532684275-13041-2-git-send-email-Richard.Earnshaw@arm.com> User-Agent: Alpine 2.20 (LSU 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-SW-Source: 2018-07/txt/msg01837.txt.bz2 On Fri, 27 Jul 2018, Richard Earnshaw wrote: > > This patch defines a new intrinsic function > __builtin_speculation_safe_value. A generic default implementation is > defined which will attempt to use the backend pattern > "speculation_safe_barrier". If this pattern is not defined, or if it > is not available, then the compiler will emit a warning, but > compilation will continue. > > Note that the test spec-barrier-1.c will currently fail on all > targets. This is deliberate, the failure will go away when > appropriate action is taken for each target backend. OK. Thanks, Richard. > gcc: > * builtin-types.def (BT_FN_PTR_PTR_VAR): New function type. > (BT_FN_I1_I1_VAR, BT_FN_I2_I2_VAR, BT_FN_I4_I4_VAR): Likewise. > (BT_FN_I8_I8_VAR, BT_FN_I16_I16_VAR): Likewise. > * builtin-attrs.def (ATTR_NOVOPS_NOTHROW_LEAF_LIST): New attribute > list. > * builtins.def (BUILT_IN_SPECULATION_SAFE_VALUE_N): New builtin. > (BUILT_IN_SPECULATION_SAFE_VALUE_PTR): New internal builtin. > (BUILT_IN_SPECULATION_SAFE_VALUE_1): Likewise. > (BUILT_IN_SPECULATION_SAFE_VALUE_2): Likewise. > (BUILT_IN_SPECULATION_SAFE_VALUE_4): Likewise. > (BUILT_IN_SPECULATION_SAFE_VALUE_8): Likewise. > (BUILT_IN_SPECULATION_SAFE_VALUE_16): Likewise. > * builtins.c (expand_speculation_safe_value): New function. > (expand_builtin): Call it. > * doc/cpp.texi: Document predefine __HAVE_SPECULATION_SAFE_VALUE. > * doc/extend.texi: Document __builtin_speculation_safe_value. > * doc/md.texi: Document "speculation_barrier" pattern. > * doc/tm.texi.in: Pull in TARGET_SPECULATION_SAFE_VALUE and > TARGET_HAVE_SPECULATION_SAFE_VALUE. > * doc/tm.texi: Regenerated. > * target.def (have_speculation_safe_value, speculation_safe_value): New > hooks. > * targhooks.c (default_have_speculation_safe_value): New function. > (default_speculation_safe_value): New function. > * targhooks.h (default_have_speculation_safe_value): Add prototype. > (default_speculation_safe_value): Add prototype. > > c-family: > * c-common.c (speculation_safe_resolve_call): New function. > (speculation_safe_resolve_params): New function. > (speculation_safe_resolve_return): New function. > (resolve_overloaded_builtin): Handle __builtin_speculation_safe_value. > * c-cppbuiltin.c (c_cpp_builtins): Add pre-define for > __HAVE_SPECULATION_SAFE_VALUE. > > testsuite: > * c-c++-common/spec-barrier-1.c: New test. > * c-c++-common/spec-barrier-2.c: New test. > * gcc.dg/spec-barrier-3.c: New test. > --- > gcc/builtin-attrs.def | 2 + > gcc/builtin-types.def | 6 + > gcc/builtins.c | 60 ++++++++++ > gcc/builtins.def | 22 ++++ > gcc/c-family/c-common.c | 164 ++++++++++++++++++++++++++++ > gcc/c-family/c-cppbuiltin.c | 7 +- > gcc/doc/cpp.texi | 4 + > gcc/doc/extend.texi | 91 +++++++++++++++ > gcc/doc/md.texi | 15 +++ > gcc/doc/tm.texi | 31 ++++++ > gcc/doc/tm.texi.in | 4 + > gcc/target.def | 35 ++++++ > gcc/targhooks.c | 32 ++++++ > gcc/targhooks.h | 3 + > gcc/testsuite/c-c++-common/spec-barrier-1.c | 38 +++++++ > gcc/testsuite/c-c++-common/spec-barrier-2.c | 17 +++ > gcc/testsuite/gcc.dg/spec-barrier-3.c | 13 +++ > 17 files changed, 543 insertions(+), 1 deletion(-) > create mode 100644 gcc/testsuite/c-c++-common/spec-barrier-1.c > create mode 100644 gcc/testsuite/c-c++-common/spec-barrier-2.c > create mode 100644 gcc/testsuite/gcc.dg/spec-barrier-3.c > > -- Richard Biener SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)