From patchwork Tue Jul 30 17:13:58 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew MacLeod X-Patchwork-Id: 263451 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 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 503C42C00A9 for ; Wed, 31 Jul 2013 03:15:02 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:references :in-reply-to:content-type; q=dns; s=default; b=e5QWPpR5N11a0FZOj +RaKaH3OjtC+367mqC4vUhvMXT6I+fQPqNNawDlbWEA6BM5WgpaEy5eMEe0e8+wQ bklaEcTe+AXjrMelhJjOcprGM8Sj2CdLsmYshb/NwjZBSGalMGZ4/ANpB55/TiuK PIwsUIGWwhQfncRPdhqq1Y2wzw= 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 :message-id:date:from:mime-version:to:subject:references :in-reply-to:content-type; s=default; bh=JRWI+h4Y0bbVe+tQDGdctQW BrWk=; b=H0vWlxegP5pjGi9HH1V2YTq4ICEkC1+R+RMj5l8CNiEHEXxeOPQjtJu JFGY9rQS9FD3mSTY3SKN6qUUTGNRy/v4aPB0BfOet65bseJ4qXMKn4wKGfQO7bNW QpnfebN7S6f1mi/foPuvCxjb+SAResQDiM7ojHEe8jOdxix/bKCE= Received: (qmail 29364 invoked by alias); 30 Jul 2013 17:14:11 -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 29310 invoked by uid 89); 30 Jul 2013 17:14:10 -0000 X-Spam-SWARE-Status: No, score=-5.0 required=5.0 tests=AWL, BAYES_50, KHOP_THREADED, RCVD_IN_HOSTKARMA_W, RCVD_IN_HOSTKARMA_WL, RDNS_NONE, SPF_HELO_PASS, SPF_PASS, UPPERCASE_75_100 autolearn=no version=3.3.1 Received: from Unknown (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 30 Jul 2013 17:14:07 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r6UHDxJG018689 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 30 Jul 2013 13:14:00 -0400 Received: from [10.10.61.198] (vpn-61-198.rdu2.redhat.com [10.10.61.198]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r6UHDwst026197 for ; Tue, 30 Jul 2013 13:13:59 -0400 Message-ID: <51F7F456.3060205@redhat.com> Date: Tue, 30 Jul 2013 13:13:58 -0400 From: Andrew MacLeod User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130514 Thunderbird/17.0.6 MIME-Version: 1.0 To: gcc-patches@gcc.gnu.org Subject: [PATCH 4/5] Atomic type qualifier - Change built-in function types References: <51F2AEB1.60408@redhat.com> <51F7EE86.20805@redhat.com> In-Reply-To: <51F7EE86.20805@redhat.com> X-Virus-Found: No This patch changes all the __Atomic built-in functions to take a pointer to an atomic volatile object instead of just a volatile object. This will allow the atomic operations to work with any requested alignment change for a target. I am not adding support for the __sync built-ins to expect the atomic qualifier as they are in deprecation mode. fortran * types.def (BT_ATOMIC_PTR, BT_CONST_ATOMIC_PTR): New primitive data types for volatile atomic pointers. (BT_FN_VOID_APTR): Renamed from BT_FN_VOID_VPTR. (BT_FN_VOID_VPTR_INT, BT_FN_BOOL_VPTR_INT, BT_FN_BOOL_SIZE_CONST_VPTR): Renamed to APTR variant. (BT_FN_I{1,2,4,8,16}_CONST_APTR_INT): New. (BT_FN_I{1,2,4,8,16}_APTR_I{1,2,4,8,16}_INT): New. (BT_FN_VOID_APTR_I{1,2,4,8,16}_INT): New. (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_FN_BOOL_VPTR_PTR_I{1,2,4,8,16}_BOOL_INT_INT): Renamed to APTR variant. gcc * builtin-types.def (BT_ATOMIC_PTR, BT_CONST_ATOMIC_PTR): New primitive data types for volatile atomic pointers. (BT_FN_VOID_APTR): Renamed from BT_FN_VOID_VPTR. (BT_FN_VOID_VPTR_INT, BT_FN_BOOL_VPTR_INT, BT_FN_BOOL_SIZE_CONST_VPTR): Renamed to APTR variant. (BT_FN_I{1,2,4,8,16}_CONST_APTR_INT): New. (BT_FN_I{1,2,4,8,16}_APTR_I{1,2,4,8,16}_INT): New. (BT_FN_VOID_APTR_I{1,2,4,8,16}_INT): New. (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_FN_BOOL_VPTR_PTR_I{1,2,4,8,16}_BOOL_INT_INT): Renamed to APTR variant. * sync-builtins.def: Change all __atomic builtins to use the APTR atomic pointer variant for the first parameter instead of VPTR.. doc * extend.texi: Add atomic pointer note to __atomic built-ins. Index: gcc/fortran/types.def =================================================================== *** gcc/fortran/types.def (revision 201248) --- gcc/fortran/types.def (working copy) *************** DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PT *** 74,79 **** --- 74,87 ---- build_pointer_type (build_qualified_type (void_type_node, TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST))) + DEF_PRIMITIVE_TYPE (BT_ATOMIC_PTR, + build_pointer_type + (build_qualified_type (void_type_node, + TYPE_QUAL_VOLATILE|TYPE_QUAL_ATOMIC))) + DEF_PRIMITIVE_TYPE (BT_CONST_ATOMIC_PTR, + build_pointer_type + (build_qualified_type (void_type_node, + TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST|TYPE_QUAL_ATOMIC))) DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG) DEF_POINTER_TYPE (BT_PTR_ULONGLONG, BT_ULONGLONG) DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR) *************** DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR *** 113,122 **** BT_INT) DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VPTR_INT, BT_VOID, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_VPTR_INT, BT_BOOL, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_VPTR, BT_BOOL, BT_SIZE, ! BT_CONST_VOLATILE_PTR) DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR) --- 121,140 ---- BT_INT) DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_APTR_INT, BT_I1, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_APTR_INT, BT_I2, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_APTR_INT, BT_I4, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_APTR_INT, BT_I8, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_APTR_INT, BT_I16, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_APTR_INT, BT_VOID, BT_ATOMIC_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_APTR_INT, BT_BOOL, BT_ATOMIC_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_APTR, BT_BOOL, BT_SIZE, ! BT_CONST_ATOMIC_PTR) DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR) *************** DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_IN *** 144,169 **** DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT) DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT, BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT) DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR, BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_VOLATILE_PTR, BT_PTR, BT_INT) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_CONST_VOLATILE_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR, BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_PTR_LONG, BT_PTR_LONG) ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR, BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG, --- 162,197 ---- DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I1_APTR_I1_INT, BT_I1, BT_ATOMIC_PTR, BT_I1, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I2_APTR_I2_INT, BT_I2, BT_ATOMIC_PTR, BT_I2, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I4_APTR_I4_INT, BT_I4, BT_ATOMIC_PTR, BT_I4, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I8_APTR_I8_INT, BT_I8, BT_ATOMIC_PTR, BT_I8, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I16_APTR_I16_INT, BT_I16, BT_ATOMIC_PTR, BT_I16, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I1_INT, BT_VOID, BT_ATOMIC_PTR, BT_I1, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I2_INT, BT_VOID, BT_ATOMIC_PTR, BT_I2, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I4_INT, BT_VOID, BT_ATOMIC_PTR, BT_I4, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I8_INT, BT_VOID, BT_ATOMIC_PTR, BT_I8, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I16_INT, BT_VOID, BT_ATOMIC_PTR, BT_I16, BT_INT) DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT, BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT) DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR, BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_APTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_ATOMIC_PTR, BT_PTR, BT_INT) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_APTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_CONST_ATOMIC_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR, BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_PTR_LONG, BT_PTR_LONG) ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_APTR_PTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR, BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG, *************** DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PT *** 174,196 **** DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR, BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE, ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT) DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, --- 202,224 ---- DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR, BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I1_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I2_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I4_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I8_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I16_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_APTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE, ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT) DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, Index: gcc/builtin-types.def =================================================================== *** gcc/builtin-types.def (revision 201248) --- gcc/builtin-types.def (working copy) *************** DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PT *** 99,104 **** --- 99,112 ---- build_pointer_type (build_qualified_type (void_type_node, TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST))) + DEF_PRIMITIVE_TYPE (BT_ATOMIC_PTR, + build_pointer_type + (build_qualified_type (void_type_node, + TYPE_QUAL_VOLATILE|TYPE_QUAL_ATOMIC))) + DEF_PRIMITIVE_TYPE (BT_CONST_ATOMIC_PTR, + build_pointer_type + (build_qualified_type (void_type_node, + TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST|TYPE_QUAL_ATOMIC))) DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0)) DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node) DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node) *************** DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLO *** 223,228 **** --- 231,237 ---- DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64) DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128) DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR) + DEF_FUNCTION_TYPE_1 (BT_FN_VOID_APTR, BT_VOID, BT_ATOMIC_PTR) DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR) DEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT) DEF_FUNCTION_TYPE_1 (BT_FN_ULONG_ULONG, BT_ULONG, BT_ULONG) *************** DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR *** 337,346 **** BT_INT) DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VPTR_INT, BT_VOID, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_VPTR_INT, BT_BOOL, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_VPTR, BT_BOOL, BT_SIZE, ! BT_CONST_VOLATILE_PTR) DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR) --- 346,365 ---- BT_INT) DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_VPTR_INT, BT_I16, BT_CONST_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_APTR_INT, BT_I1, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_APTR_INT, BT_I2, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_APTR_INT, BT_I4, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_APTR_INT, BT_I8, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I16_CONST_APTR_INT, BT_I16, BT_CONST_ATOMIC_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_VOID_APTR_INT, BT_VOID, BT_ATOMIC_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_APTR_INT, BT_BOOL, BT_ATOMIC_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_SIZE_CONST_APTR, BT_BOOL, BT_SIZE, ! BT_CONST_ATOMIC_PTR) DEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR) *************** DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_IN *** 420,430 **** --- 439,460 ---- DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_INT, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_INT, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_INT, BT_I16, BT_VOLATILE_PTR, BT_I16, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I1_APTR_I1_INT, BT_I1, BT_ATOMIC_PTR, BT_I1, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I2_APTR_I2_INT, BT_I2, BT_ATOMIC_PTR, BT_I2, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I4_APTR_I4_INT, BT_I4, BT_ATOMIC_PTR, BT_I4, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I8_APTR_I8_INT, BT_I8, BT_ATOMIC_PTR, BT_I8, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_I16_APTR_I16_INT, BT_I16, BT_ATOMIC_PTR, BT_I16, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I1_INT, BT_VOID, BT_VOLATILE_PTR, BT_I1, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I2_INT, BT_VOID, BT_VOLATILE_PTR, BT_I2, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I4_INT, BT_VOID, BT_VOLATILE_PTR, BT_I4, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I8_INT, BT_VOID, BT_VOLATILE_PTR, BT_I8, BT_INT) DEF_FUNCTION_TYPE_3 (BT_FN_VOID_VPTR_I16_INT, BT_VOID, BT_VOLATILE_PTR, BT_I16, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I1_INT, BT_VOID, BT_ATOMIC_PTR, BT_I1, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I2_INT, BT_VOID, BT_ATOMIC_PTR, BT_I2, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I4_INT, BT_VOID, BT_ATOMIC_PTR, BT_I4, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I8_INT, BT_VOID, BT_ATOMIC_PTR, BT_I8, BT_INT) + DEF_FUNCTION_TYPE_3 (BT_FN_VOID_APTR_I16_INT, BT_VOID, BT_ATOMIC_PTR, BT_I16, BT_INT) + DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR, BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR) *************** DEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PT *** 444,453 **** BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT) DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR, BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_VOLATILE_PTR, BT_PTR, BT_INT) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_CONST_VOLATILE_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, --- 474,483 ---- BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT) DEF_FUNCTION_TYPE_4 (BT_FN_VOID_PTR_WORD_WORD_PTR, BT_VOID, BT_PTR, BT_WORD, BT_WORD, BT_PTR) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_APTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_ATOMIC_PTR, BT_PTR, BT_INT) ! DEF_FUNCTION_TYPE_4 (BT_FN_VOID_SIZE_CONST_APTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_CONST_ATOMIC_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG, BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING, *************** DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_IN *** 455,462 **** DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR, BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_PTR_LONG, BT_PTR_LONG) ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I1_INT_INT, BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_INT, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I2_INT_INT, --- 485,492 ---- DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR, BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_PTR_LONG, BT_PTR_LONG) ! DEF_FUNCTION_TYPE_5 (BT_FN_VOID_SIZE_APTR_PTR_PTR_INT, BT_VOID, BT_SIZE, ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I1_INT_INT, BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_INT, BT_INT) DEF_FUNCTION_TYPE_5 (BT_FN_BOOL_VPTR_PTR_I2_INT_INT, *************** DEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PT *** 480,502 **** DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR, BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT, ! BT_BOOL, BT_VOLATILE_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE, ! BT_VOLATILE_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT) DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, --- 510,532 ---- DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR, BT_BOOL, BT_BOOL, BT_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I1_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I1, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I2_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I2, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I4_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I4, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I8_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I8, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_APTR_PTR_I16_BOOL_INT_INT, ! BT_BOOL, BT_ATOMIC_PTR, BT_PTR, BT_I16, BT_BOOL, BT_INT, BT_INT) ! DEF_FUNCTION_TYPE_6 (BT_FN_BOOL_SIZE_APTR_PTR_PTR_INT_INT, BT_BOOL, BT_SIZE, ! BT_ATOMIC_PTR, BT_PTR, BT_PTR, BT_INT, BT_INT) DEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, Index: gcc/sync-builtins.def =================================================================== *** gcc/sync-builtins.def (revision 201248) --- gcc/sync-builtins.def (working copy) *************** DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SYNCHRON *** 260,567 **** /* __sync* builtins for the C++ memory model. */ DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_TEST_AND_SET, "__atomic_test_and_set", ! BT_FN_BOOL_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_CLEAR, "__atomic_clear", BT_FN_VOID_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE, "__atomic_exchange", ! BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_N, "__atomic_exchange_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_1, "__atomic_exchange_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_2, "__atomic_exchange_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_4, "__atomic_exchange_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_8, "__atomic_exchange_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_16, "__atomic_exchange_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD, "__atomic_load", ! BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_N, "__atomic_load_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_1, "__atomic_load_1", ! BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_2, "__atomic_load_2", ! BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_4, "__atomic_load_4", ! BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_8, "__atomic_load_8", ! BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_16, "__atomic_load_16", ! BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE, "__atomic_compare_exchange", ! BT_FN_BOOL_SIZE_VPTR_PTR_PTR_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_N, "__atomic_compare_exchange_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1, "__atomic_compare_exchange_1", ! BT_FN_BOOL_VPTR_PTR_I1_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2, "__atomic_compare_exchange_2", ! BT_FN_BOOL_VPTR_PTR_I2_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4, "__atomic_compare_exchange_4", ! BT_FN_BOOL_VPTR_PTR_I4_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8, "__atomic_compare_exchange_8", ! BT_FN_BOOL_VPTR_PTR_I8_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16, "__atomic_compare_exchange_16", ! BT_FN_BOOL_VPTR_PTR_I16_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE, "__atomic_store", ! BT_FN_VOID_SIZE_VPTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_N, "__atomic_store_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_1, "__atomic_store_1", ! BT_FN_VOID_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_2, "__atomic_store_2", ! BT_FN_VOID_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_4, "__atomic_store_4", ! BT_FN_VOID_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_8, "__atomic_store_8", ! BT_FN_VOID_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_16, "__atomic_store_16", ! BT_FN_VOID_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_N, "__atomic_add_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_1, "__atomic_add_fetch_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_2, "__atomic_add_fetch_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_4, "__atomic_add_fetch_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_8, "__atomic_add_fetch_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_16, "__atomic_add_fetch_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_N, "__atomic_sub_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_1, "__atomic_sub_fetch_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_2, "__atomic_sub_fetch_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_4, "__atomic_sub_fetch_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_8, "__atomic_sub_fetch_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_16, "__atomic_sub_fetch_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_N, "__atomic_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_1, "__atomic_and_fetch_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_2, "__atomic_and_fetch_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_4, "__atomic_and_fetch_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_8, "__atomic_and_fetch_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_16, "__atomic_and_fetch_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_N, "__atomic_nand_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_1, "__atomic_nand_fetch_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_2, "__atomic_nand_fetch_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_4, "__atomic_nand_fetch_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_8, "__atomic_nand_fetch_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_16, "__atomic_nand_fetch_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_N, "__atomic_xor_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_1, "__atomic_xor_fetch_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_2, "__atomic_xor_fetch_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_4, "__atomic_xor_fetch_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_8, "__atomic_xor_fetch_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_16, "__atomic_xor_fetch_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_N, "__atomic_or_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_1, "__atomic_or_fetch_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_2, "__atomic_or_fetch_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_4, "__atomic_or_fetch_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_8, "__atomic_or_fetch_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_16, "__atomic_or_fetch_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_N, "__atomic_fetch_add", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_1, "__atomic_fetch_add_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_2, "__atomic_fetch_add_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_4, "__atomic_fetch_add_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_8, "__atomic_fetch_add_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_16, "__atomic_fetch_add_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_N, "__atomic_fetch_sub", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_1, "__atomic_fetch_sub_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_2, "__atomic_fetch_sub_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_4, "__atomic_fetch_sub_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_8, "__atomic_fetch_sub_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_16, "__atomic_fetch_sub_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_N, "__atomic_fetch_and", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_1, "__atomic_fetch_and_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_2, "__atomic_fetch_and_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_4, "__atomic_fetch_and_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_8, "__atomic_fetch_and_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_16, "__atomic_fetch_and_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_N, "__atomic_fetch_nand", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_1, "__atomic_fetch_nand_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_2, "__atomic_fetch_nand_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_4, "__atomic_fetch_nand_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_8, "__atomic_fetch_nand_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_16, "__atomic_fetch_nand_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_N, "__atomic_fetch_xor", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_1, "__atomic_fetch_xor_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_2, "__atomic_fetch_xor_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_4, "__atomic_fetch_xor_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_8, "__atomic_fetch_xor_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_16, "__atomic_fetch_xor_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_N, --- 260,567 ---- /* __sync* builtins for the C++ memory model. */ DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_TEST_AND_SET, "__atomic_test_and_set", ! BT_FN_BOOL_APTR_INT, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_CLEAR, "__atomic_clear", BT_FN_VOID_APTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE, "__atomic_exchange", ! BT_FN_VOID_SIZE_APTR_PTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_N, "__atomic_exchange_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_1, "__atomic_exchange_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_2, "__atomic_exchange_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_4, "__atomic_exchange_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_8, "__atomic_exchange_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_EXCHANGE_16, "__atomic_exchange_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD, "__atomic_load", ! BT_FN_VOID_SIZE_CONST_APTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_N, "__atomic_load_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_1, "__atomic_load_1", ! BT_FN_I1_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_2, "__atomic_load_2", ! BT_FN_I2_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_4, "__atomic_load_4", ! BT_FN_I4_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_8, "__atomic_load_8", ! BT_FN_I8_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_LOAD_16, "__atomic_load_16", ! BT_FN_I16_CONST_APTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE, "__atomic_compare_exchange", ! BT_FN_BOOL_SIZE_APTR_PTR_PTR_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_N, "__atomic_compare_exchange_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_1, "__atomic_compare_exchange_1", ! BT_FN_BOOL_APTR_PTR_I1_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_2, "__atomic_compare_exchange_2", ! BT_FN_BOOL_APTR_PTR_I2_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_4, "__atomic_compare_exchange_4", ! BT_FN_BOOL_APTR_PTR_I4_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_8, "__atomic_compare_exchange_8", ! BT_FN_BOOL_APTR_PTR_I8_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_COMPARE_EXCHANGE_16, "__atomic_compare_exchange_16", ! BT_FN_BOOL_APTR_PTR_I16_BOOL_INT_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE, "__atomic_store", ! BT_FN_VOID_SIZE_APTR_PTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_N, "__atomic_store_n", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_1, "__atomic_store_1", ! BT_FN_VOID_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_2, "__atomic_store_2", ! BT_FN_VOID_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_4, "__atomic_store_4", ! BT_FN_VOID_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_8, "__atomic_store_8", ! BT_FN_VOID_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_STORE_16, "__atomic_store_16", ! BT_FN_VOID_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_N, "__atomic_add_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_1, "__atomic_add_fetch_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_2, "__atomic_add_fetch_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_4, "__atomic_add_fetch_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_8, "__atomic_add_fetch_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ADD_FETCH_16, "__atomic_add_fetch_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_N, "__atomic_sub_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_1, "__atomic_sub_fetch_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_2, "__atomic_sub_fetch_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_4, "__atomic_sub_fetch_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_8, "__atomic_sub_fetch_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_SUB_FETCH_16, "__atomic_sub_fetch_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_N, "__atomic_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_1, "__atomic_and_fetch_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_2, "__atomic_and_fetch_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_4, "__atomic_and_fetch_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_8, "__atomic_and_fetch_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_AND_FETCH_16, "__atomic_and_fetch_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_N, "__atomic_nand_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_1, "__atomic_nand_fetch_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_2, "__atomic_nand_fetch_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_4, "__atomic_nand_fetch_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_8, "__atomic_nand_fetch_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_NAND_FETCH_16, "__atomic_nand_fetch_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_N, "__atomic_xor_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_1, "__atomic_xor_fetch_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_2, "__atomic_xor_fetch_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_4, "__atomic_xor_fetch_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_8, "__atomic_xor_fetch_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_XOR_FETCH_16, "__atomic_xor_fetch_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_N, "__atomic_or_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_1, "__atomic_or_fetch_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_2, "__atomic_or_fetch_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_4, "__atomic_or_fetch_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_8, "__atomic_or_fetch_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_OR_FETCH_16, "__atomic_or_fetch_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_N, "__atomic_fetch_add", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_1, "__atomic_fetch_add_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_2, "__atomic_fetch_add_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_4, "__atomic_fetch_add_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_8, "__atomic_fetch_add_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ADD_16, "__atomic_fetch_add_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_N, "__atomic_fetch_sub", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_1, "__atomic_fetch_sub_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_2, "__atomic_fetch_sub_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_4, "__atomic_fetch_sub_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_8, "__atomic_fetch_sub_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_SUB_16, "__atomic_fetch_sub_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_N, "__atomic_fetch_and", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_1, "__atomic_fetch_and_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_2, "__atomic_fetch_and_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_4, "__atomic_fetch_and_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_8, "__atomic_fetch_and_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_AND_16, "__atomic_fetch_and_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_N, "__atomic_fetch_nand", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_1, "__atomic_fetch_nand_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_2, "__atomic_fetch_nand_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_4, "__atomic_fetch_nand_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_8, "__atomic_fetch_nand_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_NAND_16, "__atomic_fetch_nand_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_N, "__atomic_fetch_xor", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_1, "__atomic_fetch_xor_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_2, "__atomic_fetch_xor_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_4, "__atomic_fetch_xor_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_8, "__atomic_fetch_xor_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_XOR_16, "__atomic_fetch_xor_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_N, *************** DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_ *** 569,595 **** BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_1, "__atomic_fetch_or_1", ! BT_FN_I1_VPTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_2, "__atomic_fetch_or_2", ! BT_FN_I2_VPTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4, "__atomic_fetch_or_4", ! BT_FN_I4_VPTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_8, "__atomic_fetch_or_8", ! BT_FN_I8_VPTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16, "__atomic_fetch_or_16", ! BT_FN_I16_VPTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE, "__atomic_always_lock_free", ! BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_IS_LOCK_FREE, "__atomic_is_lock_free", ! BT_FN_BOOL_SIZE_CONST_VPTR, ATTR_CONST_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_THREAD_FENCE, --- 569,595 ---- BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_1, "__atomic_fetch_or_1", ! BT_FN_I1_APTR_I1_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_2, "__atomic_fetch_or_2", ! BT_FN_I2_APTR_I2_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_4, "__atomic_fetch_or_4", ! BT_FN_I4_APTR_I4_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_8, "__atomic_fetch_or_8", ! BT_FN_I8_APTR_I8_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_FETCH_OR_16, "__atomic_fetch_or_16", ! BT_FN_I16_APTR_I16_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_ALWAYS_LOCK_FREE, "__atomic_always_lock_free", ! BT_FN_BOOL_SIZE_CONST_APTR, ATTR_CONST_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_IS_LOCK_FREE, "__atomic_is_lock_free", ! BT_FN_BOOL_SIZE_CONST_APTR, ATTR_CONST_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_ATOMIC_THREAD_FENCE, Index: gcc/doc/extend.texi =================================================================== *** gcc/doc/extend.texi (revision 201248) --- gcc/doc/extend.texi (working copy) *************** reserved for the memory model. The rema *** 7320,7325 **** --- 7320,7334 ---- for future use and should be 0. Use of the predefined atomic values ensures proper usage. + All __atomic built-in functions expect the first parameter to be a type with + the atomic attribute set. It is OK on most targets to continue using the + non-atomic version for backward compatability. The only time there will be a + compatability issues is if the atomic implementation for a target overrides + the alignment of the atomic type in order to implement lock free routines. + This facility did not exist before GCC 4.9, so there are no compatibility + issues up until then. Targets with such requirements would have had + non-function atomic lockfree operations up until this facility became available. + @deftypefn {Built-in Function} @var{type} __atomic_load_n (@var{type} *ptr, int memmodel) This built-in function implements an atomic load operation. It returns the contents of @code{*@var{ptr}}.