From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7641 invoked by alias); 23 Aug 2011 22:13:22 -0000 Received: (qmail 7622 invoked by uid 22791); 23 Aug 2011 22:13:19 -0000 X-SWARE-Spam-Status: No, hits=-7.1 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS,UPPERCASE_50_75 X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 23 Aug 2011 22:13:02 +0000 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p7NMD1Wu025100 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 23 Aug 2011 18:13:01 -0400 Received: from [10.11.11.26] (vpn-11-26.rdu.redhat.com [10.11.11.26]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p7NMD0kM007117; Tue, 23 Aug 2011 18:13:01 -0400 Message-ID: <4E5425EC.1040906@redhat.com> Date: Tue, 23 Aug 2011 23:24:00 -0000 From: Andrew MacLeod User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110428 Fedora/3.1.10-1.fc13 Thunderbird/3.1.10 MIME-Version: 1.0 To: Richard Henderson CC: gcc-patches Subject: Re: [cxx-mem-model] Atomic C++ header file changes References: <4E4BE0BE.8000901@redhat.com> <4E4D9349.30702@redhat.com> In-Reply-To: <4E4D9349.30702@redhat.com> Content-Type: multipart/mixed; boundary="------------080300070909010001070407" X-IsSubscribed: yes 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 X-SW-Source: 2011-08/txt/msg01955.txt.bz2 This is a multi-part message in MIME format. --------------080300070909010001070407 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 351 On 08/18/2011 06:33 PM, Richard Henderson wrote: > On 08/17/2011 08:39 AM, Andrew MacLeod wrote: >> ! return __sync_mem_load (const_cast<__int_type *>(&_M_i), __m); > This suggests the builtin is incorrectly defined. > It ought to be const itself. > Err, right. This patch declares the function properly and the casts are no longer needed. Andrew --------------080300070909010001070407 Content-Type: text/plain; name="const.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="const.diff" Content-length: 7099 * builtin-types.def (BT_CONST_VOLATILE_PTR): New primitive type. (BT_FN_I{1,2,4,8,16}_VPTR_INT): Change prototype to be const. * sync-builtins.def (BUILT_IN_SYNC_MEM_LOAD_*): Change to be const. * fortan/types.def (BUILT_IN_SYNC_MEM_LOAD_*): Change to be const. Index: builtin-types.def =================================================================== *** builtin-types.def (revision 177737) --- builtin-types.def (working copy) *************** DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR, *** 95,100 **** --- 95,104 ---- build_pointer_type (build_qualified_type (void_type_node, TYPE_QUAL_VOLATILE))) + DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PTR, + build_pointer_type + (build_qualified_type (void_type_node, + TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST))) 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_2 (BT_FN_BOOL_LONGPTR_ *** 315,325 **** BT_BOOL, BT_PTR_LONG, BT_PTR_LONG) DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, BT_BOOL, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_INT, BT_I1, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_INT, BT_I2, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_INT, BT_I4, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_INT, BT_I8, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_INT, BT_I16, BT_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) --- 319,334 ---- BT_BOOL, BT_PTR_LONG, BT_PTR_LONG) DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR, BT_BOOL, BT_PTR_ULONGLONG, BT_PTR_ULONGLONG) ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_VPTR_INT, BT_I1, BT_CONST_VOLATILE_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_VPTR_INT, BT_I2, BT_CONST_VOLATILE_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_VPTR_INT, BT_I4, BT_CONST_VOLATILE_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR_INT, BT_I8, BT_CONST_VOLATILE_PTR, ! 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) Index: sync-builtins.def =================================================================== *** sync-builtins.def (revision 177737) --- sync-builtins.def (working copy) *************** DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD *** 283,301 **** BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_1, "__sync_mem_load_1", ! BT_FN_I1_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_2, "__sync_mem_load_2", ! BT_FN_I2_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_4, "__sync_mem_load_4", ! BT_FN_I4_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_8, "__sync_mem_load_8", ! BT_FN_I8_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_16, "__sync_mem_load_16", ! BT_FN_I16_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_COMPARE_EXCHANGE_N, "__sync_mem_compare_exchange", --- 283,301 ---- BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_1, "__sync_mem_load_1", ! BT_FN_I1_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_2, "__sync_mem_load_2", ! BT_FN_I2_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_4, "__sync_mem_load_4", ! BT_FN_I4_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_8, "__sync_mem_load_8", ! BT_FN_I8_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_LOAD_16, "__sync_mem_load_16", ! BT_FN_I16_CONST_VPTR_INT, ATTR_NOTHROW_LEAF_LIST) DEF_SYNC_BUILTIN (BUILT_IN_SYNC_MEM_COMPARE_EXCHANGE_N, "__sync_mem_compare_exchange", Index: fortran/types.def =================================================================== *** fortran/types.def (revision 177737) --- fortran/types.def (working copy) *************** DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR, *** 70,76 **** build_pointer_type (build_qualified_type (void_type_node, TYPE_QUAL_VOLATILE))) ! DEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG) DEF_POINTER_TYPE (BT_PTR_ULONGLONG, BT_ULONGLONG) DEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR) --- 70,79 ---- build_pointer_type (build_qualified_type (void_type_node, TYPE_QUAL_VOLATILE))) ! DEF_PRIMITIVE_TYPE (BT_CONST_VOLATILE_PTR, ! build_pointer_type ! (build_qualified_type (void_type_node, ! TYPE_QUAL_VOLATILE|TYPE_QUAL_CONST))) 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_I4_VPTR_I4, B *** 100,110 **** DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8) DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16) DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR) ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_INT, BT_I1, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_INT, BT_I2, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_INT, BT_I4, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_INT, BT_I8, BT_VOLATILE_PTR, BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_INT, BT_I16, BT_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) --- 103,118 ---- DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8) DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16) DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR) ! DEF_FUNCTION_TYPE_2 (BT_FN_I1_CONST_VPTR_INT, BT_I1, BT_CONST_VOLATILE_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I2_CONST_VPTR_INT, BT_I2, BT_CONST_VOLATILE_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I4_CONST_VPTR_INT, BT_I4, BT_CONST_VOLATILE_PTR, ! BT_INT) ! DEF_FUNCTION_TYPE_2 (BT_FN_I8_CONST_VPTR_INT, BT_I8, BT_CONST_VOLATILE_PTR, ! 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) --------------080300070909010001070407--