OK, finally finished creating proper changelogs. I'll just throw all 8 of them in this one file if anyone wants to see then...
c-family ======== 2011-11-06 Richard Henderson <r...@redhat.com> * c-cppbuiltin.c (c_cpp_builtins): Test both atomic and sync patterns. 2011-11-06 Andrew MacLeod <amacl...@redhat.com> * c-common.c (sync_resolve_params, sync_resolve_return): Only tweak parameters that are the same type size. (get_atomic_generic_size): New. Find size of generic atomic function parameters and do typechecking. (add_atomic_size_parameter): New. Insert size into parameter list. (resolve_overloaded_atomic_exchange): Restructure __atomic_exchange to either __atomic_exchange_n or external library call. (resolve_overloaded_atomic_compare_exchange): Restructure __atomic_compare_exchange to either _n variant or external library call. (resolve_overloaded_atomic_load): Restructure __atomic_load to either __atomic_load_n or an external library call. (resolve_overloaded_atomic_store): Restructure __atomic_store to either __atomic_store_n or an external library call. (resolve_overloaded_builtin): Handle new __atomic builtins. doc === 2011-11-06 Andrew MacLeod <amacl...@redhat.com> * extend.texi: Document __atomic built-in functions. * invoke.texi: Document data race parameters. * md.texi: Document atomic patterns. fortran =========== 2011-11-06 Andrew MacLeod <amacl...@redhat.com> * types.def: (BT_SIZE, BT_CONST_VOLATILE_PTR, BT_FN_VOID_INT, BT_FN_I{1,2,4,8,16}_CONST_VPTR_INT, BT_FN_VOID_VPTR_INT, BT_FN_BOOL_VPTR_INT, BT_FN_BOOL_SIZE_CONST_VPTR, BT_FN_VOID_VPTR_I{1,2,4,8,16}_INT, BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_FN_BOOL_VPTR_PTR_I{1,2,4,8,16}_BOOL_INT_INT): New types. 2011-11-06 Andrew Macleod <amacl...@redhat.com> Aldy Hernandez <al...@redhat.com> * types.def (BT_FN_I{1,2,4,8,16}_VPTR_I{1,2,4,8,16}_INT): New. gcc === 2011-11-06 Andrew Macleod <amacl...@redhat.com> * optabs.h (DOI_atomic_*): Define new atomics. (atomic_*_optab): Define. * genopinit,c (optabs): Add atomic direct optab handlers. * sync-builtins.def (BUILT_IN_ATOMIC_*): New builtins. * builtin-types.def (BT_CONST_VOLATILE_PTR, BT_FN_I{1,2,4,8,16}_CONST_VPTR_INT, BT_FN_VOID_VPTR_INT, BT_FN_BOOL_VPTR_INT, BT_FN_BOOL_SIZE_CONST_VPTR, BT_FN_I{1,2,4,8,16}_VPTR_I{1,2,4,8,16}_INT, BT_FN_VOID_VPTR_I{1,2,4,8,16}_INT, BT_FN_VOID_SIZE_VPTR_PTR_INT, BT_FN_VOID_SIZE_CONST_VPTR_PTR_INT, BT_FN_VOID_SIZE_VPTR_PTR_PTR_INT, BT_FN_BOOL_VPTR_PTR_I{1,2,4,8,16}_BOOL_INT_INT): New builtin types. * expr.h (expand_atomic_*): Add prototypes. * c-typeck.c (build_function_call_vec): Don't reprocess __atomic parameters. * common.opt (Winvalid-memory-model): New warning flag. (finline-atomics): New. Flag to disable atomic inlining. * builtins.c (is_builtin_name): Handle __atomic. (expand_expr_force_mode): New. Factor out common code for ensuring an integer argument is in the proper mode. (expand_builtin_sync_operation): Remove ignore param. Always call expand_atomic_fetch_op instead of the old expanders. (expand_builtin_compare_and_swap, expand_builtin_sync_lock_test_and_set): Use expand_expr_force_mode, call atomic expanders instead of sync expanders. (expand_builtin_sync_lock_release): Call atomic_store expander. (expand_builtin_atomic_compare_exchange, expand_builtin_atomic_load, expand_builtin_atomic_store, expand_builtin_atomic_fetch_op): New. (fold_builtin_atomic_always_lock_free, expand_builtin_atomic_always_lock_free, fold_builtin_atomic_is_lock_free, expand_builtin_atomic_is_lock_free): New. (expand_builtin_mem_thread_fence, expand_builtin_atomic_thread_fence, expand_builtin_atomic_signal_fence): New. (expand_builtin): Add cases for BUILT_IN_ATOMIC_*. (fold_builtin_2): Add cases for BUILT_IN_ATOMIC_{IS,ALWAYS}_LOCK_FREE. * optabs.c (expand_sync_operation, expand_sync_fetch_operation): Remove. (expand_sync_lock_test_and_set): Remove. (expand_atomic_load, expand_atomic_store): New. (maybe_emit_op): New. Try to emit a fetch op. (expand_atomic_fetch_op): New. 2011-11-06 Andrew Macleod <amacl...@redhat.com> Aldy Hernandez <al...@redhat.com> * cppbuiltin.c (define__GNUC__): Define __ATOMIC memory models * coretypes.h (enum memmodel): New. enumerated memory model type. * builtins.c (get_memmodel): New. Extract memory model. (expand_builtin_atomic_exchange): New. (expand_builtin): Add cases for BUILT_IN_ATOMIC_EXCHANGE_*. * Makefile.in (cppbuiltin.o) Add missing dependency on $(TREE_H) * optabs.c (expand_atomic_exchange): New. 2011-11-06 Andrew Macleod <amacl...@redhat.com> Richard Henderson <r...@redhat.com> * optabs.c (expand_atomic_compare_and_swap): New. Implements atomic_compare_exchange via compare and swap. (struct atomic_op_functions): Opcode table struct for fetch ops. (get_atomic_op_for_code): New. Return an opcode table entry. 2011-11-06 Richard Henderson <r...@redhat.com> * optabs.h (can_compare_and_swap_p, expand_atomic_compare_and_swap): New prototypes. * omp-low.c (expand_omp_atomic_fetch_op): Don't test individual fetch_op optabs, only test can_compare_and_swap_p. Use __atomic builtins instead of __sync builtins. (expand_omp_atomic_pipeline): Use can_compare_and_swap_p. * expr.h (expand_{bool,val}_compare_and_swap): Remove prototypes. * builtins.c (expand_builtin_mem_signal_fence): New. * optabs.c (expand_val_compare_and_swap_1): Remove. (expand_val_compare_and_swap, expand_bool_compare_and_swap): Remove. (expand_atomic_compare_and_swap): Rename from expand_atomic_compare_exchange. Rewrite to return both success and oldval return values; expand via both atomic and sync optabs. (can_compare_and_swap_p): New. (expand_compare_and_swap_loop): Use expand_atomic_compare_and_swap. (maybe_gen_insn): Handle 7 and 8 operands. * config/i386/i386.md (UNSPEC_MOVA): New. (UNSPECV_CMPXCHG): Split into ... (UNSPECV_CMPXCHG_1, UNSPECV_CMPXCHG_2, UNSPECV_CMPXCHG_3, UNSPECV_CMPXCHG_4): New. * config/i386/sync.md (ATOMIC): New mode iterator. (atomic_load<ATOMIC>, atomic_store<ATOMIC>): New. (atomic_loaddi_fpu, atomic_storedi_fpu, movdi_via_fpu): New. (mem_thread_fence): Rename from memory_barrier. Handle the added memory model parameter. (mfence_nosse): Rename from memory_barrier_nosse. (sync_compare_and_swap<CASMODE>): Split into ... (atomic_compare_and_swap<SWI124>): this and ... (atomic_compare_and_swap<CASMODE>): this. Handle the new parameters. (atomic_compare_and_swap_single<SWI>): Rename from sync_compare_and_swap<SWI>; rewrite to use split unspecs. (atomic_compare_and_swap_double<DCASMODE>): Rename from sync_double_compare_and_swap<DCASMODE>; rewrite to use split unspecs. (*atomic_compare_and_swap_doubledi_pic): Rename from sync_double_compare_and_swapdi_pic; rewrite to use split unspecs. (atomic_fetch_add<SWI>): Rename from sync_old_add<SWI>; add memory model parameter. (*atomic_fetch_add_cmp<SWI>): Similarly. (atomic_add<SWI>, atomic<any_logic><SWI>): Similarly. (atomic_sub<SWI>): Similarly. Use x86_maybe_negate_const_int. (sync_lock_test_and_set<SWI>): Merge with ... (atomic_exchange<SWI>): ... this. 2011-11-06 Aldy Hernandez <al...@redhat.com> * params.h (ALLOW_LOAD_DATA_RACES): New. (ALLOW_PACKED_LOAD_DATA_RACES): New. (ALLOW_PACKED_STORE_DATA_RACES): New. * params.def (PARAM_ALLOW_LOAD_DATA_RACES): New. (PARAM_ALLOW_PACKED_LOAD_DATA_RACES): New. (PARAM_ALLOW_PACKED_STORE_DATA_RACES): New. * doc/invoke.texi (Optimize Options): Document above parameters. libstdc++v3 =========== 2011-11-06 Benjamin Kosnik <b...@redhat.com> Andrew MacLeod <amacl...@redhat.com> * include/Makefile.am (bits_headers): Remove atomic_0.h, atomic_2.h. * include/Makefile.in: Regenerate. * src/Makefile.am (sources): Rename atomic.cc to compatibility-atomic-c++0x.cc. * src/Makefile.in: Regenerate. * include/bits/atomic_0.h: Remove. * include/bits/atomic_2.h: Incorporate into... * include/bits/atomic_base.h: ...this. Use new __atomic routines. * include/std/atomic: Add generic atomic calls to basic atomic class. * src/atomic.cc: Move... * src/compatibility-atomic-c++0x.cc: ...here. * src/compatibility-c++0x.cc: Tweak. * testsuite/29_atomics/atomic/cons/user_pod.cc: Fix. * testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc: Same. * testsuite/29_atomics/headers/atomic/macros.cc: Same. testsuite-gomp ============== 2011-10-31 Richard Henderson <r...@redhat.com> * c-c++-common/gomp/atomic-10.c: Use cas_int; match __atomic builtin. * c-c++-common/gomp/atomic-3.c: Likewise. * c-c++-common/gomp/atomic-9.c: Likewise. * gcc.dg/gomp/atomic-1.c, gcc.dg/gomp/atomic-2.c, gcc.dg/gomp/atomic-3.c, gcc.dg/gomp/atomic-4.c, gcc.dg/gomp/atomic-7.c, gcc.dg/gomp/atomic-8.c, gcc.dg/gomp/atomic-9.c, gcc.dg/gomp/atomic-10.c, gcc.dg/gomp/atomic-12.c, gcc.dg/gomp/atomic-13.c, gcc.dg/gomp/atomic-14.c, gcc.dg/gomp/atomic-15.c: Move to c-c++-common/gomp/. * g++.dg/gomp/atomic-1.C, g++.dg/gomp/atomic-2.C, g++.dg/gomp/atomic-3.C, g++.dg/gomp/atomic-4.C, g++.dg/gomp/atomic-7.C, g++.dg/gomp/atomic-8.C, g++.dg/gomp/atomic-9.C, g++.dg/gomp/atomic-10.C, g++.dg/gomp/atomic-11.C, g++.dg/gomp/atomic-12.C, g++.dg/gomp/atomic-13.C, g++.dg/gomp/atomic-15.C: Remove. * gcc.dg/gomp/gomp.exp, g++.dg/gomp/gomp.exp: Run c-c++-common tests. testsuite ========= 2011-11-06 Andrew MacLeod <amacl...@redhat.com> * lib/target-supports.exp (check_effective_target_sync_int_128, check_effective_target_sync_long_long): Check whether the target supports 64 and 128 bit __sync builtins. * gcc.dg/atomic-noinline[-aux].c: New. Make a variety of atomics calls. * gcc.dg/atomic-generic[-aux].c: New. Test that generic functions produce the expected library calls. * gcc.dg/atomic-fence.c: New functional tests. * gcc.dg/atomic-param.c: New. Checl for illegal number of parameters. * gcc.dg/atomic-invalid.c: New. Test invalid parameters. * gcc.dg/atomic-lockfree[-aux].c: New tests. * gcc.dg/atomic-compare-exchange-{1-5}.c: New functional tests. * gcc.dg/atomic-op-[1-5].c: New. Test atomic fetch functionality. * gcc.dg/atomic-exchange-{1-5}.c: New functional tests. * gcc.dg/atomic-load-{1-5}.c: New functional tests. * gcc.dg/atomic-store-{1-5}.c: New functional tests. 2011-11-06 Richard Henderson <r...@redhat.com> * lib/target-supports.exp (check_effective_target_cas_char): New. (check_effective_target_cas_int): New. 2011-11-06 Aldy Hernandez <al...@redhat.com> * gcc.dg/dg.exp: Exclude simulate-thread tests. testsuite-simulate-threads ========================== 2011-11-06 Andrew MacLeod <amacl...@redhat.com> * atomic-load-int128.c: New. Verify int128 loads are atomic. * atomic-load-longlong.c: New. Verify 8 byte loads are atomic. * atomic-load-int.c: New. Verify 4 byte loads are atomic. * atomic-load-short.c: New. Verify 2 byte loads are atomic. * atomic-other-int128.c: New. Verify other int128 operations are atomic. * atomic-other-int.c: New. Verify other 4 byte operations are atomic. * atomic-other-longlong.c: New. Verify 8 byte operations are atomic. * atomic-other-short.c: New. Verify other 2 byte operations are atomic. 2011-11-06 Andrew MacLeod <amacl...@redhat.com> Aldy Hernandez <al...@redhat.com> * speculative-store.c: New. Verify speculative stores aren't moved out of a loop. * strict-align-global.c: New. Verify small globals don't overwrite neighbouring globals. * subfields.c: New. Verify struct component writes dont overwrite neighbouring components.