1. 08 Nov, 2011 37 commits
  2. 07 Nov, 2011 3 commits
    • Allow libcalls to be installed for legacy __sync optabs. · cedb4a1a
      This allows a target which implements the __sync interfaces
      in libgcc to continue to use them transparently with the
      new __atomic builtins.
      
      It is assumed that these libgcc routines DO NOT use spinlocks.
      This is true of all extant libgcc instances.
      
              * optabs.h (OTI_sync_compare_and_swap, OTI_sync_lock_test_and_set,
              OTI_sync_old_add, OTI_sync_old_sub, OTI_sync_old_ior,
              OTI_sync_old_and, OTI_sync_old_xor, OTI_sync_old_nand,
              OTI_sync_new_add, OTI_sync_new_sub, OTI_sync_new_ior,
              OTI_sync_new_and, OTI_sync_new_xor, OTI_sync_new_nand): Move and
              rename from the direct_optab_index enum.
              (sync_compare_and_swap_optab, sync_lock_test_and_set_optab,
              sync_old_add_optab, sync_old_sub_optab, sync_old_ior_optab,
              sync_old_and_optab, sync_old_xor_optab, sync_old_nand_optab,
              sync_new_add_optab, sync_new_sub_optab, sync_new_ior_optab,
              sync_new_and_optab, sync_new_xor_optab, sync_new_nand_optab): Read
              from the optab_table, not the direct_optab_table.
              (init_sync_libfuncs): Declare.
              (can_compare_and_swap_p): Update parameters.
              * optabs.c (init_sync_libfuncs_1, init_sync_libfuncs): New.
              (can_compare_and_swap_p): Add allow_libcall parameter; if true,
              test for the legacy compare-and-swap libcall.
              (expand_atomic_exchange): Use the legacy test-and-set libcall.
              (expand_atomic_compare_and_swap): Use the legacy CAS libcall.
              (struct atomic_op_functions): Update for optab type changes.
              (maybe_emit_op): Likewise.
              (expand_atomic_fetch_op): Use the legacy fetch-op libcalls.
              * builtins.c (fold_builtin_atomic_always_lock_free): Update call
              to can_compare_and_swap_p.
              * omp-low.c (expand_omp_atomic_fetch_op): Likewise.
              (expand_omp_atomic_pipeline): Likewise.
              * genopinit.c (optabs): Make sync_old_*_optab, sync_new_*_optab,
              sync_compare_and_swap_optab, sync_lock_test_and_set_optab regular
              optabs.
      
      From-SVN: r181134
      Richard Henderson committed
    • re PR c++/50863 ([C++0x] list-initialization with lambda fails to deduce constructor argument) · 13fc31c2
      	PR c++/50863
      	* parser.c (cp_parser_initializer_list): Parse C99
      	array designators tentatively.
      
      From-SVN: r181132
      Jason Merrill committed
    • re PR c++/50870 ([C++0x] [4.6/4.7 Regression] ICE with decltype, operator->, and… · b2b5f337
      re PR c++/50870 ([C++0x] [4.6/4.7 Regression] ICE with decltype, operator->, and default template arguments)
      
      	PR c++/50870
      	* pt.c (tsubst_copy): Handle NAMESPACE_DECL.
      	(tsubst_copy_and_build) [COMPONENT_REF]: Handle a still-dependent
      	object.
      
      From-SVN: r181131
      Jason Merrill committed