1. 08 Nov, 2011 22 commits
  2. 07 Nov, 2011 18 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
    • mutex (call_once): Store closure in __once_functor as bound function wrapper might not be copyable. · 48d8dd06
      	* include/std/mutex (call_once): Store closure in __once_functor
      	as bound function wrapper might not be copyable.
      
      From-SVN: r181128
      Jonathan Wakely committed
    • re PR libfortran/49188 (Mismatch between -fsign-zero documentation and formatted output) · c5a0818e
      	PR libfortran/49188
      	PR libfortran/49336
      	* invoke.texi: Fix documentation of fsign-zero option. Remove
      	contractions.
      	* intrinsic.texi: Fix ATAN2 documentation for signed zeros.
      	Remove contractions.
      	* gfortran.texi: Remove contractions.
      
      From-SVN: r181127
      Francois-Xavier Coudert committed
    • re PR target/51007 (Quadmath I/O doesn't work on MinGW) · 744bbef1
              PR target/51007
              * quadmath-imp.h (ieee854_float128): Adjust
              for ms-bitfield layout.
      
      From-SVN: r181125
      Kai Tietz committed
    • pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error call in case COMPONENT_REF. · 5a0626d1
      2011-11-07  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* pt.c (tsubst_copy_and_build): Fix qualified_name_lookup_error
      	call in case COMPONENT_REF.
      
      From-SVN: r181124
      Paolo Carlini committed
    • i386-bultin-types.def (V8SI_FTYPE_V4DF_V4DF): Add. · c8694a80
      	* config/i386/i386-bultin-types.def (V8SI_FTYPE_V4DF_V4DF): Add.
      	* config/i386/i386.c (enum ix86_builtins): Add
      	IX86_BUILTIN_VEC_PACK_SFIX256.
      	(bdesc_args): Add __builtin_ia32_vec_pack_sfix256.
      	(ix86_expand_args_builtin): Handle V8SI_FTYPE_V4DF_V4DF.
      	(ix86_builtin_vectorized_function): Also vectorize lrint using
      	256-bit vectors for -mavx.
      
      From-SVN: r181122
      Jakub Jelinek committed
    • constraints.md: New file. · 06cadf63
      	* config/cris/constraints.md: New file.
      	* config/cris/cris.h (REG_CLASS_FROM_LETTER, CONSTRAINT_LEN,
      	CRIS_CONST_OK_FOR_LETTER_P, CONST_OK_FOR_CONSTRAINT_P,
      	CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_MEMORY_CONSTRAINT,
      	EXTRA_CONSTRAINT, EXTRA_CONSTRAINT_Q, EXTRA_CONSTRAINT_R,
      	EXTRA_CONSTRAINT_T, EXTRA_CONSTRAINT_S, EXTRA_CONSTRAINT_U): Remove.
      	* config/cris/cris.c: Incule "tm-constrs.h".
      	(cris_print_operand): Use satisfies_constraint_O.
      	(cris_normal_notice_update_cc, cris_rtx_costs): Use
      	satisfies_constraint_I.
      	(cris_address_cost): Use satisfies_constraint_L.
      	* config/cris/cris.md: Include "constraints.md".
      	(*mov_side<mode>, *mov_sidesisf, *mov_side<mode>_mem,
      	*mov_sidesisf_mem, *clear_side<mode>, *ext_sideqihi,
      	*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>,
      	*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side,
      	*extop<mode>si_swap_side): Use satisfies_constraint_N and
      	satisfies_constraint_J.
      	(moversideqi movemsideqi mover2side peephole2): Use
      	satisfies_constraint_N and satisfies_constraint_J.
      	(andu peephole2): Use satisfies_constraint_I and
      	satisfies_constraint_O.
      
      From-SVN: r181120
      Anatoly Sokolov committed
    • atomic_base.h (atomic_thread_fence): Revert. · 6577e39c
      
      2011-11-07  Andrew MacLeod  <amacleod@redhat.com>
      
      	* include/bits/atomic_base.h (atomic_thread_fence): Revert.
      	(atomic_signal_fence): Revert.
      
      From-SVN: r181119
      Andrew MacLeod committed
    • PR c++/45114 - Support C++11 alias-declaration · 28704289
      gcc/cp/
      
      	* cp-tree.h (TYPE_DECL_ALIAS_P, TYPE_ALIAS_P)
      	(DECL_TYPE_TEMPLATE_P, DECL_ALIAS_TEMPLATE_P): New accessor
      	macros.
      	(TYPE_TEMPLATE_INFO): Get template info of an alias template
      	specializations from its TYPE_DECL.
      	(SET_TYPE_TEMPLATE_INFO): Set template info of alias template
      	specializations into its TYPE_DECL.
      	(DECL_CLASS_TEMPLATE_P): Re-write using the new
      	DECL_TYPE_TEMPLATE_P.
      	(enum cp_decl_spec): Add new ds_alias enumerator.
      	(alias_type_or_template_p, alias_template_specialization_p):
      	Declare new functions.
      	* parser.c (cp_parser_alias_declaration): New static function.
      	(cp_parser_check_decl_spec): Add "using" name for the `alias'
      	declspec.
      	(cp_parser_type_name): Update comment.  Support simple-template-id
      	representing alias template specializations in c++0x mode.
      	(cp_parser_qualifying_entity): Update comment.  Use
      	cp_parser_type_name.
      	(cp_parser_block_declaration): Handle alias-declaration in c++11.
      	Update comment.
      	(cp_parser_template_id): Handle specializations of alias
      	templates.
      	(cp_parser_member_declaration): Add alias-declaration production
      	to comment.  Support alias-declarations.
      	(cp_parser_template_declaration_after_export): Handle alias
      	templates in c++11.
      	* decl.c (make_typename_type, make_unbound_class_template): Accept
      	alias templates.
      	(grokdeclarator): Set TYPE_DECL_ALIAS_P on alias
      	declarations.
      	* decl2.c (grokfield): Move template creation after setting up the
      	TYPE_DECL of the alias, so that the TEMPLATE_DECL of the alias
      	template actually carries the right type-id of the alias
      	declaration.
      	* pt.c (alias_type_or_template_p)
      	(alias_template_specialization_p): Define new public functions.
      	(maybe_process_partial_specialization): Reject partial
      	specializations of alias templates.
      	(primary_template_instantiation_p): Consider alias template
      	instantiations.
      	(push_template_decl_real): Assert that TYPE_DECLs of alias
      	templates are different from those of class template.  Store
      	template info onto the TYPE_DECL of the alias template.
      	(convert_template_argument): Strip aliases from template
      	arguments.
      	(lookup_template_class_1): Handle the creation of the
      	specialization of an alias template.
      	(tsubst_decl): Create a substituted copy of the TYPE_DECL of an
      	member alias template.
      	(tsubst): Handle substituting into the type of an alias template.
      	Handle substituting UNBOUND_CLASS_TEMPLATE into
      	BOUND_TEMPLATE_TEMPLATE_PARM.
      	(do_type_instantiation): Better diagnostics when trying to
      	explicitely instantiate a non-class template.
      	* search.c (lookup_field_1, lookup_field_r): Support looking up
      	alias templates.
      	* semantics.c (finish_template_type): For instantiations of alias
      	templates, return the TYPE_DECL of the actual alias and not the
      	one of the aliased type.
      	* error.c (dump_alias_template_specialization): New static
      	function.
      	(dump_type): Handle printing of alias templates and their
      	specializations.  templates.
      	(dump_aggr_type): For specialization of alias templates, fetch
      	arguments from the right place.
      	(dump_decl): Print an alias-declaration like `using decl = type;'
      	(dump_template_decl):  Support printing of alias templates.
      
      gcc/testsuite/
      
      	* g++.dg/cpp0x/alias-decl-0.C: New test case.
      	* g++.dg/cpp0x/alias-decl-1.C: Likewise.
      	* g++.dg/cpp0x/alias-decl-3.C: Likewise.
      	* g++.dg/cpp0x/alias-decl-4.C: Likewise.
      	* g++.dg/cpp0x/alias-decl-6.C: Likewise.
      	* g++.dg/cpp0x/alias-decl-7.C: Likewise.
      	* g++.dg/cpp0x/alias-decl-8.C: Likewise.
      	* g++.dg/cpp0x/alias-decl-9.C: Likewise.
      	* g++.dg/cpp0x/alias-decl-10.C: Likewise.
      	* g++.dg/ext/alias-decl-attr1.C: Likewise.
      	* g++.dg/ext/alias-decl-attr2.C: Likewise.
      	* g++.dg/ext/alias-decl-attr3.C: Likewise.
      	* g++.dg/ext/alias-decl-attr4.C: Likewise.
      
      From-SVN: r181118
      Dodji Seketeli committed
    • i386.c (ix86_builtin_vectorized_function): Handle BUILT_IN_IRINT,… · bfd08c89
      i386.c (ix86_builtin_vectorized_function): Handle BUILT_IN_IRINT, BUILT_IN_IRINTF, BUILT_IN_LLRINT and BUILT_IN_LLRINTF.
      
      	* config/i386/i386.c (ix86_builtin_vectorized_function): Handle
      	BUILT_IN_IRINT, BUILT_IN_IRINTF, BUILT_IN_LLRINT and BUILT_IN_LLRINTF.
      
      From-SVN: r181116
      Uros Bizjak committed
    • * gcc.dg/pragma-align-2.c: Compile with -std=gnu99. · 805eaf4a
      From-SVN: r181114
      Eric Botcazou committed
    • optabs.c (get_atomic_op_for_code): Fill in optab table at runtime so… · 6ff336b4
      optabs.c (get_atomic_op_for_code): Fill in optab table at runtime so SWITCHABLE_TARGET can change the valuies...
      
      
      
      2011-11-07  Andrew MacLeod  <amacleod@redhat.com>
      
      	* optabs.c (get_atomic_op_for_code): Fill in optab table at runtime so
      	SWITCHABLE_TARGET can change the valuies during compilation.
      	(expand_atomic_fetch_op): handle parameter changes ripples for 
      	get_atomic_op_for_code call.
      
      From-SVN: r181112
      Andrew MacLeod committed
    • atomic_base.h (atomic_thread_fence): Call builtin. · 0669295b
      
      2011-11-07  Andrew MacLeod  <amacleod@redhat.com>
      
      	libstdc++-v3
      	* include/bits/atomic_base.h (atomic_thread_fence): Call builtin.
      	(atomic_signal_fence): Call builtin.
      	(atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree,
      	otherwise fall back to call __sync_lock_test_and_set.
      	(atomic_flag::clear): Call __atomic_store when it is lockfree,
      	otherwise fall back to call __sync_lock_release.
      
      	gcc
      	* doc/extend.texi: Docuemnt behaviour change for __atomic_exchange and
      	__atomic_store.
      	* optabs.c (expand_atomic_exchange): Expand to __sync_lock_test_and_set
      	only when originated from that builtin.
      	(expand_atomic_store): Expand to __sync_lock_release when originated
      	from that builtin.
      	* builtins.c (expand_builtin_sync_lock_test_and_set): Add flag that
      	expand_atomic_exchange call originated from here.
      	(expand_builtin_sync_lock_release): Add flag that expand_atomic_store
      	call originated from here.
      	(expand_builtin_atomic_exchange): Add origination flag.
      	(expand_builtin_atomic_store): Add origination flag.
      	* expr.h (expand_atomic_exchange, expand_atomic_store): Add boolean 
      	parameters to indicate implementation fall back options.
      
      From-SVN: r181111
      Andrew MacLeod committed
    • re PR fortran/50919 ([OOP] Don't use vtable for NON_OVERRIDABLE TBP) · fd83db3d
      2011-11-07  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/50919
      	* class.c (add_proc_comp): Don't add non-overridable procedures to the
      	vtable.
      	* resolve.c (resolve_typebound_function,resolve_typebound_subroutine):
      	Don't generate a dynamic _vptr call for non-overridable procedures.
      
      2011-11-07  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/50919
      	* gfortran.dg/typebound_call_21.f03: New.
      
      From-SVN: r181107
      Janus Weil committed
    • avr.c (output_reload_in_const): Can handle CONSTANT_P now, not only CONST_INT and CONST_DOUBLE. · 0098895f
      	* config/avr/avr.c (output_reload_in_const): Can handle CONSTANT_P
      	now, not only CONST_INT and CONST_DOUBLE.
      	(output_movqi): Use output_reload_in_const.
      	(output_reload_inhi): Ditto.
      	(output_reload_insisf): Move assertion to output_reload_in_const.
      	(avr_out_reload_inpsi): Ditto.
      
      From-SVN: r181106
      Georg-Johann Lay committed
    • libgcov.c (struct gcov_fn_buffer): New struct. · 5366b186
      	libgcc/
      	* libgcov.c (struct gcov_fn_buffer): New struct.
      	(buffer_fn_data): New helper.
      	(gcov_exit): Rework for new gcov data structures.
      
      	gcc/
      	* gcov.c (object_summary): Replace with ...
      	(object_runs): ... this.
      	(process_file): Remove functions with no data.
      	(generate_results): Ignore files with no lines.
      	(release_function): New helper, broken out of ...
      	(release_structures): ... here.  Use it.
      	(read_count_file): Adjust for new data file format.
      	(output_lines): Use object_runs.
      	* gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Obsolete.
      	(struct gcov_ctr_info): Move definition.
      	(struct gcov_fn_info): Add key field, use gcov_ctr_info for
      	trailing array.
      	(struct gcov_info): Add merge function array, remove mask and
      	counts.  Trailing array is array of pointers to function info.
      	* coverage.c (struct function_list): Replace counter numbers with
      	counter arrays.  Add fndecl field.  GTYify.
      	(counts_entry): Remove chain workspace.
      	(functions_head): GTYify.
      	(prg_n_ctrs): Remove.
      	(fn_v_ctrs): New.
      	(tree_ctr_tables): Remove.
      	(read_counts_file): Cope with blank entries and expect program
      	summaries before functions.  Don't warn on missing entries.
      	(coverage_counter_alloc): Allocate individual function arrays.
      	(tree_coverage_counter_ref, tree_coverage_counter_addr): Adjust
      	for individual function arrays.
      	(coverage_end_function): GTYify function list object. Finalize
      	function's counter arrays.
      	(build_var): New.  Create a counter-related variable with
      	appropriate linkage.
      	(build_fn_info_type): Adjust for new runtime structure.
      	(build_fn_info_value): Rename to ...
      	(build_fn_info): ... here.  Build new format data.
      	(build_ctr_info_type, build_ctr_info_value): Remove.
      	(build_info_type): New. Build new format data structure.
      	(build_info): Adjust for new format data.
      	(create_coverage): Likewise.
      	* gcov-dump.c (tag_function): Recognize placeholders.
      
      	gcc/testsuite/
      	* gcc.dg/profile-dir-1.c: Adjust final scan.
      	* gcc.dg/profile-dir-2.c: Adjust final scan.
      	* gcc.dg/profile-dir-3.c: Adjust final scan.
      	* gcc.misc-tests/gcov.exp: Adjust regexp.
      	* gcc.misc-tests/gcov-12.c: New.
      	* gcc.misc-tests/gcov-13.c: New.
      	* gcc.misc-tests/gcovpart-13b.c: New.
      	* gcc.misc-tests/gcov-14.c: New.
      
      From-SVN: r181105
      Nathan Sidwell committed