From: Andrew MacLeod <amacleod@redhat.com>
To: Richard Henderson <rth@redhat.com>
Cc: Aldy Hernandez <aldyh@redhat.com>,
Jakub Jelinek <jakub@redhat.com>,
"Joseph S. Myers" <joseph@codesourcery.com>,
gcc-patches <gcc-patches@gcc.gnu.org>
Subject: Re: __sync_swap* [ rename sync builtins ]
Date: Tue, 21 Jun 2011 18:56:00 -0000 [thread overview]
Message-ID: <4E00E70B.2050706@redhat.com> (raw)
In-Reply-To: <4DFFD078.4090908@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 2800 bytes --]
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
[-- Attachment #2: rename.patch --]
[-- Type: text/plain, Size: 59441 bytes --]
* 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);
}
\f
--- 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);
}
\f
*************** 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);
next prev parent reply other threads:[~2011-06-21 18:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-24 8:27 __sync_swap* with acq/rel/full memory barrier semantics Aldy Hernandez
2011-05-24 9:25 ` Joseph S. Myers
2011-05-30 22:53 ` Andrew MacLeod
2011-05-31 13:12 ` Jakub Jelinek
2011-05-31 15:23 ` Andrew MacLeod
2011-06-02 19:13 ` Aldy Hernandez
2011-06-02 19:25 ` Jakub Jelinek
2011-06-02 19:53 ` Aldy Hernandez
2011-06-03 14:27 ` Richard Henderson
2011-06-17 22:21 ` Andrew MacLeod
2011-06-18 19:49 ` Richard Henderson
2011-06-20 16:39 ` Andrew MacLeod
2011-06-20 22:50 ` Richard Henderson
2011-06-20 23:02 ` Andrew MacLeod
2011-06-20 23:29 ` Richard Henderson
2011-06-21 18:56 ` Andrew MacLeod [this message]
2011-06-21 19:03 ` __sync_swap* [ rename sync builtins ] Richard Henderson
2011-06-21 23:03 ` Graham Stott
2011-06-21 23:26 ` Andrew MacLeod
2011-06-22 0:59 ` Andrew MacLeod
2011-06-24 0:35 ` Ian Lance Taylor
2011-06-24 0:38 ` Andrew MacLeod
2011-06-21 23:03 ` [cxx-mem-model] sync_mem_exchange implementation with memory model parameters Andrew MacLeod
2011-06-22 20:36 ` Richard Henderson
2011-07-08 17:00 ` __sync_swap* with acq/rel/full memory barrier semantics Aldy Hernandez
2011-06-18 23:49 ` Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E00E70B.2050706@redhat.com \
--to=amacleod@redhat.com \
--cc=aldyh@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=joseph@codesourcery.com \
--cc=rth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).