public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
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);
  

  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).