From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30489 invoked by alias); 21 Jun 2011 18:47:19 -0000 Received: (qmail 30465 invoked by uid 22791); 21 Jun 2011 18:47:12 -0000 X-SWARE-Spam-Status: No, hits=-6.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_FN,TW_PX,TW_TM,T_RP_MATCHES_RCVD,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, 21 Jun 2011 18:46:47 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p5LIkcxe010728 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 21 Jun 2011 14:46:38 -0400 Received: from [10.11.10.254] (vpn-10-254.rdu.redhat.com [10.11.10.254]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p5LIkasY012688; Tue, 21 Jun 2011 14:46:36 -0400 Message-ID: <4E00E70B.2050706@redhat.com> Date: Tue, 21 Jun 2011 18:56:00 -0000 From: Andrew MacLeod User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc13 Thunderbird/3.1.7 MIME-Version: 1.0 To: Richard Henderson CC: Aldy Hernandez , Jakub Jelinek , "Joseph S. Myers" , gcc-patches Subject: Re: __sync_swap* [ rename sync builtins ] References: <4DDAE516.4010307@redhat.com> <4DE3F8ED.6020109@redhat.com> <4DE7E0A6.9070400@redhat.com> <20110602192514.GA17079@tyan-ft48-01.lab.bos.redhat.com> <4DE7EA11.30306@redhat.com> <4DE8EF17.5020400@redhat.com> <4DFBC33E.60408@redhat.com> <4DFCFCE2.1090307@redhat.com> <4DFF73C1.6080609@redhat.com> <4DFFCAC6.7020206@redhat.com> <4DFFCF63.5040905@redhat.com> <4DFFD078.4090908@redhat.com> In-Reply-To: <4DFFD078.4090908@redhat.com> Content-Type: multipart/mixed; boundary="------------050305000004010005060309" 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-06/txt/msg01621.txt.bz2 This is a multi-part message in MIME format. --------------050305000004010005060309 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2800 On 06/20/2011 06:58 PM, Richard Henderson wrote: > > If you'd like to rename the existing stuff on mainline while you're > waiting for something else to run, please do. > OK, I generated a script to fix all the places where the built-in expansion name is missing the sync_ part of the built-in's real name. It looked in all .c .h and .def files in gcc and subdirectories. I had to manually modify 3 different area the longer names caused line wrapping. I did a full bootstrap/testsuite regression check on a fresh checkout today on x86_64-unknown-linux-gnu. The change should be purely cosmestic. I presume this is what you were looking for... OK to check into mainline? The rename script (I think I got everything): s/BUILT_IN_FETCH_AND_ADD/BUILT_IN_SYNC_FETCH_AND_ADD/g s/BUILT_IN_FETCH_AND_SUB/BUILT_IN_SYNC_FETCH_AND_SUB/g s/BUILT_IN_FETCH_AND_OR/BUILT_IN_SYNC_FETCH_AND_OR/g s/BUILT_IN_FETCH_AND_AND/BUILT_IN_SYNC_FETCH_AND_AND/g s/BUILT_IN_FETCH_AND_XOR/BUILT_IN_SYNC_FETCH_AND_XOR/g s/BUILT_IN_FETCH_AND_NAND/BUILT_IN_SYNC_FETCH_AND_NAND/g s/BUILT_IN_ADD_AND_FETCH/BUILT_IN_SYNC_ADD_AND_FETCH/g s/BUILT_IN_SUB_AND_FETCH/BUILT_IN_SYNC_SUB_AND_FETCH/g s/BUILT_IN_OR_AND_FETCH/BUILT_IN_SYNC_OR_AND_FETCH/g s/BUILT_IN_AND_AND_FETCH/BUILT_IN_SYNC_AND_AND_FETCH/g s/BUILT_IN_XOR_AND_FETCH/BUILT_IN_SYNC_XOR_AND_FETCH/g s/BUILT_IN_NAND_AND_FETCH/BUILT_IN_SYNC_NAND_AND_FETCH/g s/BUILT_IN_BOOL_COMPARE_AND_SWAP/BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP/g s/BUILT_IN_VAL_COMPARE_AND_SWAP/BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP/g s/BUILT_IN_LOCK_TEST_AND_SET/BUILT_IN_SYNC_LOCK_TEST_AND_SET/g s/BUILT_IN_LOCK_RELEASE/BUILT_IN_SYNC_LOCK_RELEASE/g s/BUILT_IN_SYNCHRONIZE/BUILT_IN_SYNC_SYNCHRONIZE/g s/builtin_fetch_and_add/builtin_sync_fetch_and_add/g s/builtin_fetch_and_sub/builtin_sync_fetch_and_sub/g s/builtin_fetch_and_or/builtin_sync_fetch_and_or/g s/builtin_fetch_and_and/builtin_sync_fetch_and_and/g s/builtin_fetch_and_xor/builtin_sync_fetch_and_xor/g s/builtin_fetch_and_nand/builtin_sync_fetch_and_nand/g s/builtin_add_and_fetch/builtin_sync_add_and_fetch/g s/builtin_sub_and_fetch/builtin_sync_sub_and_fetch/g s/builtin_or_and_fetch/builtin_sync_or_and_fetch/g s/builtin_and_and_fetch/builtin_sync_and_and_fetch/g s/builtin_xor_and_fetch/builtin_sync_xor_and_fetch/g s/builtin_nand_and_fetch/builtin_sync_nand_and_fetch/g s/builtin_bool_compare_and_swap/builtin_sync_bool_compare_and_swap/g s/builtin_val_compare_and_swap/builtin_sync_val_compare_and_swap/g s/builtin_lock_test_and_set/builtin_sync_lock_test_and_set/g s/builtin_lock_release/builtin_sync_lock_release/g s/builtin_synchronize/builtin_sync_synchronize/g --------------050305000004010005060309 Content-Type: text/plain; name="rename.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="rename.patch" Content-length: 59441 * c-family/c-common.c: Add sync_ or SYNC__ to builtin names. * c-family/c-omp.c: Add sync_ or SYNC__ to builtin names. * java/builtins.c: Add sync_ or SYNC__ to builtin names. * java/expr.c: Add sync_ or SYNC__ to builtin names. * builtins.c: Add sync_ or SYNC__ to builtin names. * sync-builtins.def: Add sync_ or SYNC__ to builtin names. * omp-low.c: Add sync_ or SYNC__ to builtin names. * cp/semantics.c: Add sync_ or SYNC__ to builtin names. * fortran/trans-openmp.c: Add sync_ or SYNC__ to builtin names. * fortran/trans-stmt.c: Add sync_ or SYNC__ to builtin names. * fortran/trans-decl.c: Add sync_ or SYNC__ to builtin names. Index: c-family/c-common.c =================================================================== *** c-family/c-common.c (revision 175226) --- c-family/c-common.c (working copy) *************** resolve_overloaded_builtin (location_t l *** 9044,9065 **** /* Handle BUILT_IN_NORMAL here. */ switch (orig_code) { ! case BUILT_IN_FETCH_AND_ADD_N: ! case BUILT_IN_FETCH_AND_SUB_N: ! case BUILT_IN_FETCH_AND_OR_N: ! case BUILT_IN_FETCH_AND_AND_N: ! case BUILT_IN_FETCH_AND_XOR_N: ! case BUILT_IN_FETCH_AND_NAND_N: ! case BUILT_IN_ADD_AND_FETCH_N: ! case BUILT_IN_SUB_AND_FETCH_N: ! case BUILT_IN_OR_AND_FETCH_N: ! case BUILT_IN_AND_AND_FETCH_N: ! case BUILT_IN_XOR_AND_FETCH_N: ! case BUILT_IN_NAND_AND_FETCH_N: ! case BUILT_IN_BOOL_COMPARE_AND_SWAP_N: ! case BUILT_IN_VAL_COMPARE_AND_SWAP_N: ! case BUILT_IN_LOCK_TEST_AND_SET_N: ! case BUILT_IN_LOCK_RELEASE_N: { int n = sync_resolve_size (function, params); tree new_function, first_param, result; --- 9044,9065 ---- /* Handle BUILT_IN_NORMAL here. */ switch (orig_code) { ! case BUILT_IN_SYNC_FETCH_AND_ADD_N: ! case BUILT_IN_SYNC_FETCH_AND_SUB_N: ! case BUILT_IN_SYNC_FETCH_AND_OR_N: ! case BUILT_IN_SYNC_FETCH_AND_AND_N: ! case BUILT_IN_SYNC_FETCH_AND_XOR_N: ! case BUILT_IN_SYNC_FETCH_AND_NAND_N: ! case BUILT_IN_SYNC_ADD_AND_FETCH_N: ! case BUILT_IN_SYNC_SUB_AND_FETCH_N: ! case BUILT_IN_SYNC_OR_AND_FETCH_N: ! case BUILT_IN_SYNC_AND_AND_FETCH_N: ! case BUILT_IN_SYNC_XOR_AND_FETCH_N: ! case BUILT_IN_SYNC_NAND_AND_FETCH_N: ! case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_N: ! case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_N: ! case BUILT_IN_SYNC_LOCK_TEST_AND_SET_N: ! case BUILT_IN_SYNC_LOCK_RELEASE_N: { int n = sync_resolve_size (function, params); tree new_function, first_param, result; *************** resolve_overloaded_builtin (location_t l *** 9073,9080 **** first_param = VEC_index (tree, params, 0); result = build_function_call_vec (loc, new_function, params, NULL); ! if (orig_code != BUILT_IN_BOOL_COMPARE_AND_SWAP_N ! && orig_code != BUILT_IN_LOCK_RELEASE_N) result = sync_resolve_return (first_param, result); return result; --- 9073,9080 ---- first_param = VEC_index (tree, params, 0); result = build_function_call_vec (loc, new_function, params, NULL); ! if (orig_code != BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_N ! && orig_code != BUILT_IN_SYNC_LOCK_RELEASE_N) result = sync_resolve_return (first_param, result); return result; Index: c-family/c-omp.c =================================================================== *** c-family/c-omp.c (revision 175226) --- c-family/c-omp.c (working copy) *************** c_finish_omp_flush (location_t loc) *** 169,175 **** { tree x; ! x = built_in_decls[BUILT_IN_SYNCHRONIZE]; x = build_call_expr_loc (loc, x, 0); add_stmt (x); } --- 169,175 ---- { tree x; ! x = built_in_decls[BUILT_IN_SYNC_SYNCHRONIZE]; x = build_call_expr_loc (loc, x, 0); add_stmt (x); } Index: java/builtins.c =================================================================== *** java/builtins.c (revision 175226) --- java/builtins.c (working copy) *************** compareAndSwapInt_builtin (tree method_r *** 331,338 **** (void) value_type; /* Avoid set but not used warning. */ addr = build_addr_sum (int_type_node, obj_arg, offset_arg); ! stmt = build_call_expr (built_in_decls[BUILT_IN_BOOL_COMPARE_AND_SWAP_4], ! 3, addr, expected_arg, value_arg); return build_check_this (stmt, this_arg); } --- 331,339 ---- (void) value_type; /* Avoid set but not used warning. */ addr = build_addr_sum (int_type_node, obj_arg, offset_arg); ! stmt = build_call_expr ! (built_in_decls[BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4], ! 3, addr, expected_arg, value_arg); return build_check_this (stmt, this_arg); } *************** compareAndSwapLong_builtin (tree method_ *** 357,364 **** (void) value_type; /* Avoid set but not used warning. */ addr = build_addr_sum (long_type_node, obj_arg, offset_arg); ! stmt = build_call_expr (built_in_decls[BUILT_IN_BOOL_COMPARE_AND_SWAP_8], ! 3, addr, expected_arg, value_arg); return build_check_this (stmt, this_arg); } --- 358,366 ---- (void) value_type; /* Avoid set but not used warning. */ addr = build_addr_sum (long_type_node, obj_arg, offset_arg); ! stmt = build_call_expr ! (built_in_decls[BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8], ! 3, addr, expected_arg, value_arg); return build_check_this (stmt, this_arg); } *************** compareAndSwapObject_builtin (tree metho *** 378,385 **** UNMARSHAL5 (orig_call); builtin = (POINTER_SIZE == 32 ! ? BUILT_IN_BOOL_COMPARE_AND_SWAP_4 ! : BUILT_IN_BOOL_COMPARE_AND_SWAP_8); addr = build_addr_sum (value_type, obj_arg, offset_arg); stmt = build_call_expr (built_in_decls[builtin], --- 380,387 ---- UNMARSHAL5 (orig_call); builtin = (POINTER_SIZE == 32 ! ? BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4 ! : BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8); addr = build_addr_sum (value_type, obj_arg, offset_arg); stmt = build_call_expr (built_in_decls[builtin], *************** putVolatile_builtin (tree method_return_ *** 402,408 **** = fold_convert (build_pointer_type (build_type_variant (value_type, 0, 1)), addr); ! stmt = build_call_expr (built_in_decls[BUILT_IN_SYNCHRONIZE], 0); modify_stmt = fold_build2 (MODIFY_EXPR, value_type, build_java_indirect_ref (value_type, addr, flag_check_references), --- 404,410 ---- = fold_convert (build_pointer_type (build_type_variant (value_type, 0, 1)), addr); ! stmt = build_call_expr (built_in_decls[BUILT_IN_SYNC_SYNCHRONIZE], 0); modify_stmt = fold_build2 (MODIFY_EXPR, value_type, build_java_indirect_ref (value_type, addr, flag_check_references), *************** getVolatile_builtin (tree method_return_ *** 426,432 **** = fold_convert (build_pointer_type (build_type_variant (method_return_type, 0, 1)), addr); ! stmt = build_call_expr (built_in_decls[BUILT_IN_SYNCHRONIZE], 0); tmp = build_decl (BUILTINS_LOCATION, VAR_DECL, NULL, method_return_type); DECL_IGNORED_P (tmp) = 1; --- 428,434 ---- = fold_convert (build_pointer_type (build_type_variant (method_return_type, 0, 1)), addr); ! stmt = build_call_expr (built_in_decls[BUILT_IN_SYNC_SYNCHRONIZE], 0); tmp = build_decl (BUILTINS_LOCATION, VAR_DECL, NULL, method_return_type); DECL_IGNORED_P (tmp) = 1; *************** initialize_builtins (void) *** 573,593 **** boolean_ftype_boolean_boolean, "__builtin_expect", BUILTIN_CONST | BUILTIN_NOTHROW); ! define_builtin (BUILT_IN_BOOL_COMPARE_AND_SWAP_4, "__sync_bool_compare_and_swap_4", build_function_type_list (boolean_type_node, int_type_node, build_pointer_type (int_type_node), int_type_node, NULL_TREE), "__sync_bool_compare_and_swap_4", 0); ! define_builtin (BUILT_IN_BOOL_COMPARE_AND_SWAP_8, "__sync_bool_compare_and_swap_8", build_function_type_list (boolean_type_node, long_type_node, build_pointer_type (long_type_node), int_type_node, NULL_TREE), "__sync_bool_compare_and_swap_8", 0); ! define_builtin (BUILT_IN_SYNCHRONIZE, "__sync_synchronize", build_function_type_list (void_type_node, NULL_TREE), "__sync_synchronize", BUILTIN_NOTHROW); --- 575,595 ---- boolean_ftype_boolean_boolean, "__builtin_expect", BUILTIN_CONST | BUILTIN_NOTHROW); ! define_builtin (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4, "__sync_bool_compare_and_swap_4", build_function_type_list (boolean_type_node, int_type_node, build_pointer_type (int_type_node), int_type_node, NULL_TREE), "__sync_bool_compare_and_swap_4", 0); ! define_builtin (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8, "__sync_bool_compare_and_swap_8", build_function_type_list (boolean_type_node, long_type_node, build_pointer_type (long_type_node), int_type_node, NULL_TREE), "__sync_bool_compare_and_swap_8", 0); ! define_builtin (BUILT_IN_SYNC_SYNCHRONIZE, "__sync_synchronize", build_function_type_list (void_type_node, NULL_TREE), "__sync_synchronize", BUILTIN_NOTHROW); Index: java/expr.c =================================================================== *** java/expr.c (revision 175226) --- java/expr.c (working copy) *************** expand_java_field_op (int is_static, int *** 2940,2946 **** if (TREE_THIS_VOLATILE (field_decl)) java_add_stmt ! (build_call_expr (built_in_decls[BUILT_IN_SYNCHRONIZE], 0)); java_add_stmt (modify_expr); } --- 2940,2946 ---- if (TREE_THIS_VOLATILE (field_decl)) java_add_stmt ! (build_call_expr (built_in_decls[BUILT_IN_SYNC_SYNCHRONIZE], 0)); java_add_stmt (modify_expr); } *************** expand_java_field_op (int is_static, int *** 2959,2965 **** if (TREE_THIS_VOLATILE (field_decl)) java_add_stmt ! (build_call_expr (built_in_decls[BUILT_IN_SYNCHRONIZE], 0)); push_value (temp); } --- 2959,2965 ---- if (TREE_THIS_VOLATILE (field_decl)) java_add_stmt ! (build_call_expr (built_in_decls[BUILT_IN_SYNC_SYNCHRONIZE], 0)); push_value (temp); } Index: builtins.c =================================================================== *** builtins.c (revision 175226) --- builtins.c (working copy) *************** expand_builtin_sync_operation (enum mach *** 5083,5112 **** switch (fcode) { ! case BUILT_IN_FETCH_AND_NAND_1: ! case BUILT_IN_FETCH_AND_NAND_2: ! case BUILT_IN_FETCH_AND_NAND_4: ! case BUILT_IN_FETCH_AND_NAND_8: ! case BUILT_IN_FETCH_AND_NAND_16: if (warned_f_a_n) break; ! fndecl = implicit_built_in_decls[BUILT_IN_FETCH_AND_NAND_N]; inform (loc, "%qD changed semantics in GCC 4.4", fndecl); warned_f_a_n = true; break; ! case BUILT_IN_NAND_AND_FETCH_1: ! case BUILT_IN_NAND_AND_FETCH_2: ! case BUILT_IN_NAND_AND_FETCH_4: ! case BUILT_IN_NAND_AND_FETCH_8: ! case BUILT_IN_NAND_AND_FETCH_16: if (warned_n_a_f) break; ! fndecl = implicit_built_in_decls[BUILT_IN_NAND_AND_FETCH_N]; inform (loc, "%qD changed semantics in GCC 4.4", fndecl); warned_n_a_f = true; break; --- 5083,5112 ---- switch (fcode) { ! case BUILT_IN_SYNC_FETCH_AND_NAND_1: ! case BUILT_IN_SYNC_FETCH_AND_NAND_2: ! case BUILT_IN_SYNC_FETCH_AND_NAND_4: ! case BUILT_IN_SYNC_FETCH_AND_NAND_8: ! case BUILT_IN_SYNC_FETCH_AND_NAND_16: if (warned_f_a_n) break; ! fndecl = implicit_built_in_decls[BUILT_IN_SYNC_FETCH_AND_NAND_N]; inform (loc, "%qD changed semantics in GCC 4.4", fndecl); warned_f_a_n = true; break; ! case BUILT_IN_SYNC_NAND_AND_FETCH_1: ! case BUILT_IN_SYNC_NAND_AND_FETCH_2: ! case BUILT_IN_SYNC_NAND_AND_FETCH_4: ! case BUILT_IN_SYNC_NAND_AND_FETCH_8: ! case BUILT_IN_SYNC_NAND_AND_FETCH_16: if (warned_n_a_f) break; ! fndecl = implicit_built_in_decls[BUILT_IN_SYNC_NAND_AND_FETCH_N]; inform (loc, "%qD changed semantics in GCC 4.4", fndecl); warned_n_a_f = true; break; *************** expand_builtin_compare_and_swap (enum ma *** 5180,5186 **** the results. */ static rtx ! expand_builtin_lock_test_and_set (enum machine_mode mode, tree exp, rtx target) { rtx val, mem; --- 5180,5186 ---- the results. */ static rtx ! expand_builtin_sync_lock_test_and_set (enum machine_mode mode, tree exp, rtx target) { rtx val, mem; *************** expand_builtin_lock_test_and_set (enum m *** 5202,5208 **** /* Expand the __sync_synchronize intrinsic. */ static void ! expand_builtin_synchronize (void) { gimple x; VEC (tree, gc) *v_clobbers; --- 5202,5208 ---- /* Expand the __sync_synchronize intrinsic. */ static void ! expand_builtin_sync_synchronize (void) { gimple x; VEC (tree, gc) *v_clobbers; *************** expand_builtin_synchronize (void) *** 5234,5240 **** /* Expand the __sync_lock_release intrinsic. EXP is the CALL_EXPR. */ static void ! expand_builtin_lock_release (enum machine_mode mode, tree exp) { struct expand_operand ops[2]; enum insn_code icode; --- 5234,5240 ---- /* Expand the __sync_lock_release intrinsic. EXP is the CALL_EXPR. */ static void ! expand_builtin_sync_lock_release (enum machine_mode mode, tree exp) { struct expand_operand ops[2]; enum insn_code icode; *************** expand_builtin_lock_release (enum machin *** 5255,5261 **** /* Otherwise we can implement this operation by emitting a barrier followed by a store of zero. */ ! expand_builtin_synchronize (); emit_move_insn (mem, const0_rtx); } --- 5255,5261 ---- /* Otherwise we can implement this operation by emitting a barrier followed by a store of zero. */ ! expand_builtin_sync_synchronize (); emit_move_insn (mem, const0_rtx); } *************** expand_builtin (tree exp, rtx target, rt *** 5836,6034 **** return target; break; ! case BUILT_IN_FETCH_AND_ADD_1: ! case BUILT_IN_FETCH_AND_ADD_2: ! case BUILT_IN_FETCH_AND_ADD_4: ! case BUILT_IN_FETCH_AND_ADD_8: ! case BUILT_IN_FETCH_AND_ADD_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_FETCH_AND_ADD_1); target = expand_builtin_sync_operation (mode, exp, PLUS, false, target, ignore); if (target) return target; break; ! case BUILT_IN_FETCH_AND_SUB_1: ! case BUILT_IN_FETCH_AND_SUB_2: ! case BUILT_IN_FETCH_AND_SUB_4: ! case BUILT_IN_FETCH_AND_SUB_8: ! case BUILT_IN_FETCH_AND_SUB_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_FETCH_AND_SUB_1); target = expand_builtin_sync_operation (mode, exp, MINUS, false, target, ignore); if (target) return target; break; ! case BUILT_IN_FETCH_AND_OR_1: ! case BUILT_IN_FETCH_AND_OR_2: ! case BUILT_IN_FETCH_AND_OR_4: ! case BUILT_IN_FETCH_AND_OR_8: ! case BUILT_IN_FETCH_AND_OR_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_FETCH_AND_OR_1); target = expand_builtin_sync_operation (mode, exp, IOR, false, target, ignore); if (target) return target; break; ! case BUILT_IN_FETCH_AND_AND_1: ! case BUILT_IN_FETCH_AND_AND_2: ! case BUILT_IN_FETCH_AND_AND_4: ! case BUILT_IN_FETCH_AND_AND_8: ! case BUILT_IN_FETCH_AND_AND_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_FETCH_AND_AND_1); target = expand_builtin_sync_operation (mode, exp, AND, false, target, ignore); if (target) return target; break; ! case BUILT_IN_FETCH_AND_XOR_1: ! case BUILT_IN_FETCH_AND_XOR_2: ! case BUILT_IN_FETCH_AND_XOR_4: ! case BUILT_IN_FETCH_AND_XOR_8: ! case BUILT_IN_FETCH_AND_XOR_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_FETCH_AND_XOR_1); target = expand_builtin_sync_operation (mode, exp, XOR, false, target, ignore); if (target) return target; break; ! case BUILT_IN_FETCH_AND_NAND_1: ! case BUILT_IN_FETCH_AND_NAND_2: ! case BUILT_IN_FETCH_AND_NAND_4: ! case BUILT_IN_FETCH_AND_NAND_8: ! case BUILT_IN_FETCH_AND_NAND_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_FETCH_AND_NAND_1); target = expand_builtin_sync_operation (mode, exp, NOT, false, target, ignore); if (target) return target; break; ! case BUILT_IN_ADD_AND_FETCH_1: ! case BUILT_IN_ADD_AND_FETCH_2: ! case BUILT_IN_ADD_AND_FETCH_4: ! case BUILT_IN_ADD_AND_FETCH_8: ! case BUILT_IN_ADD_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_ADD_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, PLUS, true, target, ignore); if (target) return target; break; ! case BUILT_IN_SUB_AND_FETCH_1: ! case BUILT_IN_SUB_AND_FETCH_2: ! case BUILT_IN_SUB_AND_FETCH_4: ! case BUILT_IN_SUB_AND_FETCH_8: ! case BUILT_IN_SUB_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SUB_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, MINUS, true, target, ignore); if (target) return target; break; ! case BUILT_IN_OR_AND_FETCH_1: ! case BUILT_IN_OR_AND_FETCH_2: ! case BUILT_IN_OR_AND_FETCH_4: ! case BUILT_IN_OR_AND_FETCH_8: ! case BUILT_IN_OR_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_OR_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, IOR, true, target, ignore); if (target) return target; break; ! case BUILT_IN_AND_AND_FETCH_1: ! case BUILT_IN_AND_AND_FETCH_2: ! case BUILT_IN_AND_AND_FETCH_4: ! case BUILT_IN_AND_AND_FETCH_8: ! case BUILT_IN_AND_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_AND_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, AND, true, target, ignore); if (target) return target; break; ! case BUILT_IN_XOR_AND_FETCH_1: ! case BUILT_IN_XOR_AND_FETCH_2: ! case BUILT_IN_XOR_AND_FETCH_4: ! case BUILT_IN_XOR_AND_FETCH_8: ! case BUILT_IN_XOR_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_XOR_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, XOR, true, target, ignore); if (target) return target; break; ! case BUILT_IN_NAND_AND_FETCH_1: ! case BUILT_IN_NAND_AND_FETCH_2: ! case BUILT_IN_NAND_AND_FETCH_4: ! case BUILT_IN_NAND_AND_FETCH_8: ! case BUILT_IN_NAND_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_NAND_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, NOT, true, target, ignore); if (target) return target; break; ! case BUILT_IN_BOOL_COMPARE_AND_SWAP_1: ! case BUILT_IN_BOOL_COMPARE_AND_SWAP_2: ! case BUILT_IN_BOOL_COMPARE_AND_SWAP_4: ! case BUILT_IN_BOOL_COMPARE_AND_SWAP_8: ! case BUILT_IN_BOOL_COMPARE_AND_SWAP_16: if (mode == VOIDmode) mode = TYPE_MODE (boolean_type_node); if (!target || !register_operand (target, mode)) target = gen_reg_rtx (mode); ! mode = get_builtin_sync_mode (fcode - BUILT_IN_BOOL_COMPARE_AND_SWAP_1); target = expand_builtin_compare_and_swap (mode, exp, true, target); if (target) return target; break; ! case BUILT_IN_VAL_COMPARE_AND_SWAP_1: ! case BUILT_IN_VAL_COMPARE_AND_SWAP_2: ! case BUILT_IN_VAL_COMPARE_AND_SWAP_4: ! case BUILT_IN_VAL_COMPARE_AND_SWAP_8: ! case BUILT_IN_VAL_COMPARE_AND_SWAP_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_VAL_COMPARE_AND_SWAP_1); target = expand_builtin_compare_and_swap (mode, exp, false, target); if (target) return target; break; ! case BUILT_IN_LOCK_TEST_AND_SET_1: ! case BUILT_IN_LOCK_TEST_AND_SET_2: ! case BUILT_IN_LOCK_TEST_AND_SET_4: ! case BUILT_IN_LOCK_TEST_AND_SET_8: ! case BUILT_IN_LOCK_TEST_AND_SET_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_LOCK_TEST_AND_SET_1); ! target = expand_builtin_lock_test_and_set (mode, exp, target); if (target) return target; break; ! case BUILT_IN_LOCK_RELEASE_1: ! case BUILT_IN_LOCK_RELEASE_2: ! case BUILT_IN_LOCK_RELEASE_4: ! case BUILT_IN_LOCK_RELEASE_8: ! case BUILT_IN_LOCK_RELEASE_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_LOCK_RELEASE_1); ! expand_builtin_lock_release (mode, exp); return const0_rtx; ! case BUILT_IN_SYNCHRONIZE: ! expand_builtin_synchronize (); return const0_rtx; case BUILT_IN_OBJECT_SIZE: --- 5836,6036 ---- return target; break; ! case BUILT_IN_SYNC_FETCH_AND_ADD_1: ! case BUILT_IN_SYNC_FETCH_AND_ADD_2: ! case BUILT_IN_SYNC_FETCH_AND_ADD_4: ! case BUILT_IN_SYNC_FETCH_AND_ADD_8: ! case BUILT_IN_SYNC_FETCH_AND_ADD_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_FETCH_AND_ADD_1); target = expand_builtin_sync_operation (mode, exp, PLUS, false, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_FETCH_AND_SUB_1: ! case BUILT_IN_SYNC_FETCH_AND_SUB_2: ! case BUILT_IN_SYNC_FETCH_AND_SUB_4: ! case BUILT_IN_SYNC_FETCH_AND_SUB_8: ! case BUILT_IN_SYNC_FETCH_AND_SUB_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_FETCH_AND_SUB_1); target = expand_builtin_sync_operation (mode, exp, MINUS, false, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_FETCH_AND_OR_1: ! case BUILT_IN_SYNC_FETCH_AND_OR_2: ! case BUILT_IN_SYNC_FETCH_AND_OR_4: ! case BUILT_IN_SYNC_FETCH_AND_OR_8: ! case BUILT_IN_SYNC_FETCH_AND_OR_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_FETCH_AND_OR_1); target = expand_builtin_sync_operation (mode, exp, IOR, false, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_FETCH_AND_AND_1: ! case BUILT_IN_SYNC_FETCH_AND_AND_2: ! case BUILT_IN_SYNC_FETCH_AND_AND_4: ! case BUILT_IN_SYNC_FETCH_AND_AND_8: ! case BUILT_IN_SYNC_FETCH_AND_AND_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_FETCH_AND_AND_1); target = expand_builtin_sync_operation (mode, exp, AND, false, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_FETCH_AND_XOR_1: ! case BUILT_IN_SYNC_FETCH_AND_XOR_2: ! case BUILT_IN_SYNC_FETCH_AND_XOR_4: ! case BUILT_IN_SYNC_FETCH_AND_XOR_8: ! case BUILT_IN_SYNC_FETCH_AND_XOR_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_FETCH_AND_XOR_1); target = expand_builtin_sync_operation (mode, exp, XOR, false, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_FETCH_AND_NAND_1: ! case BUILT_IN_SYNC_FETCH_AND_NAND_2: ! case BUILT_IN_SYNC_FETCH_AND_NAND_4: ! case BUILT_IN_SYNC_FETCH_AND_NAND_8: ! case BUILT_IN_SYNC_FETCH_AND_NAND_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_FETCH_AND_NAND_1); target = expand_builtin_sync_operation (mode, exp, NOT, false, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_ADD_AND_FETCH_1: ! case BUILT_IN_SYNC_ADD_AND_FETCH_2: ! case BUILT_IN_SYNC_ADD_AND_FETCH_4: ! case BUILT_IN_SYNC_ADD_AND_FETCH_8: ! case BUILT_IN_SYNC_ADD_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_ADD_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, PLUS, true, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_SUB_AND_FETCH_1: ! case BUILT_IN_SYNC_SUB_AND_FETCH_2: ! case BUILT_IN_SYNC_SUB_AND_FETCH_4: ! case BUILT_IN_SYNC_SUB_AND_FETCH_8: ! case BUILT_IN_SYNC_SUB_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_SUB_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, MINUS, true, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_OR_AND_FETCH_1: ! case BUILT_IN_SYNC_OR_AND_FETCH_2: ! case BUILT_IN_SYNC_OR_AND_FETCH_4: ! case BUILT_IN_SYNC_OR_AND_FETCH_8: ! case BUILT_IN_SYNC_OR_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_OR_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, IOR, true, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_AND_AND_FETCH_1: ! case BUILT_IN_SYNC_AND_AND_FETCH_2: ! case BUILT_IN_SYNC_AND_AND_FETCH_4: ! case BUILT_IN_SYNC_AND_AND_FETCH_8: ! case BUILT_IN_SYNC_AND_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_AND_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, AND, true, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_XOR_AND_FETCH_1: ! case BUILT_IN_SYNC_XOR_AND_FETCH_2: ! case BUILT_IN_SYNC_XOR_AND_FETCH_4: ! case BUILT_IN_SYNC_XOR_AND_FETCH_8: ! case BUILT_IN_SYNC_XOR_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_XOR_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, XOR, true, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_NAND_AND_FETCH_1: ! case BUILT_IN_SYNC_NAND_AND_FETCH_2: ! case BUILT_IN_SYNC_NAND_AND_FETCH_4: ! case BUILT_IN_SYNC_NAND_AND_FETCH_8: ! case BUILT_IN_SYNC_NAND_AND_FETCH_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_NAND_AND_FETCH_1); target = expand_builtin_sync_operation (mode, exp, NOT, true, target, ignore); if (target) return target; break; ! case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1: ! case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2: ! case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4: ! case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8: ! case BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16: if (mode == VOIDmode) mode = TYPE_MODE (boolean_type_node); if (!target || !register_operand (target, mode)) target = gen_reg_rtx (mode); ! mode = get_builtin_sync_mode ! (fcode - BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1); target = expand_builtin_compare_and_swap (mode, exp, true, target); if (target) return target; break; ! case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1: ! case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2: ! case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4: ! case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8: ! case BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16: ! mode = get_builtin_sync_mode ! (fcode - BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1); target = expand_builtin_compare_and_swap (mode, exp, false, target); if (target) return target; break; ! case BUILT_IN_SYNC_LOCK_TEST_AND_SET_1: ! case BUILT_IN_SYNC_LOCK_TEST_AND_SET_2: ! case BUILT_IN_SYNC_LOCK_TEST_AND_SET_4: ! case BUILT_IN_SYNC_LOCK_TEST_AND_SET_8: ! case BUILT_IN_SYNC_LOCK_TEST_AND_SET_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_LOCK_TEST_AND_SET_1); ! target = expand_builtin_sync_lock_test_and_set (mode, exp, target); if (target) return target; break; ! case BUILT_IN_SYNC_LOCK_RELEASE_1: ! case BUILT_IN_SYNC_LOCK_RELEASE_2: ! case BUILT_IN_SYNC_LOCK_RELEASE_4: ! case BUILT_IN_SYNC_LOCK_RELEASE_8: ! case BUILT_IN_SYNC_LOCK_RELEASE_16: ! mode = get_builtin_sync_mode (fcode - BUILT_IN_SYNC_LOCK_RELEASE_1); ! expand_builtin_sync_lock_release (mode, exp); return const0_rtx; ! case BUILT_IN_SYNC_SYNCHRONIZE: ! expand_builtin_sync_synchronize (); return const0_rtx; case BUILT_IN_OBJECT_SIZE: Index: sync-builtins.def =================================================================== *** sync-builtins.def (revision 175226) --- sync-builtins.def (working copy) *************** along with GCC; see the file COPYING3. *** 28,252 **** is supposed to be using. It's overloaded, and is resolved to one of the "_1" through "_16" versions, plus some extra casts. */ ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_N, "__sync_fetch_and_add", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_1, "__sync_fetch_and_add_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_2, "__sync_fetch_and_add_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_4, "__sync_fetch_and_add_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_8, "__sync_fetch_and_add_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_ADD_16, "__sync_fetch_and_add_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_N, "__sync_fetch_and_sub", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_N, "__sync_fetch_and_or", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_1, "__sync_fetch_and_or_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_2, "__sync_fetch_and_or_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_4, "__sync_fetch_and_or_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_8, "__sync_fetch_and_or_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_OR_16, "__sync_fetch_and_or_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_N, "__sync_fetch_and_and", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_1, "__sync_fetch_and_and_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_2, "__sync_fetch_and_and_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_4, "__sync_fetch_and_and_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_8, "__sync_fetch_and_and_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_AND_16, "__sync_fetch_and_and_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_N, "__sync_fetch_and_xor", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_N, "__sync_fetch_and_nand", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_N, "__sync_add_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_1, "__sync_add_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_2, "__sync_add_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_4, "__sync_add_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_8, "__sync_add_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_ADD_AND_FETCH_16, "__sync_add_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_N, "__sync_sub_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_1, "__sync_sub_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_2, "__sync_sub_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_4, "__sync_sub_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_8, "__sync_sub_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SUB_AND_FETCH_16, "__sync_sub_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_N, "__sync_or_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_1, "__sync_or_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_2, "__sync_or_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_4, "__sync_or_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_8, "__sync_or_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_OR_AND_FETCH_16, "__sync_or_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_N, "__sync_and_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_1, "__sync_and_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_2, "__sync_and_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_4, "__sync_and_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_8, "__sync_and_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_AND_AND_FETCH_16, "__sync_and_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_N, "__sync_xor_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_1, "__sync_xor_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_2, "__sync_xor_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_4, "__sync_xor_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_8, "__sync_xor_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_XOR_AND_FETCH_16, "__sync_xor_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_N, "__sync_nand_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_1, "__sync_nand_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_2, "__sync_nand_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_4, "__sync_nand_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_8, "__sync_nand_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_NAND_AND_FETCH_16, "__sync_nand_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_N, "__sync_bool_compare_and_swap", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_1, "__sync_bool_compare_and_swap_1", BT_FN_BOOL_VPTR_I1_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_2, "__sync_bool_compare_and_swap_2", BT_FN_BOOL_VPTR_I2_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_4, "__sync_bool_compare_and_swap_4", BT_FN_BOOL_VPTR_I4_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_8, "__sync_bool_compare_and_swap_8", BT_FN_BOOL_VPTR_I8_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_BOOL_COMPARE_AND_SWAP_16, "__sync_bool_compare_and_swap_16", BT_FN_BOOL_VPTR_I16_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_N, "__sync_val_compare_and_swap", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_1, "__sync_val_compare_and_swap_1", BT_FN_I1_VPTR_I1_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_2, "__sync_val_compare_and_swap_2", BT_FN_I2_VPTR_I2_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_4, "__sync_val_compare_and_swap_4", BT_FN_I4_VPTR_I4_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_8, "__sync_val_compare_and_swap_8", BT_FN_I8_VPTR_I8_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_VAL_COMPARE_AND_SWAP_16, "__sync_val_compare_and_swap_16", BT_FN_I16_VPTR_I16_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_N, "__sync_lock_test_and_set", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_1, "__sync_lock_test_and_set_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_2, "__sync_lock_test_and_set_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_4, "__sync_lock_test_and_set_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_8, "__sync_lock_test_and_set_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_TEST_AND_SET_16, "__sync_lock_test_and_set_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_N, "__sync_lock_release", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_1, "__sync_lock_release_1", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_2, "__sync_lock_release_2", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_4, "__sync_lock_release_4", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_8, "__sync_lock_release_8", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_LOCK_RELEASE_16, "__sync_lock_release_16", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNCHRONIZE, "__sync_synchronize", BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST) --- 28,258 ---- is supposed to be using. It's overloaded, and is resolved to one of the "_1" through "_16" versions, plus some extra casts. */ ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_N, "__sync_fetch_and_add", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_1, "__sync_fetch_and_add_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_2, "__sync_fetch_and_add_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_4, "__sync_fetch_and_add_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_8, "__sync_fetch_and_add_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_ADD_16, "__sync_fetch_and_add_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_N, "__sync_fetch_and_sub", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_1, "__sync_fetch_and_sub_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_2, "__sync_fetch_and_sub_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_4, "__sync_fetch_and_sub_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_8, "__sync_fetch_and_sub_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_SUB_16, "__sync_fetch_and_sub_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_N, "__sync_fetch_and_or", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_1, "__sync_fetch_and_or_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_2, "__sync_fetch_and_or_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_4, "__sync_fetch_and_or_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_8, "__sync_fetch_and_or_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_OR_16, "__sync_fetch_and_or_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_N, "__sync_fetch_and_and", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_1, "__sync_fetch_and_and_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_2, "__sync_fetch_and_and_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_4, "__sync_fetch_and_and_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_8, "__sync_fetch_and_and_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_AND_16, "__sync_fetch_and_and_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_N, "__sync_fetch_and_xor", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_1, "__sync_fetch_and_xor_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_2, "__sync_fetch_and_xor_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_4, "__sync_fetch_and_xor_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_8, "__sync_fetch_and_xor_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_XOR_16, "__sync_fetch_and_xor_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_N, "__sync_fetch_and_nand", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_1, "__sync_fetch_and_nand_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_2, "__sync_fetch_and_nand_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_4, "__sync_fetch_and_nand_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_8, "__sync_fetch_and_nand_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_FETCH_AND_NAND_16, "__sync_fetch_and_nand_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_N, "__sync_add_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_1, "__sync_add_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_2, "__sync_add_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_4, "__sync_add_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_8, "__sync_add_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_ADD_AND_FETCH_16, "__sync_add_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_N, "__sync_sub_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_1, "__sync_sub_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_2, "__sync_sub_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_4, "__sync_sub_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_8, "__sync_sub_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SUB_AND_FETCH_16, "__sync_sub_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_N, "__sync_or_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_1, "__sync_or_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_2, "__sync_or_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_4, "__sync_or_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_8, "__sync_or_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_OR_AND_FETCH_16, "__sync_or_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_N, "__sync_and_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_1, "__sync_and_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_2, "__sync_and_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_4, "__sync_and_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_8, "__sync_and_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_AND_AND_FETCH_16, "__sync_and_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_N, "__sync_xor_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_1, "__sync_xor_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_2, "__sync_xor_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_4, "__sync_xor_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_8, "__sync_xor_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_XOR_AND_FETCH_16, "__sync_xor_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_N, "__sync_nand_and_fetch", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_1, "__sync_nand_and_fetch_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_2, "__sync_nand_and_fetch_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_4, "__sync_nand_and_fetch_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_8, "__sync_nand_and_fetch_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_NAND_AND_FETCH_16, "__sync_nand_and_fetch_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_N, "__sync_bool_compare_and_swap", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_1, "__sync_bool_compare_and_swap_1", BT_FN_BOOL_VPTR_I1_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_2, "__sync_bool_compare_and_swap_2", BT_FN_BOOL_VPTR_I2_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_4, "__sync_bool_compare_and_swap_4", BT_FN_BOOL_VPTR_I4_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_8, "__sync_bool_compare_and_swap_8", BT_FN_BOOL_VPTR_I8_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_BOOL_COMPARE_AND_SWAP_16, "__sync_bool_compare_and_swap_16", BT_FN_BOOL_VPTR_I16_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_N, "__sync_val_compare_and_swap", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_1, "__sync_val_compare_and_swap_1", BT_FN_I1_VPTR_I1_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_2, "__sync_val_compare_and_swap_2", BT_FN_I2_VPTR_I2_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_4, "__sync_val_compare_and_swap_4", BT_FN_I4_VPTR_I4_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_8, "__sync_val_compare_and_swap_8", BT_FN_I8_VPTR_I8_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_16, "__sync_val_compare_and_swap_16", BT_FN_I16_VPTR_I16_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_N, ! "__sync_lock_test_and_set", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_1, ! "__sync_lock_test_and_set_1", BT_FN_I1_VPTR_I1, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_2, ! "__sync_lock_test_and_set_2", BT_FN_I2_VPTR_I2, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_4, ! "__sync_lock_test_and_set_4", BT_FN_I4_VPTR_I4, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_8, ! "__sync_lock_test_and_set_8", BT_FN_I8_VPTR_I8, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_TEST_AND_SET_16, ! "__sync_lock_test_and_set_16", BT_FN_I16_VPTR_I16, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_N, "__sync_lock_release", BT_FN_VOID_VAR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_1, "__sync_lock_release_1", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_2, "__sync_lock_release_2", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_4, "__sync_lock_release_4", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_8, "__sync_lock_release_8", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_LOCK_RELEASE_16, "__sync_lock_release_16", BT_FN_VOID_VPTR, ATTR_NOTHROW_LEAF_LIST) ! DEF_SYNC_BUILTIN (BUILT_IN_SYNC_SYNCHRONIZE, "__sync_synchronize", BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST) Index: omp-low.c =================================================================== *** omp-low.c (revision 175226) --- omp-low.c (working copy) *************** expand_omp_atomic_fetch_op (basic_block *** 4973,4995 **** { case PLUS_EXPR: case POINTER_PLUS_EXPR: ! base = BUILT_IN_FETCH_AND_ADD_N; optab = sync_add_optab; break; case MINUS_EXPR: ! base = BUILT_IN_FETCH_AND_SUB_N; optab = sync_add_optab; break; case BIT_AND_EXPR: ! base = BUILT_IN_FETCH_AND_AND_N; optab = sync_and_optab; break; case BIT_IOR_EXPR: ! base = BUILT_IN_FETCH_AND_OR_N; optab = sync_ior_optab; break; case BIT_XOR_EXPR: ! base = BUILT_IN_FETCH_AND_XOR_N; optab = sync_xor_optab; break; default: --- 4973,4995 ---- { case PLUS_EXPR: case POINTER_PLUS_EXPR: ! base = BUILT_IN_SYNC_FETCH_AND_ADD_N; optab = sync_add_optab; break; case MINUS_EXPR: ! base = BUILT_IN_SYNC_FETCH_AND_SUB_N; optab = sync_add_optab; break; case BIT_AND_EXPR: ! base = BUILT_IN_SYNC_FETCH_AND_AND_N; optab = sync_and_optab; break; case BIT_IOR_EXPR: ! base = BUILT_IN_SYNC_FETCH_AND_OR_N; optab = sync_ior_optab; break; case BIT_XOR_EXPR: ! base = BUILT_IN_SYNC_FETCH_AND_XOR_N; optab = sync_xor_optab; break; default: *************** expand_omp_atomic_pipeline (basic_block *** 5057,5063 **** gimple phi, stmt; edge e; ! cmpxchg = built_in_decls[BUILT_IN_VAL_COMPARE_AND_SWAP_N + index + 1]; if (cmpxchg == NULL_TREE) return false; type = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (addr))); --- 5057,5063 ---- gimple phi, stmt; edge e; ! cmpxchg = built_in_decls[BUILT_IN_SYNC_VAL_COMPARE_AND_SWAP_N + index + 1]; if (cmpxchg == NULL_TREE) return false; type = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (addr))); Index: cp/semantics.c =================================================================== *** cp/semantics.c (revision 175226) --- cp/semantics.c (working copy) *************** finish_omp_barrier (void) *** 4722,4728 **** void finish_omp_flush (void) { ! tree fn = built_in_decls[BUILT_IN_SYNCHRONIZE]; VEC(tree,gc) *vec = make_tree_vector (); tree stmt = finish_call_expr (fn, &vec, false, false, tf_warning_or_error); release_tree_vector (vec); --- 4722,4728 ---- void finish_omp_flush (void) { ! tree fn = built_in_decls[BUILT_IN_SYNC_SYNCHRONIZE]; VEC(tree,gc) *vec = make_tree_vector (); tree stmt = finish_call_expr (fn, &vec, false, false, tf_warning_or_error); release_tree_vector (vec); Index: fortran/trans-openmp.c =================================================================== *** fortran/trans-openmp.c (revision 175226) --- fortran/trans-openmp.c (working copy) *************** gfc_trans_omp_do (gfc_code *code, stmtbl *** 1430,1436 **** static tree gfc_trans_omp_flush (void) { ! tree decl = built_in_decls [BUILT_IN_SYNCHRONIZE]; return build_call_expr_loc (input_location, decl, 0); } --- 1430,1436 ---- static tree gfc_trans_omp_flush (void) { ! tree decl = built_in_decls [BUILT_IN_SYNC_SYNCHRONIZE]; return build_call_expr_loc (input_location, decl, 0); } Index: fortran/trans-stmt.c =================================================================== *** fortran/trans-stmt.c (revision 175226) --- fortran/trans-stmt.c (working copy) *************** gfc_trans_stop (gfc_code *code, bool err *** 602,608 **** if (gfc_option.coarray == GFC_FCOARRAY_LIB && !error_stop) { /* Per F2008, 8.5.1 STOP implies a SYNC MEMORY. */ ! tmp = built_in_decls [BUILT_IN_SYNCHRONIZE]; tmp = build_call_expr_loc (input_location, tmp, 0); gfc_add_expr_to_block (&se.pre, tmp); --- 602,608 ---- if (gfc_option.coarray == GFC_FCOARRAY_LIB && !error_stop) { /* Per F2008, 8.5.1 STOP implies a SYNC MEMORY. */ ! tmp = built_in_decls [BUILT_IN_SYNC_SYNCHRONIZE]; tmp = build_call_expr_loc (input_location, tmp, 0); gfc_add_expr_to_block (&se.pre, tmp); *************** gfc_trans_sync (gfc_code *code, gfc_exec *** 732,738 **** image control statements SYNC IMAGES and SYNC ALL. */ if (gfc_option.coarray == GFC_FCOARRAY_LIB) { ! tmp = built_in_decls [BUILT_IN_SYNCHRONIZE]; tmp = build_call_expr_loc (input_location, tmp, 0); gfc_add_expr_to_block (&se.pre, tmp); } --- 732,738 ---- image control statements SYNC IMAGES and SYNC ALL. */ if (gfc_option.coarray == GFC_FCOARRAY_LIB) { ! tmp = built_in_decls [BUILT_IN_SYNC_SYNCHRONIZE]; tmp = build_call_expr_loc (input_location, tmp, 0); gfc_add_expr_to_block (&se.pre, tmp); } Index: fortran/trans-decl.c =================================================================== *** fortran/trans-decl.c (revision 175226) --- fortran/trans-decl.c (working copy) *************** create_main_function (tree fndecl) *** 4904,4910 **** { /* Per F2008, 8.5.1 END of the main program implies a SYNC MEMORY. */ ! tmp = built_in_decls [BUILT_IN_SYNCHRONIZE]; tmp = build_call_expr_loc (input_location, tmp, 0); gfc_add_expr_to_block (&body, tmp); --- 4904,4910 ---- { /* Per F2008, 8.5.1 END of the main program implies a SYNC MEMORY. */ ! tmp = built_in_decls [BUILT_IN_SYNC_SYNCHRONIZE]; tmp = build_call_expr_loc (input_location, tmp, 0); gfc_add_expr_to_block (&body, tmp); --------------050305000004010005060309--