1. 03 May, 2012 29 commits
  2. 02 May, 2012 11 commits
    • faq.xml: Update outdated allocator documentation. · 3b2b3556
      	* doc/xml/faq.xml: Update outdated allocator documentation.
      	* doc/xml/manual/allocator.xml: Likewise.
      	* doc/xml/manual/debug.xml: Likewise.
      	* doc/xml/manual/evolution.xml: Likewise.
      	* doc/xml/manual/using.xml: Likewise.
      
      From-SVN: r187068
      Jonathan Wakely committed
    • re PR libstdc++/44015 (template parameters not documented) · d632488a
      2012-05-02  Benjamin Kosnik  <bkoz@redhat.com>
      
      	PR libstdc++/44015
      	* include/bits/basic_ios.h: Add tparam markup for
      	* doxygen.  include/bits/basic_string.h: Same.
      	* include/bits/forward_list.h: Same.
      	* include/bits/stl_bvector.h: Same.
      	* include/bits/stl_deque.h: Same.
      	* include/bits/stl_list.h: Same.  include/bits/stl_map.h:
      	* Same.  include/bits/stl_multimap.h: Same.
      	* include/bits/stl_multiset.h: Same.
      	* include/bits/stl_pair.h: Same.
      	* include/bits/stl_queue.h: Same.
      	* include/bits/stl_set.h: Same.
      	* include/bits/stl_stack.h: Same.
      	* include/bits/stl_vector.h: Same.
      	* include/bits/unordered_map.h: Same.
      	* include/bits/unordered_set.h: Same.  include/std/array:
      	* Same.  include/std/atomic: Same.  include/std/fstream:
      	* Same.  include/std/istream: Same.  include/std/ostream:
      	* Same.  include/std/sstream: Same.
      	* include/std/streambuf: Same.
      	* testsuite/23_containers/deque/requirements/dr438/*:
                Adjust line numbers.
      	* testsuite/23_containers/list/requirements/dr438/*: Same.
      	* testsuite/23_containers/vector/requirements/dr438/*: Same.
      
      From-SVN: r187066
      Benjamin Kosnik committed
    • vms.h (SUBTARGET_OVERRIDE_OPTIONS): For pic code, unset flag_jump_tables. · daccad6d
      	* config/alpha/vms.h (SUBTARGET_OVERRIDE_OPTIONS): For pic code,
      	unset flag_jump_tables.
      	* stmt.c (expand_case): Remove special flag_pic case conditional
      	on ASM_OUTPUT_ADDR_DIFF_ELT not being defined.
      
      From-SVN: r187065
      Steven Bosscher committed
    • s390-common.c (s390_option_optimization_table): Enable -fsched-pressure using… · aefa216b
      s390-common.c (s390_option_optimization_table): Enable -fsched-pressure using -fsched-pressure-algorithm=model by default when...
      
      2012-05-02  Ulrich Weigand  <ulrich.weigand@linaro.org>
      
      	gcc/
      	* common/config/s390/s390-common.c (s390_option_optimization_table):
      	Enable -fsched-pressure using -fsched-pressure-algorithm=model by
      	default when optimizing.
      
      	gcc/testsuite/
      	* gcc.target/s390/20030123-1.c: Add missing "volatile".
      
      From-SVN: r187064
      Ulrich Weigand committed
    • re PR lto/52605 (LTO -g ICE when looking up context of VMTs of classes defined within functions) · d282264e
      2012-05-02  Martin Jambor  <mjambor@suse.cz>
      
      	PR lto/52605
      	* dwarf2out.c (dwarf2out_decl): Only lookup die representing context
      	of a variable when the contect is a function.
      
      	* gcc/testsuite/g++.dg/lto/pr52605_0.C: New test.
      
      From-SVN: r187063
      Martin Jambor committed
    • crossconfig.m4: Since we know that all TPF builds are cross- builds and cannot run... · 40f93bb5
      * crossconfig.m4: Since we know that all TPF builds are cross-
      builds and cannot run configuration-time link tests, do not
      allow it; just go with known supported linker options.
      * configure: Regenerate (called as GLIBCXX_CROSSCONFIG).
      
      From-SVN: r187062
      DJ Delorie committed
    • dwarf2.def: Remove DW_FORM_GNU_ref_index, replace DW_AT_GNU_ref_base with DW_AT_GNU_ranges_base. · 43f7c432
      include/
      
      	* dwarf2.def: Remove DW_FORM_GNU_ref_index,
      	replace DW_AT_GNU_ref_base with DW_AT_GNU_ranges_base.
      
      From-SVN: r187061
      Cary Coutant committed
    • Properly initialize cpp_context in destringize_and_run · 3ad64f53
      destringize_and_run forgets to initialize all the fields of the
      cpp_context that it pushes.  Later _cpp_pop_context then gets confused
      when it accesses context->tokens_kind via the call to macro_of_context
      on context->prev.
      
      The first hunk of this patch is the real obvious fix.  The second hunk
      is just an assert that I am adding to err on the safe side.
      
      Tested by on x86_64-unknown-linux-gnu against trunk by running the
      test gcc.dg/gomp/macro-4.c under Valgrind, and bootstrapped.
      
      libcpp/
      
      	* directives.c (destringize_and_run): Properly initialize the new
      	context.
      	* macro.c (_cpp_pop_context): Assert that we shouldn't try to pop
      	the initial base context, which has the same life time as the
      	current instance of cpp_file.
      
      From-SVN: r187054
      Dodji Seketeli committed
    • coretypes.h (gimple_seq, [...]): Typedef as gimple. · 355a7673
      	* coretypes.h (gimple_seq, const_gimple_seq): Typedef as gimple.
      	* gimple.h (struct gimple_seq_node_d, struct gimple_seq_d): Remove.
      	(const_gimple_seq_node): Remove.
      	(gimple_seq_node): Typedef as gimple.
      	(struct gimple_statement_base): Add next and prev members,
      	adjust all WORD markers in using structs.
      	(union gimple_statement_d): Link via gsbase.next field for GC and PCH.
      	(gimple_seq_first, gimple_seq_first_stmt, gimple_seq_last,
      	gimple_seq_last_stmt): Adjust as gimple_seq, gimple_seq_node and
      	gimple are the same.
      	(gimple_seq_set_last, gimple_seq_set_first): Don't allocate
      	gimple_seq, adjust.
      	(gimple_init_singleton): New function.
      	(gsi_start_1, gsi_last_1, gsi_end_p, gsi_one_before_end_p): Adjust.
      	(gsi_next, gsi_prev): Adjust, handle prev cyclic list correctly.
      	(gsi_stmt): Adjust.
      	(gsi_stmt_ptr): Remove.
      	(enum gimple_alloc_kind): Remove gimple_alloc_kind_seq member.
      
      	* gimple-iterator.c (update_bb_for_stmts): Take last parameter
      	again, adjust for above changes.
      	(update_call_edge_frequencies): Adjust for above changes.
      	(gsi_insert_seq_nodes_before): Rewrite for new data structure.
      	(gsi_insert_seq_nodes_after): Ditto.
      	(gsi_split_seq_after): Ditto.
      	(gsi_set_stmt): Ditto.
      	(gsi_split_seq_before): Ditto.
      	(gsi_remove): Ditto.
      	(gsi_insert_seq_before_without_update): Don't free sequence.
      	(gsi_insert_seq_after_without_update): Ditto.
      	(gsi_replace): Assert some more invariants.
      	(gsi_insert_before_without_update, gsi_insert_after_without_update):
      	Tidy.
      	(gsi_for_stmt): Don't search for stmt.
      	(gsi_insert_on_edge_immediate): Tidy.
      
      	* gimple.c (gimple_alloc_k): Remove "sequences".
      	(gimple_seq_cache): Remove.
      	(gimple_alloc_stat): Make stmt a singleton sequence.
      	(gimple_seq_alloc, gimple_seq_free): Remove.
      	(gimple_assign_set_rhs_with_ops_1): Ensure new stmt is a singleton.
      	(gimple_copy): Ditto.
      	* gimplify.c (gimplify_cleanup_point_expr): Use gsi_set_stmt,
      	create iterator from correct sequence.
      	* tree-phinodes.c (make_phi_node): Make stmt a singleton.
      
      
      	* gimple.h (gimple_stmt_iterator <seq>): Make it be pointer to
      	gimple_seq.
      	(gimple_seq_set_last, gimple_seq_set_first): Take pointer to
      	sequence, lazily allocate it.
      	(bb_seq_addr): New function.
      	(gsi_start_1): Rename from gsi_start, but take pointer to sequence.
      	(gsi_start): Macro to wrap gsi_start_1 taking pointer of argument.
      	(gsi_none): New function.
      	(gsi_start_bb): Adjust.
      	(gsi_last_1): Rename from gsi_last, but take pointer to sequence.
      	(gsi_last): Macro to wrap gsi_last_1 taking pointer of argument.
      	(gsi_last_bb): Adjust.
      	(gsi_seq): Adjust.
      	* tree-flow-inline.h (phi_nodes_ptr): New function.
      
      	* gimple-iterator.c (gsi_insert_seq_nodes_before): Adjust to 
      	datastructure and interface change.
      	(gsi_insert_seq_before_without_update): Ditto.
      	(gsi_insert_seq_nodes_after): Ditto.
      	(gsi_insert_seq_after_without_update): Ditto.
      	(gsi_split_seq_after): Ditto, don't use gimple_seq_alloc.
      	(gsi_split_seq_before): Ditto.
      	(gsi_start_phis): Adjust.
      	* tree-vect-loop.c (vect_determine_vectorization_factor): Use
      	gsi_none.
      	(vect_transform_loop): Ditto.
      	* gimple.c (gimple_seq_add_stmt, gimple_seq_add_seq,
      	gimple_seq_copy): Don't use gimple_seq_alloc.
      	* gimplify.c (gimple_seq_add_stmt_without_update): Ditto.
      	(gimplify_seq_add_seq): Ditto.
      	* lto-streamer-in.c (make_new_block): Ditto.
      	* tree-cfg.c (create_bb): Ditto.
      	* tree-sra.c (initialize_parameter_reductions): Ditto.
      
      
      	* gimple.h (gimple_seq_first, gimple_seq_first_stmt, gimple_seq_last,
      	gimple_seq_last_stmt, gimple_seq_set_last, gimple_seq_set_first,
      	gimple_seq_empty_p, gimple_seq_alloc_with_stmt, bb_seq,
      	set_bb_seq): Move down to after gimple_statement_d definition.
      
      
      	* gimple-fold.c (gimplify_and_update_call_from_tree): Use
      	gsi_replace_with_seq, instead of inserting itself.
      	* gimple-iterator.c (gsi_replace_with_seq): New function.
      	* tree-ssa-forwprop.c (forward_propagate_comparison): Take
      	iterator instead of statement, advance it.
      	(ssa_forward_propagate_and_combine): Adjust call to above.
      
      
      	* tree-phinodes.c (add_phi_node_to_bb): Tidy, don't use
      	gimple_seq_alloc.
      	* omp-low.c (finalize_task_copyfn): Don't use gimple_seq_alloc.
      	* tree-nested.c (walk_gimple_omp_for): Ditto.
      	* trans-mem.c (lower_transaction): Ditto.
      	* tree-eh.c (do_return_redirection): Ditto.
      	(do_goto_redirection): Ditto.
      	(lower_try_finally_switch): Ditto.
      	* gimplify.c (gimplify_stmt): Ditto.
      	(gimplify_scan_omp_clauses): Ditto.
      	(gimplify_omp_for): Ditto.
      	(gimplify_function_tree): Ditto.
      	* gimple-fold.c (gimplify_and_update_call_from_tree): Ditto.
      	* tree-mudflap.c (mf_decl_cache_locals): Ditto.
      	(mf_build_check_statement_for): Ditto.
      	(mx_register_decls): Ditto.
      	* graphite-sese-to-poly.c (remove_invariant_phi): Ditto,
      	and don't use itertors to append.
      	(insert_stmts): Ditto.
      	(insert_out_of_ssa_copy): Ditto.
      	(insert_out_of_ssa_copy_on_edge): Ditto.
      
      
      	* gimple.h (gimple_bind_body_ptr): New function.
      	(gimple_bind_body): Use it.
      	(gimple_catch_handler): Use gimple_catch_handler_ptr.
      	(gimple_eh_filter_failure_ptr): New function.
      	(gimple_eh_filter_failure): Use it.
      	(gimple_eh_else_n_body_ptr): New function.
      	(gimple_eh_else_n_body): Use it.
      	(gimple_eh_else_e_body_ptr): New function.
      	(gimple_eh_else_e_body): Use it.
      	(gimple_try_eval_ptr): New function.
      	(gimple_try_eval): Use it.
      	(gimple_try_cleanup_ptr): New function.
      	(gimple_try_cleanup): Use it.
      	(gimple_wce_cleanup_ptr): New function.
      	(gimple_wce_cleanup): Use it.
      	(gimple_omp_body_ptr): New function.
      	(gimple_omp_body): Use it.
      	(gimple_omp_for_pre_body_ptr): New function.
      	(gimple_omp_for_pre_body): Use it.
      	(gimple_transaction_body_ptr): New function.
      	(gimple_transaction_body): Use it.
      	(gsi_split_seq_before): Adjust to return nothing and take pointer
      	to sequence.
      	(gsi_set_stmt): Declare.
      	(gsi_replace_with_seq): Declare.
      	(walk_gimple_seq_mod): Declare.
      	* function.h (struct function <gimple_body>): Use typedef gimple_seq.
      
      	* gimple-iterator.c (gsi_set_stmt): New function.
      	(gsi_split_seq_before): Return new sequence via pointer argument.
      	(gsi_replace): Use gsi_set_stmt.
      
      	* tree-ssa-loop-im.c (move_computations_stmt): First remove
      	then insert stmt.
      	* tree-complex.c (update_complex_components_on_edge): Don't
      	copy gsi.
      	* tree-phinodes.c (resize_phi_node): Don't resize stmt in-place,
      	return new stmt.
      	(reserve_phi_args_for_new_edge): Change call to above,
      	use gsi_set_stmt.
      
      	* omp-low.c (lower_omp): Change prototype to take pointer to
      	sequence.
      	(lower_rec_input_clauses): Use gimple_seq_add_seq instead of
      	iterators.  Adjust call to lower_omp.
      	(lower_lastprivate_clauses): Adjust call to lower_omp.
      	(lower_reduction_clauses): Ditto.
      	(expand_omp_taskreg): Nullify non-cfg body of child_fn.
      	(lower_omp_sections): Don't explicitely count sequence length,
      	nullify lowered bodies earlier, ensure stmts are part of only
      	one sequence, adjust call to lower_omp.
      	(lower_omp_single): Ensure stmts are part of only one sequence,
      	adjust call to lower_omp.
      	(lower_omp_master): Ditto.
      	(lower_omp_ordered): Ditto.
      	(lower_omp_critical): Ditto.
      	(lower_omp_for): Ditto.
      	(lower_omp_taskreg): Ditto, tidy.
      	(lower_omp_1): Adjust calls to lower_omp.
      	(execute_lower_omp): Ditto.
      	(lower_omp): Adjust to take pointer to sequence.
      	(diagnose_sb_2): Use walk_gimple_seq_mod.
      	(diagnose_omp_structured_block_errors): Ditto and set possibly
      	changed function body.
      	* gimple-low.c (lower_function_body): Set function body after
      	it stabilizes.
      	(lower_sequence): Adjust to take pointer to sequence.
      	(lower_omp_directive): Ensure stmt isn't put twice into the
      	sequence, adjust call to lower_sequence.
      	(lower_stmt): Adjust calls to lower_sequence.
      	(lower_gimple_bind): Ditto.
      	(gimple_try_catch_may_fallthru): Call gsi_start with lvalue.
      	* tree-nested.c (walk_body): Take pointer to sequence, use
      	walk_gimple_seq_mod.
      	(walk_function): Adjust call to walk_body, set possibly changed
      	body.
      	(walk_gimple_omp_for): Adjust calls to walk_body.
      	(convert_nonlocal_omp_clauses): Ditto.
      	(convert_nonlocal_reference_stmt): Ditto.
      	(convert_local_omp_clauses): Ditto.
      	(convert_local_reference_stmt): Ditto.
      	(convert_tramp_reference_stmt): Ditto.
      	(convert_gimple_call): Ditto.
      	(convert_nl_goto_reference): Use local iterator copy.
      	* gimple.c (walk_gimple_seq_mod): Renamed from walk_gimple_seq,
      	but taking pointer to sequence, ensure gsi_start is called with
      	callers lvalue.
      	(walk_gimple_seq): New wrapper around walk_gimple_seq_mod,
      	asserting that the sequence head didn't change.
      	(walk_gimple_stmt): Replace all calls to walk_gimple_seq with
      	walk_gimple_seq_mod.
      	* trans-mem.c (lower_transaction): Use walk_gimple_seq_mod.
      	(execute_lower_tm): Ditto, and set possibly changed body.
      	* tree-eh.c (lower_eh_constructs_1): Take pointer to sequence,
      	call gsi_start with that lvalue.
      	(replace_goto_queue_stmt_list): Ditto.
      	(replace_goto_queue_1): Adjust calls to replace_goto_queue_stmt_list.
      	(replace_goto_queue): Ditto.
      	(lower_try_finally_nofallthru): Adjust calls to lower_eh_constructs_1.
      	(lower_try_finally_onedest): Ditto.
      	(lower_try_finally_copy): Ditto.
      	(lower_try_finally_switch): Ditto.
      	(lower_try_finally): Ditto.
      	(lower_eh_filter): Ditto.
      	(lower_eh_must_not_throw): Ditto.
      	(lower_cleanup): Ditto.
      	(lower_eh_constructs_2): Ditto.
      	(lower_catch): Ditto, and ensure gsi_start is called with lvalue.
      	(lower_eh_constructs): Adjust calls to lower_eh_constructs_1, and
      	set possibly changed body.
      	(optimize_double_finally): Call gsi_start with lvalue.
      
      	* tree-cfg.c (make_blocks): Adjust call to gsi_split_seq_before.
      	(gimple_split_block): Ditto.
      	(gimple_merge_blocks): Use gsi_start_phis.
      	(move_stmt_r): Use walk_gimple_seq_mod.
      	* tree-ssa-dse.c (dse_enter_block): Use gsi_last_bb.
      	* cgraphbuild.c (build_cgraph_edges): Use gsi_start_phis.
      	(rebuild_cgraph_edges): Ditto.
      	(cgraph_rebuild_references): Ditto.
      	* ipa-prop.c (ipa_analyze_params_uses): Ditto.
      	* tree-inline.c (copy_phis_for_bb): Ditto.
      	* tree-ssa-dce.c: Ditto.
      
      	* cgraphunit.c (cgraph_analyze_function): Use gimple_has_body_p.
      
      From-SVN: r187053
      Michael Matz committed
    • hashtable_policy.h: Correct namepace nesting for _Hashtable forward declaration. · 63dc7fbe
      2012-05-02  Benjamin Kosnik  <bkoz@redhat.com>
      
      	* include/bits/hashtable_policy.h: Correct namepace nesting for
      	_Hashtable forward declaration.
      
      From-SVN: r187052
      Benjamin Kosnik committed
    • ChangeLog entry: · 5dcfdccd
              * coretypes (MEMMODEL_MASK): New.
              * builtins.c (get_memmodel): Add val. Call target.memmodel_check
              and return new variable.
              (expand_builtin_atomic_exchange):  Mask memmodel values.
              (expand_builtin_atomic_compare_exchange): Ditto.
              (expand_builtin_atomic_load): Ditto.
              (expand_builtin_atomic_store): Ditto.
              (expand_builtin_atomic_clear): Ditto.
              * doc/extend.texi: Mention port-dependent memory model flags.
              * config/i386/cpuid.h (bit_HLE): New.
              * config/i386/driver-i386.c (host_detect_local_cpu): Detect
              HLE support.
              * config/i386/i386-protos.h (ix86_generate_hle_prefix): New.
              * config/i386/i386-c.c (ix86_target_macros_internal): Set
              HLE defines.
              (ix86_target_string)<-mhle>: New.
              (ix86_valid_target_attribute_inner_p)<OPT_mhle>: Ditto.
              * config/i386/i386.c (ix86_target_string)<OPTION_MASK_ISA_HLE>:
              New.
              (ix86_valid_target_attribute_inner_p)<OPT_mhle>: Ditto.
              (ix86_option_override_internal)<PTA_HLE>: New switch, set it
              enabled for generic, generic64 and core-avx2.
              (ix86_print_operand): Generate HLE lock prefixes.
              (ix86_memmodel_check): New.
              (TARGET_MEMMODEL_CHECK): Ditto.
              * config/i386/i386.h (OPTION_ISA_HLE): Ditto.
              (IX86_HLE_ACQUIRE): Ditto.
              (IX86_HLE_RELEASE): Ditto.
              * config/i386/i386.h (ix86_generate_hle_prefix): Ditto.
              * config/i386/i386.opt (mhle): Ditto.
              * config/i386/sync.md(atomic_compare_and_swap<mode>): Pass
              success model to instruction emitter.
              (atomic_fetch_add<mode>): Ditto.
              (atomic_exchange<mode>): Ditto.
              (atomic_add<mode>): Ditto.
              (atomic_sub<mode>): Ditto.
              (atomic_<code><mode>): Ditto.
              (*atomic_compare_and_swap_doubledi_pic): Ditto.
              (atomic_compare_and_swap_single<mode>): Define and use argument
              for success model.
              (atomic_compare_and_swap_double<mode>): Ditto.
              * configure.ac: Check if assembler support HLE prefixes.
              * configure: Regenerate.
              * config.in: Ditto.
      
      testsuite/ChangeLog entry:
      
              * gcc.target/i386/hle-cmpxchg-acq-1.c: New.
              * gcc.target/i386/hle-cmpxchg-rel-1.c: Ditto.
              * gcc.target/i386/hle-add-acq-1.c: Ditto.
              * gcc.target/i386/hle-add-rel-1.c: Ditto.
              * gcc.target/i386/hle-and-acq-1.c: Ditto.
              * gcc.target/i386/hle-and-rel-1.c: Ditto.
              * gcc.target/i386/hle-or-acq-1.c: Ditto.
              * gcc.target/i386/hle-or-rel-1.c: Ditto.
              * gcc.target/i386/hle-sub-acq-1.c: Ditto.
              * gcc.target/i386/hle-sub-rel-1.c: Ditto.
              * gcc.target/i386/hle-xadd-acq-1.c: Ditto.
              * gcc.target/i386/hle-xadd-rel-1.c: Ditto.
              * gcc.target/i386/hle-xchg-acq-1.c: Ditto.
              * gcc.target/i386/hle-xchg-rel-1.c: Ditto.
              * gcc.target/i386/hle-xor-acq-1.c: Ditto.
              * gcc.target/i386/hle-xor-rel-1.c: Ditto.
      
      
      
      Co-Authored-By: Andi Kleen <ak@linux.intel.com>
      
      From-SVN: r187051
      Kirill Yukhin committed