Skip to content
Snippets Groups Projects
  1. Jan 04, 2021
  2. Jan 01, 2020
  3. Jan 01, 2019
  4. Jan 03, 2018
  5. Jan 01, 2017
  6. Jan 04, 2016
  7. Jan 05, 2015
  8. Jan 02, 2014
  9. Nov 07, 2013
    • Joseph Myers's avatar
      tree-core.h (enum cv_qualifier): Add TYPE_QUAL_ATOMIC. · 267bac10
      Joseph Myers authored
      gcc:
      2013-11-05  Andrew MacLeod  <amacleod@redhat.com>
      	    Joseph Myers  <joseph@codesourcery.com>
      
      	* tree-core.h (enum cv_qualifier): Add TYPE_QUAL_ATOMIC.
      	(enum tree_index): Add TI_ATOMICQI_TYPE, TI_ATOMICHI_TYPE,
      	TI_ATOMICSI_TYPE, TI_ATOMICDI_TYPE and TI_ATOMICTI_TYPE.
      	(struct tree_base): Add atomic_flag field.
      	* tree.h (TYPE_ATOMIC): New accessor macro.
      	(TYPE_QUALS, TYPE_QUALS_NO_ADDR_SPACE): Add TYPE_QUAL_ATOMIC.
      	(TYPE_QUALS_NO_ADDR_SPACE_NO_ATOMIC): New macro.
      	(atomicQI_type_node, atomicHI_type_node, atomicSI_type_node)
      	(atomicDI_type_node, atomicTI_type_node): New macros for type
      	nodes.
      	* tree.c (set_type_quals): Set TYPE_ATOMIC.
      	(find_atomic_core_type): New function.
      	(build_qualified_type): Adjust alignment for qualified types.
      	(build_atomic_base): New function
      	(build_common_tree_nodes): Build atomicQI_type_node,
      	atomicHI_type_node, atomicSI_type_node, atomicDI_type_node and
      	atomicTI_type_node.
      	* print-tree.c (print_node): Print atomic qualifier.
      	* tree-pretty-print.c (dump_generic_node): Print atomic type
      	attribute.
      	* target.def (atomic_assign_expand_fenv): New hook.
      	* doc/tm.texi.in (TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New @hook.
      	* doc/tm.texi: Regenerate.
      	* targhooks.c (default_atomic_assign_expand_fenv): New function.
      	* targhooks.h (default_atomic_assign_expand_fenv): Declare.
      	* sync-builtins.def (__atomic_feraiseexcept): New built-in
      	function.
      	* config/i386/i386-builtin-types.def (VOID_FTYPE_PUSHORT): New
      	function type.
      	* config/i386/i386.c (enum ix86_builtins): Add
      	IX86_BUILTIN_FNSTENV, IX86_BUILTIN_FLDENV, IX86_BUILTIN_FNSTSW and
      	IX86_BUILTIN_FNCLEX.
      	(bdesc_special_args): Add __builtin_ia32_fnstenv,
      	__builtin_ia32_fldenv, __builtin_ia32_fnstsw and
      	__builtin_ia32_fnclex.
      	(ix86_expand_builtin): Handle the new built-in functions.
      	(ix86_atomic_assign_expand_fenv): New function.
      	(TARGET_ATOMIC_ASSIGN_EXPAND_FENV): New macro.
      	* config/i386/i386.md (UNSPECV_FNSTENV, UNSPECV_FLDENV)
      	(UNSPECV_FNSTSW, UNSPECV_FNCLEX): New unspecs.
      	(fnstenv, fldenv, fnstsw, fnclex): New insns.
      
      gcc/c-family:
      2013-11-05  Andrew MacLeod  <amacleod@redhat.com>
      	    Joseph Myers  <joseph@codesourcery.com>
      
      	* c-common.h (enum rid): Add RID_ATOMIC.
      	* c-common.c (c_common_reswords): Add _Atomic.
      	(sync_resolve_params): Use TYPE_MAIN_VARIANT on pointer argument.
      	(keyword_is_type_qualifier): Accept RID_ATOMIC.
      	* c-format.c (check_format_types): Check for extra _Atomic
      	qualifiers in format argument.
      	* c-pretty-print.c (pp_c_cv_qualifiers): Handle atomic qualifier.
      	(pp_c_type_qualifier_list): Mention _Atomic in comment.
      
      gcc/c:
      2013-11-05  Joseph Myers  <joseph@codesourcery.com>
      	    Andrew MacLeod  <amacleod@redhat.com>
      
      	* c-aux-info.c (gen_type): Handle atomic qualifier.
      	* c-decl.c (validate_proto_after_old_defn): Do not remove atomic
      	qualifiers when compating types.
      	(shadow_tag_warned): Handle atomic_p in declspecs.
      	(quals_from_declspecs): Likewise.
      	(start_decl): Use c_type_promotes_to when promoting argument
      	types.
      	(grokdeclarator): Handle _Atomic.
      	(get_parm_info): Diagnose any qualifier on "void" as only
      	parameter.
      	(store_parm_decls_oldstyle): Do not remove atomic qualifiers when
      	comparing types.  Use c_type_promotes_to when promoting argument
      	types.
      	(finish_function): Use c_type_promotes_to when promoting argument
      	types.
      	(build_null_declspecs): Handle atomic_p in declspecs.
      	(declspecs_add_qual): Handle RID_ATOMIC.
      	* c-parser.c (c_token_starts_typename, c_token_is_qualifier)
      	(c_token_starts_declspecs): Handle RID_ATOMIC.
      	(c_parser_declspecs): Handle atomic type specifiers and
      	qualifiers.
      	(c_parser_typeof_specifier): Remove const and _Atomic qualifiers
      	from types of expressions with atomic type.
      	(c_parser_direct_declarator_inner): Use convert_lvalue_to_rvalue.
      	(c_parser_attribute_any_word): Handle RID_ATOMIC.
      	(c_parser_initializer, c_parser_initelt, c_parser_initval)
      	(c_parser_statement_after_labels, c_parser_switch_statement)
      	(c_parser_for_statement, c_parser_expr_no_commas)
      	(c_parser_conditional_expression, c_parser_binary_expression)
      	(c_parser_cast_expression, c_parser_unary_expression)
      	(c_parser_postfix_expression)
      	(c_parser_postfix_expression_after_primary, c_parser_expression):
      	Use convert_lvalue_to_rvalue.
      	(c_parser_expression_conv, c_parser_expr_list): Document
      	conversion of lvalues to rvalues.  Use convert_lvalue_to_rvalue.
      	(c_parser_objc_synchronized_statement): Use
      	convert_lvalue_to_rvalue.
      	(c_parser_objc_selector): Handle RID_ATOMIC.
      	(c_parser_objc_receiver, c_parser_array_notation): Use
      	convert_lvalue_to_rvalue.
      	* c-tree.h (ctsk_typeof): Adjust comment to mention use for
      	_Atomic (type-name).
      	(struct c_declspecs): Add atomic_p field.
      	(convert_lvalue_to_rvalue): Declare.
      	* c-typeck.c (c_type_promotes_to): Promote atomic types to
      	corresponding atomic types.
      	(qualify_type): Don't add _Atomic qualifiers from second argument.
      	(comp_target_types): Do not allow _Atomic mismatches.
      	(type_lists_compatible_p): Do not remove atomic qualifiers when
      	comparing types.
      	(really_atomic_lvalue, convert_lvalue_to_rvalue)
      	(build_atomic_assign): New functions.
      	(build_unary_op): Use build_atomic_assign for atomic increment and
      	decrement.
      	(build_conditional_expr): Do not treat _Atomic void as a qualified
      	version of void.
      	(build_modify_expr): Use build_atomic_assign for atomic LHS.
      	(find_anonymous_field_with_type, convert_to_anonymous_field)
      	(convert_for_assignment): Do not remove atomic qualifiers when
      	comparing types.
      	(digest_init): Do not accept initialization of arrays of atomic
      	elements by string constants.
      	(build_asm_expr): Use convert_lvalue_to_rvalue.
      	(build_binary_op): Do not treat _Atomic void as a qualified
      	version of void.
      
      gcc/objc:
      2013-11-05  Andrew MacLeod  <amacleod@redhat.com>
      
      	* objc-act.c (objc_push_parm): Handle atomic qualifier.
      
      gcc/testsuite:
      2013-11-05  Joseph Myers  <joseph@codesourcery.com>
      
      	* lib/target-supports.exp
      	(check_effective_target_fenv_exceptions): New function.
      	* lib/atomic-dg.exp, gcc.dg/atomic/atomic.exp: New files.
      	* gcc.dg/atomic/c11-atomic-exec-1.c,
      	gcc.dg/atomic/c11-atomic-exec-2.c,
      	gcc.dg/atomic/c11-atomic-exec-3.c,
      	gcc.dg/atomic/c11-atomic-exec-4.c,
      	gcc.dg/atomic/c11-atomic-exec-5.c, gcc.dg/c11-atomic-1.c,
      	gcc.dg/c11-atomic-2.c, gcc.dg/c11-atomic-3.c,
      	gcc.dg/c90-atomic-1.c, gcc.dg/c99-atomic-1.c: New tests.
      
      libatomic:
      2013-11-05  Joseph Myers  <joseph@codesourcery.com>
      
      	* fenv.c: New file.
      	* libatomic.map (LIBATOMIC_1.1): New symbol version.  Include
      	__atomic_feraiseexcept.
      	* configure.ac (libtool_VERSION): Change to 2:0:1.
      	(fenv.h): Test for header.
      	* Makefile.am (libatomic_la_SOURCES): Add fenv.c.
      	* Makefile.in, auto-config.h.in, configure: Regenerate.
      
      From-SVN: r204544
      267bac10
  10. Jan 14, 2013
  11. May 01, 2012
  12. Dec 13, 2011
    • Richard Henderson's avatar
      libitm: Conversion to c++11 atomics. · 36cfbee1
      Richard Henderson authored
              * local_atomic: New file.
              * libitm_i.h: Include it.
              (gtm_thread::shared_state): Use atomic template.
              * beginend.cc (GTM::gtm_clock): Use atomic template.
              (global_tid): Use atomic template if 64-bit atomics available.
              (gtm_thread::gtm_thread): Update shared_state access.
              (gtm_thread::trycommit): Likewise.
              (choose_code_path): Update global_tid access.
              * method-gl.cc (gl_mg::orec): Use atomic template.  Update all users.
              * stmlock.h (GTM::gtm_clock): Use atomic template.
              (gtm_get_clock, gtm_inc_clock): Update accesses.
              * config/linux/rwlock.cc (gtm_rwlock::read_lock): Remove
              redundant __sync_synchronize after atomic shared_state access.
              * config/posix/rwlock.cc (gtm_rwlock::read_lock): Likewise.
              (gtm_rwlock::write_lock_generic): Likewise.
              (gtm_rwlock::read_unlock): Likewise.
              * config/alpha/target.h (atomic_read_barrier): Remove.
              (atomic_write_barrier): Remove.
              * config/x86/target.h (atomic_read_barrier): Remove.
              (atomic_write_barrier): Remove.
      
      From-SVN: r182294
      36cfbee1
  13. Nov 08, 2011
Loading