1. 07 May, 2013 1 commit
    • ira.c (update_equiv_regs): Add insn having equiv memory even if it is not lhs of the insn. · 5a107a0f
      2013-05-07  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira.c (update_equiv_regs): Add insn having equiv memory even if
      	it is not lhs of the insn.
      	(setup_reg_equiv): Remove insn having equiv memory which it is not
      	lhs of the insn.
      	* lra-constraints.c (process_address): Try to improve generation
      	code for address base + disp.
      	(lra_constraints): Make correct the code for checking insn setting
      	up backward equivalence.  Remove insn only if it is in the init
      	insn list.
      	* lra-eliminations.c (update_reg_eliminate): Change return value.
      	(lra_eliminate): Use the result.
      
      From-SVN: r198695
      Vladimir Makarov committed
  2. 12 Apr, 2013 1 commit
    • tree-pass.h (TODO_do_not_ggc_collect): New. · d3afd9aa
      2013-04-12  Richard Biener  <rguenther@suse.de>
      
      	* tree-pass.h (TODO_do_not_ggc_collect): New.
      	* passes.c (execute_one_ipa_transform_pass): Honor
      	TODO_do_not_ggc_collect.
      	(execute_one_pass): Likewise.
      
      	Revert
      	2013-04-10  Richard Biener  <rguenther@suse.de>
      
      	* passes.c (init_optimization_passes): Remove reload pass.
      	* ira.c (do_reload): Merge into ...
      	(ira): ... this.
      	(rest_of_handle_reload): Remove.
      	(pass_reload): Likewise.
      	* config/i386/i386.c (ix86_option_override): Refer to ira instead
      	of reload for vzeroupper pass placement.
      
      	* g++.dg/pr55604.C: Use -fdump-rtl-ira.
      
      From-SVN: r197865
      Richard Biener committed
  3. 10 Apr, 2013 1 commit
    • passes.c (execute_todo): Do not call ggc_collect conditional here. · bb313b93
      2013-04-10  Richard Biener  <rguenther@suse.de>
      
      	* passes.c (execute_todo): Do not call ggc_collect conditional here.
      	(execute_one_ipa_transform_pass): But unconditionally here.
      	(execute_one_pass): And here.
      	(init_optimization_passes): Remove reload pass.
      	* tree-pass.h (TODO_ggc_collect): Remove.
      	(pass_reload): Likewise.
      	* ira.c (do_reload): Merge into ...
      	(ira): ... this.
      	(rest_of_handle_reload): Remove.
      	(pass_reload): Likewise.
      	* config/i386/i386.c (ix86_option_override): Refer to ira instead
      	of reload for vzeroupper pass placement.
      	* <everywhere>: Remove TODO_ggc_collect from todo_flags_start
      	and todo_flags_finish of all passes.
      
      	* g++.dg/pr55604.C: Use -fdump-rtl-ira.
      
      From-SVN: r197671
      Richard Biener committed
  4. 13 Feb, 2013 1 commit
  5. 08 Feb, 2013 2 commits
    • ira.c (ira): Free broken dominator information. · 57548aa2
      2013-02-08  Richard Biener  <rguenther@suse.de>
      
      	* ira.c (ira): Free broken dominator information.
      
      From-SVN: r195882
      Richard Biener committed
    • cfgloop.c (verify_loop_structure): Properly handle a loop exiting to another loop header. · 661bc682
      2013-02-08  Richard Biener  <rguenther@suse.de>
      
      	* cfgloop.c (verify_loop_structure): Properly handle
      	a loop exiting to another loop header.
      	* ira-int.h (ira_loops): Remove.
      	* ira.c (ira_loops): Remove.
      	(ira): Use loop_optimizer_init and loop_optimizer_finalize.
      	(do_reload): Use loop_optimizer_finalize.
      	* ira-build.c (create_loop_tree_nodes): Use get_loops and
      	number_of_loops to access the loop tree.
      	(more_one_region_p): Likewise.
      	(finish_loop_tree_nodes): Likewise.
      	(rebuild_regno_allocno_maps): Likewise.
      	(mark_loops_for_removal): Likewise.
      	(mark_all_loops_for_removal): Likewise.
      	(remove_unnecessary_regions): Likewise.
      	(ira_build): Likewise.
      	* ira-emit.c (setup_entered_from_non_parent_p): Likewise.
      
      From-SVN: r195877
      Richard Biener committed
  6. 10 Jan, 2013 1 commit
  7. 21 Dec, 2012 1 commit
  8. 27 Nov, 2012 1 commit
    • rtl.h (debug_bb_n_slim, [...]): Remove prototypes. · cfbeaedf
      	* rtl.h (debug_bb_n_slim, debug_bb_slim, debug_insn_slim): Remove
      	prototypes.
      	(debug_rtl_slim): Rename to dump_rtl_slim.
      	(print_value_slim): Rename to dump_value_slim.
      	* ira.c (ira_update_equiv_info_by_shuffle_insn): Update
      	print_value_slim user.
      	* lra.c (lra_process_new_insns): Use dump_insn_slim to dump single
      	insns.  Use dump_rtl_slim for insn chains.
      	* lra-constraints.c (get_reload_reg): Update print_value_slim user.
      	(process_addr_reg): Likewise.
      	(equiv_address_substitution): Likewise.
      	(inherit_reload_reg): Likewise.  Use dump_insn_slim to dump single
      	insns.
      	(check_and_process_move): Likewise.
      	(lra_constraints): Likewise.
      	(split_reg): Likewise.
      	(update_ebb_live_info): Likewise.
      	(remove_inheritance_pseudos): Likewise.
      	* sched-vis.c: Don't include sched-int.h.
      	Remove #ifdef INSN_SCHEDULING tests.
      	(print_value_slim): Rename to dump_value_slim.  Simplify a few
      	cases using GET_RTX_NAME.
      	(print_pattern): Do not handle UNSPEC and UNSPECV here, explain why.
      	(print_insn): Reorganize code to be independent of INSN_SCHEDULING.
      	Always print CALL_INSN patterns.  Harmonize INSN_UID dumping template.
      	Handle NOTE_INSN_CALL_ARG_LOCATION.
      	(dump_rtl_slim): Copied from debug_rtl_slim.
      	(debug_rtl_slim): Wrapper around dump_rtl_slim to stderr.
      	* haifa-sched.c (schedule_insn): Update print_insn user.
      
      From-SVN: r193873
      Steven Bosscher committed
  9. 18 Nov, 2012 1 commit
    • This patch rewrites the old VEC macro-based interface into a new one based on… · 9771b263
      This patch rewrites the old VEC macro-based interface into a new one based on the template class 'vec'.
      
      This patch rewrites the old VEC macro-based interface into a new one
      based on the template class 'vec'.  The user-visible changes are
      described in http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec.
      
      I have tested the patch pretty extensively:
      
      - Regular bootstraps on x86_64, ppc, ia64, sparc and hppa.
      - Bootstraps with --enable-checking=release
      - Bootstraps with --enable-checking=gc,gcac
      - Basic builds on all targets (using contrib/config-list.mk).
      
      We no longer access the vectors via VEC_* macros.  The pattern is
      "VEC_operation (T, A, V, args)" becomes "V.operation (args)".
      
      The only thing I could not do is create proper ctors and dtors for the
      vec class.  Since these vectors are stored in unions, we
      have to keep them as PODs (C++03 does not allow non-PODs in unions).
      
      This means that creation and destruction must be explicit.  There is a
      new method vec<type, allocation, layout>::create() and another vec<type,
      allocation, layout>::destroy() to allocate the internal vector.
      
      For vectors that must be pointers, there is a family of free functions
      that implement the operations that need to tolerate NULL vectors.
      These functions all start with the prefix 'vec_safe_'.  See the wiki
      page for details.
      
      The gengtype change removes the special handling for VEC() that used
      to exist in gengtype. Additionally, it allows gengtype to recognize
      templates of more than one argument and introduces the concept of an
      undefined type (useful for template arguments that may or may not be
      types).
      
      When a TYPE_UNDEFINED is reached, gengtype will ignore it if it
      happens inside a type marked with GTY((user)).  Otherwise, it will
      emit an error.
      
      Finally, gengtype rejects root types marked GTY((user)) that are not
      first class pointers.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	VEC API overhaul (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
      
      	* vec.c (register_overhead): Convert it into
      	member function of vec_prefix.
      	(release_overhead): Likewise.
      	(calculate_allocation): Likewise.
      	(vec_heap_free): Remove.
      	(vec_gc_o_reserve_1): Remove.
      	(vec_heap_o_reserve_1): Remove.
      	(vec_stack_o_reserve_1): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(register_stack_vec): New.
      	(stack_vec_register_index): New.
      	(unregister_stack_vec): New.
      	(vec_assert_fail): Remove.
      	* vec.h: Conditionally include ggc.h.  Document conditional
      	hackery.
      	Update top-level documentation.
      	(ALONE_VEC_CHECK_INFO): Remove.
      	(VEC_CHECK_INFO): Remove.
      	(ALONE_VEC_CHECK_DECL): Remove.
      	(VEC_CHECK_DECL): Remove.
      	(ALONE_VEC_CHECK_PASS): Remove.
      	(VEC_CHECK_PASS): Remove.
      	(VEC_ASSERT): Remove.
      	(vec_prefix): Add friends va_gc, va_gc_atomic, va_heap and
      	va_stack.
      	Mark fields alloc_ and num_ as protected.
      	(struct vec_t): Remove.  Remove all function members.
      	(struct vl_embed): Declare.
      	(struct vl_ptr): Declare.
      	(free): Remove.
      	(reserve_exact): Remove.
      	(reserve): Remove.
      	(safe_splice): Remove.
      	(safe_push): Remove.
      	(safe_grow): Remove.
      	(safe_grow_cleared): Remove.
      	(safe_insert): Remove.
      	(DEF_VEC_I): Remove.
      	(DEF_VEC_ALLOC_I): Remove.
      	(DEF_VEC_P): Remove.
      	(DEF_VEC_ALLOC_P): Remove.
      	(DEF_VEC_O): Remove.
      	(DEF_VEC_ALLOC_O): Remove.
      	(DEF_VEC_ALLOC_P_STACK): Remove.
      	(DEF_VEC_ALLOC_O_STACK): Remove.
      	(DEF_VEC_ALLOC_I_STACK): Remove.
      	(DEF_VEC_A): Remove.
      	(DEF_VEC_ALLOC_A): Remove.
      	(vec_stack_p_reserve_exact_1): Remove.
      	(vec_stack_o_reserve): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(VEC_length): Remove.
      	(VEC_empty): Remove.
      	(VEC_address): Remove.
      	(vec_address): Remove.
      	(VEC_last): Remove.
      	(VEC_index): Remove.
      	(VEC_iterate): Remove.
      	(VEC_embedded_size): Remove.
      	(VEC_embedded_init): Remove.
      	(VEC_free): Remove.
      	(VEC_copy): Remove.
      	(VEC_space): Remove.
      	(VEC_reserve): Remove.
      	(VEC_reserve_exact): Remove.
      	(VEC_splice): Remove.
      	(VEC_safe_splice): Remove.
      	(VEC_quick_push): Remove.
      	(VEC_safe_push): Remove.
      	(VEC_pop): Remove.
      	(VEC_truncate): Remove.
      	(VEC_safe_grow): Remove.
      	(VEC_replace): Remove.
      	(VEC_quick_insert): Remove.
      	(VEC_safe_insert): Remove.
      	(VEC_ordered_remove): Remove.
      	(VEC_unordered_remove): Remove.
      	(VEC_block_remove): Remove.
      	(VEC_lower_bound): Remove.
      	(VEC_alloc): Remove.
      	(VEC_qsort): Remove.
      
      	(va_heap): Declare.
      	(va_heap::default_layout): New typedef to vl_ptr.
      	(va_heap::reserve): New.
      	(va_heap::release): New.
      	(va_gc): Declare.
      	(va_gc::default_layout): New typedef to vl_embed.
      	(va_gc::reserve): New.
      	(va_gc::release): New.
      	(va_gc_atomic): Declare.  Inherit from va_gc.
      	(va_stack): Declare.
      	(va_stack::default_layout): New typedef to vl_ptr.
      	(va_stack::alloc): New.
      	(va_stack::reserve): New.
      	(va_stack::release): New.
      	(register_stack_vec): Declare.
      	(stack_vec_register_index): Declare.
      	(unregister_stack_vec): Declare.
      
      	(vec<T, A = va_heap, L = typename A::default_layout>): Declare
      	empty vec template.
      	(vec<T, A, vl_embed>): Partial specialization for embedded
      	layout.
      	(vec<T, A, vl_embed>::allocated): New.
      	(vec<T, A, vl_embed>::length): New.
      	(vec<T, A, vl_embed>::is_empty): New.
      	(vec<T, A, vl_embed>::address): New.
      	(vec<T, A, vl_embed>::operator[]): New.
      	(vec<T, A, vl_embed>::last New.
      	(vec<T, A, vl_embed>::space): New.
      	(vec<T, A, vl_embed>::iterate): New.
      	(vec<T, A, vl_embed>::iterate): New.
      	(vec<T, A, vl_embed>::copy): New.
      	(vec<T, A, vl_embed>::splice): New.
      	(vec<T, A, vl_embed>::quick_push New.
      	(vec<T, A, vl_embed>::pop New.
      	(vec<T, A, vl_embed>::truncate): New.
      	(vec<T, A, vl_embed>::quick_insert): New.
      	(vec<T, A, vl_embed>::ordered_remove): New.
      	(vec<T, A, vl_embed>::unordered_remove): New.
      	(vec<T, A, vl_embed>::block_remove): New.
      	(vec<T, A, vl_embed>::qsort): New.
      	(vec<T, A, vl_embed>::lower_bound): New.
      	(vec<T, A, vl_embed>::embedded_size): New.
      	(vec<T, A, vl_embed>::embedded_init): New.
      	(vec<T, A, vl_embed>::quick_grow): New.
      	(vec<T, A, vl_embed>::quick_grow_cleared): New.
      	(vec_safe_space): New.
      	(vec_safe_length): New.
      	(vec_safe_address): New.
      	(vec_safe_is_empty): New.
      	(vec_safe_reserve): New.
      	(vec_safe_reserve_exact): New.
      	(vec_alloc): New.
      	(vec_free): New.
      	(vec_safe_grow): New.
      	(vec_safe_grow_cleared): New.
      	(vec_safe_iterate): New.
      	(vec_safe_push): New.
      	(vec_safe_insert): New.
      	(vec_safe_truncate): New.
      	(vec_safe_copy): New.
      	(vec_safe_splice): New.
      
      	(vec<T, A, vl_ptr>): New partial specialization for the space
      	efficient layout.
      	(vec<T, A, vl_ptr>::exists): New.
      	(vec<T, A, vl_ptr>::is_empty): New.
      	(vec<T, A, vl_ptr>::length): New.
      	(vec<T, A, vl_ptr>::address): New.
      	(vec<T, A, vl_ptr>::operator[]): New.
      	(vec<T, A, vl_ptr>::operator!=): New.
      	(vec<T, A, vl_ptr>::operator==): New.
      	(vec<T, A, vl_ptr>::last): New.
      	(vec<T, A, vl_ptr>::space): New.
      	(vec<T, A, vl_ptr>::iterate): New.
      	(vec<T, A, vl_ptr>::copy): New.
      	(vec<T, A, vl_ptr>::reserve): New.
      	(vec<T, A, vl_ptr>::reserve_exact): New.
      	(vec<T, A, vl_ptr>::splice): New.
      	(vec<T, A, vl_ptr>::safe_splice): New.
      	(vec<T, A, vl_ptr>::quick_push): New.
      	(vec<T, A, vl_ptr>::safe_push): New.
      	(vec<T, A, vl_ptr>::pop): New.
      	(vec<T, A, vl_ptr>::truncate): New.
      	(vec<T, A, vl_ptr>::safe_grow): New.
      	(vec<T, A, vl_ptr>::safe_grow_cleared): New.
      	(vec<T, A, vl_ptr>::quick_grow): New.
      	(vec<T, A, vl_ptr>::quick_grow_cleared): New.
      	(vec<T, A, vl_ptr>::quick_insert): New.
      	(vec<T, A, vl_ptr>::safe_insert): New.
      	(vec<T, A, vl_ptr>::ordered_remove): New.
      	(vec<T, A, vl_ptr>::unordered_remove): New.
      	(vec<T, A, vl_ptr>::block_remove): New.
      	(vec<T, A, vl_ptr>::qsort): New.
      	(vec<T, A, vl_ptr>::lower_bound): New.
      	(vec_stack_alloc): Define.
      	(FOR_EACH_VEC_SAFE_ELT): Define.
      	* vecir.h: Remove.  Update all users.
      	* vecprim.h: Remove.  Update all users.
      	Move uchar to coretypes.h.
      
      	* Makefile.in (VEC_H): Add $(GGC_H).
      	Remove vecir.h and vecprim.h dependencies everywhere.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	* gengtype-lex.l (VEC): Remove.
      	Add characters in the set [\!\>\.-].
      	* gengtype-parse.c (token_names): Remove "VEC".
      	(require_template_declaration): Remove handling of VEC_TOKEN.
      	(type): Likewise.
      	Call create_user_defined_type when parsing GTY((user)).
      	* gengtype-state.c (type_lineloc): handle TYPE_UNDEFINED.
      	(write_state_undefined_type): New.
      	(write_state_type): Call write_state_undefined_type for
      	TYPE_UNDEFINED.
      	(read_state_type): Call read_state_undefined_type for
      	TYPE_UNDEFINED.
      	* gengtype.c (dbgprint_count_type_at): Handle TYPE_UNDEFINED.
      	(create_user_defined_type): Make extern.
      	(type_for_name): Factor out of resolve_typedef.
      	(create_undefined_type): New
      	(resolve_typedef): Call it when we cannot find a previous
      	typedef and the type is not a template.
      	(find_structure): Accept TYPE_UNDEFINED.
      	(set_gc_used_type): Add argument ALLOWED_UNDEFINED_TYPES,
      	default to false.
      	Emit an error for TYPE_UNDEFINED unless LEVEL is GC_UNUSED or
      	ALLOWED_UNDEFINED_TYPES is set.
      	Set ALLOWED_UNDEFINED_TYPES to true for TYPE_USER_STRUCT.
      	(filter_type_name): Accept templates with more than one
      	argument.
      	(output_mangled_typename): Handle TYPE_UNDEFINED
      	(walk_type): Likewise.
      	(write_types_process_field): Likewise.
      	(write_func_for_structure): If CHAIN_NEXT is set, ORIG_S
      	should not be a user-defined type.
      	(write_types_local_user_process_field): Handle TYPE_ARRAY,
      	TYPE_NONE and TYPE_UNDEFINED.
      	(write_types_local_process_field): Likewise.
      	(contains_scalar_p): Return 0 for TYPE_USER_STRUCT.
      	(write_root): Reject user-defined types that are not pointers.
      	Handle TYPE_NONE, TYPE_UNDEFINED, TYPE_UNION, TYPE_LANG_STRUCT
      	and TYPE_PARAM_STRUCT.
      	(output_typename): Handle TYPE_NONE, TYPE_UNDEFINED, and
      	TYPE_ARRAY.
      	(dump_typekind): Handle TYPE_UNDEFINED.
      	* gengtype.h (enum typekind): Add TYPE_UNDEFINED.
      	(create_user_defined_type): Declare.
      	(enum gty_token): Remove VEC_TOKEN.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
      
      	* coretypes.h (uchar): Define.
      	* alias.c: Use new vec API in vec.h.
      	* asan.c: Likewise.
      	* attribs.c: Likewise.
      	* basic-block.h: Likewise.
      	* bb-reorder.c: Likewise.
      	* builtins.c: Likewise.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopanal.c: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphclones.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* combine.c: Likewise.
      	* compare-elim.c: Likewise.
      	* coverage.c: Likewise.
      	* cprop.c: Likewise.
      	* data-streamer.h: Likewise.
      	* dbxout.c: Likewise.
      	* dce.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* dominance.c: Likewise.
      	* domwalk.c: Likewise.
      	* domwalk.h: Likewise.
      	* dse.c: Likewise.
      	* dwarf2cfi.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* dwarf2out.h: Likewise.
      	* emit-rtl.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* expr.c: Likewise.
      	* expr.h: Likewise.
      	* final.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* function.h: Likewise.
      	* fwprop.c: Likewise.
      	* gcc.c: Likewise.
      	* gcse.c: Likewise.
      	* genattr.c: Likewise.
      	* genattrtab.c: Likewise.
      	* genautomata.c: Likewise.
      	* genextract.c: Likewise.
      	* genopinit.c: Likewise
      	* ggc-common.c: Likewise.
      	* ggc.h: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-ssa-strength-reduction.c: Likewise.
      	* gimple-streamer-in.c: Likewise.
      	* gimple.c: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* graph.c: Likewise.
      	* graphds.c: Likewise.
      	* graphds.h: Likewise.
      	* graphite-blocking.c: Likewise.
      	* graphite-clast-to-gimple.c: Likewise.
      	* graphite-dependences.c: Likewise.
      	* graphite-interchange.c: Likewise.
      	* graphite-optimize-isl.c: Likewise.
      	* graphite-poly.c: Likewise.
      	* graphite-poly.h: Likewise.
      	* graphite-scop-detection.c: Likewise.
      	* graphite-scop-detection.h: Likewise.
      	* graphite-sese-to-poly.c: Likewise.
      	* graphite.c: Likewise.
      	* godump.c: Likewise.
      	* haifa-sched.c: Likewise.
      	* hw-doloop.c: Likewise.
      	* hw-doloop.h: Likewise.
      	* ifcvt.c: Likewise.
      	* insn-addr.h: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-inline-analysis.c: Likewise.
      	* ipa-inline-transform.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-inline.h: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-prop.h: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-ref-inline.h: Likewise.
      	* ipa-ref.c: Likewise.
      	* ipa-ref.h: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-split.c: Likewise.
      	* ipa-utils.c: Likewise.
      	* ipa-utils.h: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-emit.c: Likewise.
      	* ira-int.h: Likewise.
      	* ira.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lra-lives.c: Likewise.
      	* lra.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* lto-streamer.h: Likewise.
      	* lto-symtab.c: Likewise.
      	* mcf.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omp-low.c: Likewise.
      	* opts-common.c: Likewise.
      	* opts-global.c: Likewise.
      	* opts.c: Likewise.
      	* opts.h: Likewise.
      	* passes.c: Likewise.
      	* predict.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* profile.h: Likewise.
      	* read-rtl.c: Likewise.
      	* ree.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regrename.c: Likewise.
      	* regrename.h: Likewise.
      	* reload.c: Likewise.
      	* reload.h: Likewise.
      	* reload1.c: Likewise.
      	* rtl.h: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-int.h: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched-ir.h: Likewise.
      	* sel-sched.c: Likewise.
      	* sese.c: Likewise.
      	* sese.h: Likewise.
      	* statistics.h: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* tlink.c: Likewise.
      	* toplev.c: Likewise.
      	* trans-mem.c: Likewise.
      	* tree-browser.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-chrec.h: Likewise.
      	* tree-complex.c: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-data-ref.h: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-diagnostic.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-emutls.c: Likewise.
      	* tree-flow.h: Likewise.
      	* tree-if-conv.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-inline.h: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-iterator.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-mudflap.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-sccvn.h: Likewise.
      	* tree-ssa-strlen.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-tail-merge.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa-uninit.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-streamer-in.c: Likewise.
      	* tree-streamer-out.c: Likewise.
      	* tree-streamer.c: Likewise.
      	* tree-streamer.h: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-vect-data-refs.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vect-loop.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-vect-slp.c: Likewise.
      	* tree-vect-stmts.c: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* tree-vectorizer.h: Likewise.
      	* tree-vrp.c: Likewise.
      	* tree.c: Likewise.
      	* tree.h: Likewise.
      	* value-prof.c: Likewise.
      	* value-prof.h: Likewise.
      	* var-tracking.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* vmsdbgout.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/c6x/c6x.c: Likewise.
      	* config/darwin.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/mep/mep.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/rs6000/rs6000-c.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/rx/rx.c: Likewise.
      	* config/spu/spu-c.c: Likewise.
      	* config/vms/vms.c: Likewise.
      	* config/vxworks.c: Likewise.
      	* config/epiphany/resolve-sw-modes.c: Likewise.
      
      From-SVN: r193595
      Diego Novillo committed
  10. 01 Nov, 2012 2 commits
    • This patch normalizes more bitmap function names. · d7c028c0
        sbitmap.h
      
          TEST_BIT -> bitmap_bit_p
          SET_BIT -> bitmap_set_bit
          SET_BIT_WITH_POPCOUNT -> bitmap_set_bit_with_popcount
          RESET_BIT -> bitmap_clear_bit
          RESET_BIT_WITH_POPCOUNT -> bitmap_clear_bit_with_popcount
      
        basic-block.h
      
          sbitmap_intersection_of_succs -> bitmap_intersection_of_succs
          sbitmap_intersection_of_preds -> bitmap_intersection_of_preds
          sbitmap_union_of_succs -> bitmap_union_of_succs
          sbitmap_union_of_preds -> bitmap_union_of_preds
      
      The sbitmap.h functions also needed their numeric paramter changed
      from unsigned int to int to match the bitmap functions.
      
      Callers updated to match.
      
      Tested on x86-64, config-list.mk testing.
      
      
      Index: gcc/ChangeLog
      
      2012-11-01  Lawrence Crowl  <crowl@google.com>
      
      	* sbitmap.h (TEST_BIT): Rename bitmap_bit_p, normalizing parameter
      	type. Update callers to match.
      	(SET_BIT): Rename bitmap_set_bit, normalizing parameter type. Update
      	callers to match.
      	(SET_BIT_WITH_POPCOUNT): Rename bitmap_set_bit_with_popcount,
      	normalizing parameter type. Update callers to match.
      	(RESET_BIT): Rename bitmap_clear_bit, normalizing parameter type.
      	Update callers to match.
      	(RESET_BIT_WITH_POPCOUNT): Rename bitmap_clear_bit_with_popcount,
      	normalizing parameter type. Update callers to match.
      	* basic-block.h (sbitmap_intersection_of_succs): Rename
      	bitmap_intersection_of_succs. Update callers to match.
      	* basic-block.h (sbitmap_intersection_of_preds): Rename
      	bitmap_intersection_of_preds. Update callers to match.
      	* basic-block.h (sbitmap_union_of_succs): Rename
      	bitmap_union_of_succs. Update callers to match.
      	* basic-block.h (sbitmap_union_of_preds): Rename
      	bitmap_union_of_preds. Update callers to match.
      
      From-SVN: r193066
      Lawrence Crowl committed
    • invoke.texi: Update -fopt-info documentation. · 2b4e6bf1
      2012-11-01  Sharad Singhai  <singhai@google.com>
      
          * doc/invoke.texi: Update -fopt-info documentation.
          * dumpfile.c: Move dump_flags here from passes.c.
          Rename opt_info_options to optinfo_verbosity_options.
          Add optgroup_options.
          (dump_files): Add field for optinfo_flags in the static initializer.
          (dump_register): Handle additional parameter for optgroup_flags.
          (opt_info_enable_passes): Renamed opt_info_enable_all. Handle
          optgroup_flags. Fix documentation.
          (opt_info_switch_p_1): Handle optgroup options.
          (opt_info_switch_p): Handle optgroup_flags. Warn on multiple files.
          * dumpfile.h (dump_register): Additional argument for optgroup_flags.
          All callers updated.
          (struct dump_file_info): Add field for optgroup_flags.
          Define OPTGROUP_* flags.
          * tree-pass.h (struct opt_pass): Add addtional field for optinfo_flags.
          All opt_pass static initializers updated.
          * opts-global.c (dump_remap_tree_vectorizer_verbose): Use 'all'
          instead of 'optall'.
          (handle_common_deferred_options): Fix typo in error message.
          * passes.c (register_one_dump_file): Add argument for optgroup_flags.
          Turn on OPTGROUP_IPA for IPA passes.
          Move dump_flags from here to dumpfile.c.
          * statistics.c (statistics_early_init): Use OPTGROUP_NONE in call to
          dump_register.
      
      testsuite/ChangeLog
      
          * testsuite/gcc.dg/plugin/selfassign.c: Add opgtroup_flags initializer.
          * testsuite/gcc.dg/plugin/one_time_plugin.c: Likewise.
          * testsuite/g++.dg/plugin/selfassign.c: Likewise.
          * testsuite/g++.dg/plugin/dumb_plugin.c: Likewise.
      
      From-SVN: r193061
      Sharad Singhai committed
  11. 30 Oct, 2012 1 commit
    • This patch implements the unification of the *bitmap interfaces as discussed. · f61e445a
      Essentially, we rename ebitmap and sbitmap functions to use the same names
      as the bitmap functions.  This rename works because we can now overload
      on the bitmap type.  Some macros now become inline functions to enable
      that overloading.
      
      The sbitmap non-bool returning bitwise operations have been merged with
      the bool versions.  Sometimes this merge involved modifying the non-bool
      version to compute the bool value, and sometimes modifying bool version to
      add additional work from the non-bool version.  The redundant routines have
      been removed.
      
      The allocation functions have not been renamed, because we often do not
      have an argument on which to overload.  The cardinality functions have not
      been renamed, because they have different parameters, and are thus not
      interchangable.  The iteration functions have not been renamed, because
      they are functionally different.
      
      Tested on x86_64, contrib/config-list.mk testing passed.
      
      
      Index: gcc/ChangeLog
      
      2012-10-29  Lawrence Crowl  <crowl@google.com>
      
      	* sbitmap.h (sbitmap_copy): Rename bitmap_copy.
      	(sbitmap_copy_n): Rename bitmap_copy_n.
      	(sbitmap_equal): Rename bitmap_equal_p.
      	(sbitmap_empty_p): Rename bitmap_empty_p.
      	(sbitmap_range_empty_p): Rename bitmap_range_empty_p.
      	(sbitmap_zero): Rename bitmap_clear.
      	(sbitmap_ones): Rename bitmap_ones.
      	(sbitmap_vector_zero): Rename bitmap_vector_clear.
      	(sbitmap_vector_ones): Rename bitmap_vector_ones.
      	(sbitmap_not): Rename bitmap_not.
      	(sbitmap_a_and_b_cg): Commented out.
      	(sbitmap_a_and_b): Rename bitmap_and.  Add bool return.
      	(sbitmap_difference): Rename bitmap_and_compl.
      	(sbitmap_a_or_b_cg): Commented out.
      	(sbitmap_a_or_b): Rename bitmap_xor.  Add bool return.
      	(sbitmap_a_xor_b_cg): Commented out.
      	(sbitmap_a_xor_b): Rename bitmap_xor.  Add bool return.
      	(sbitmap_a_and_b_or_c_cg): Rename bitmap_and_or.
      	(sbitmap_a_and_b_or_c): Commented out.
      	(sbitmap_a_or_b_and_c_cg): Rename bitmap_or_and.
      	(sbitmap_a_or_b_and_c): Commented out.
      	(sbitmap_union_of_diff_cg): Rename bitmap_ior_and_compl.
      	(sbitmap_union_of_diff): Commented out.
      	(dump_sbitmap): Rename dump_bitmap.
      	(dump_sbitmap_file): Rename dump_bitmap_file.
      	(debug_sbitmap): Rename debug_bitmap.
      	(dump_sbitmap_vector): Rename dump_bitmap_vector.
      	(sbitmap_first_set_bit): Rename bitmap_first_set_bit.
      	(sbitmap_last_set_bit): Rename bitmap_last_set_bit.
      	(sbitmap_a_subset_b_p): Rename bitmap_subset_p.
      	(sbitmap_any_common_bits): Rename bitmap_intersect_p.
      	(#define sbitmap_free): Reimplement as inline function.
      	(#define sbitmap_vector_free): Reimplement as inline function.
      	* bitmap.h (#define bitmap_zero): Remove as redundant.
      	(#define bitmap_empty_p): Reimplement as inline function.
      	(#define dump_bitmap): Reimplement as inline function.
      
      From-SVN: r192969
      Lawrence Crowl committed
  12. 28 Oct, 2012 1 commit
  13. 25 Oct, 2012 1 commit
  14. 23 Oct, 2012 1 commit
    • dbxout.c (dbxout_symbol_location): Pass new argument to alter_subreg. · 55a2c322
      2012-10-23  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* dbxout.c (dbxout_symbol_location): Pass new argument to
      	alter_subreg.
      	* dwarf2out.c: Include ira.h and lra.h.
      	(based_loc_descr, compute_frame_pointer_to_fb_displacement): Use
      	lra_eliminate_regs for LRA instead of eliminate_regs.
      	* expr.c (emit_move_insn_1): Pass an additional argument to
      	emit_move_via_integer.  Use emit_move_via_integer for LRA only if
      	the insn is recognized.
      	* emit-rtl.c (gen_rtx_REG): Add lra_in_progress.
      	(validate_subreg): Don't check offset for LRA and floating point
      	modes.
      	* final.c (final_scan_insn, cleanup_subreg_operands): Pass new
      	argument to alter_subreg.
      	(walk_alter_subreg, output_operand): Ditto.
      	(alter_subreg): Add new argument.
      	* gcse.c (calculate_bb_reg_pressure): Add parameter to
      	ira_setup_eliminable_regset call.
      	* ira.c: Include lra.h.
      	(ira_init_once, ira_init, ira_finish_once): Call lra_start_once,
      	lra_init, lra_finish_once in anyway.
      	(ira_setup_eliminable_regset): Add parameter.  Remove need_fp.
      	Call lra_init_elimination and mark HARD_FRAME_POINTER_REGNUM as
      	living forever if frame_pointer_needed.
      	(setup_reg_class_relations): Set up ira_reg_class_subset.
      	(ira_reg_equiv_invariant_p, ira_reg_equiv_const): Remove.
      	(find_reg_equiv_invariant_const): Ditto.
      	(setup_reg_renumber): Use ira_equiv_no_lvalue_p instead of
      	ira_reg_equiv_invariant_p.  Skip caps for LRA.
      	(setup_reg_equiv_init, ira_update_equiv_info_by_shuffle_insn): New
      	functions.
      	(ira_reg_equiv_len, ira_reg_equiv): New externals.
      	(ira_reg_equiv): New.
      	(ira_expand_reg_equiv, init_reg_equiv, finish_reg_equiv): New
      	functions.
      	(no_equiv, update_equiv_regs): Use ira_reg_equiv instead of
      	reg_equiv_init.
      	(setup_reg_equiv): New function.
      	(ira_use_lra_p): New global.
      	(ira): Set up lra_simple_p and ira_conflicts_p.  Set up and
      	restore flag_caller_saves and flag_ira_region.  Move
      	initialization of ira_obstack and ira_bitmap_obstack upper.  Call
      	init_reg_equiv, setup_reg_equiv, and setup_reg_equiv_init instead
      	of initialization of ira_reg_equiv_len, ira_reg_equiv_invariant_p,
      	and ira_reg_equiv_const.  Call ira_setup_eliminable_regset with a
      	new argument.  Don't flatten IRA IRA for LRA.  Don't reassign
      	conflict allocnos for LRA. Call finish_reg_equiv.
              (do_reload): Prepare code for LRA call.  Call LRA.
      	* ira.h (ira_use_lra_p): New external.
      	(struct target_ira): Add members x_ira_class_subset_p
      	x_ira_reg_class_subset, and x_ira_reg_classes_intersect_p.
      	(ira_class_subset_p, ira_reg_class_subset): New macros.
      	(ira_reg_classes_intersect_p): New macro.
      	(struct ira_reg_equiv): New.
      	(ira_setup_eliminable_regset): Add an argument.
      	(ira_expand_reg_equiv, ira_update_equiv_info_by_shuffle_insn): New
      	prototypes.
      	* ira-color.c (color_pass, move_spill_restore, coalesce_allocnos):
      	Use ira_equiv_no_lvalue_p.
      	(coalesce_spill_slots, ira_sort_regnos_for_alter_reg): Ditto.
      	* ira-emit.c (ira_create_new_reg): Call ira_expand_reg_equiv.
      	(generate_edge_moves, change_loop) Use ira_equiv_no_lvalue_p.
      	(emit_move_list): Simplify code.  Call
      	ira_update_equiv_info_by_shuffle_insn.  Use ira_reg_equiv instead
      	of ira_reg_equiv_invariant_p and ira_reg_equiv_const.  Change
      	assert.
      	* ira-int.h (struct target_ira_int): Remove x_ira_class_subset_p
      	and x_ira_reg_classes_intersect_p.
      	(ira_class_subset_p, ira_reg_classes_intersect_p): Remove.
      	(ira_reg_equiv_len, ira_reg_equiv_invariant_p): Ditto.
      	(ira_reg_equiv_const): Ditto.
      	(ira_equiv_no_lvalue_p): New function.
      	* jump.c (true_regnum): Always use hard_regno for subreg_get_info
      	when lra is in progress.
      	* haifa-sched.c (sched_init): Pass new argument to
      	ira_setup_eliminable_regset.
      	* loop-invariant.c (calculate_loop_reg_pressure): Pass new
      	argument to ira_setup_eliminable_regset.
      	* lra.h: New.
      	* lra-int.h: Ditto.
      	* lra.c: Ditto.
      	* lra-assigns.c: Ditto.
      	* lra-constraints.c: Ditto.
      	* lra-coalesce.c: Ditto.
      	* lra-eliminations.c: Ditto.
      	* lra-lives.c: Ditto.
      	* lra-spills.c: Ditto.
      	* Makefile.in (LRA_INT_H): New.
      	(OBJS): Add lra.o, lra-assigns.o, lra-coalesce.o,
      	lra-constraints.o, lra-eliminations.o, lra-lives.o, and
      	lra-spills.o.
      	(dwarf2out.o): Add dependence on ira.h and lra.h.
      	(ira.o): Add dependence on lra.h.
      	(lra.o, lra-assigns.o, lra-coalesce.o, lra-constraints.o): New
      	entries.
      	(lra-eliminations.o, lra-lives.o, lra-spills.o): Ditto.
      	* output.h (alter_subreg): Add new argument.
      	* rtlanal.c (simplify_subreg_regno): Permit mode changes for LRA.
      	Permit ARG_POINTER_REGNUM and STACK_POINTER_REGNUM for LRA.
      	* recog.c (general_operand, register_operand): Accept paradoxical
      	FLOAT_MODE subregs for LRA.
      	(scratch_operand): Accept pseudos for LRA.
      	* rtl.h (lra_in_progress): New external.
      	(debug_bb_n_slim, debug_bb_slim, print_value_slim): New
      	prototypes.
      	(debug_rtl_slim, debug_insn_slim): Ditto.
      	* sdbout.c (sdbout_symbol): Pass new argument to alter_subreg.
      	* sched-vis.c (print_value_slim): New.
      	* target.def (lra_p): New hook.
      	(register_priority): Ditto.
      	(different_addr_displacement_p): Ditto.
      	(spill_class): Ditto.
      	* target-globals.h (this_target_lra_int): New external.
      	(target_globals): New member lra_int.
      	(restore_target_globals): Restore this_target_lra_int.
      	* target-globals.c: Include lra-int.h.
      	(default_target_globals): Add &default_target_lra_int.
      	* targhooks.c (default_lra_p): New function.
      	(default_register_priority): Ditto.
      	(default_different_addr_displacement_p): Ditto.
      	* targhooks.h (default_lra_p): Declare.
      	(default_register_priority): Ditto.
      	(default_different_addr_displacement_p): Ditto.
      	* timevar.def (TV_LRA, TV_LRA_ELIMINATE, TV_LRA_INHERITANCE): New.
      	(TV_LRA_CREATE_LIVE_RANGES, TV_LRA_ASSIGN, TV_LRA_COALESCE): New.
      	* config/arm/arm.c (load_multiple_sequence): Pass new argument toOB
      	alter_subreg.
      	(store_multiple_sequence): Ditto.
      	* config/i386/i386.h (enum ix86_tune_indices): Add
      	X86_TUNE_GENERAL_REGS_SSE_SPILL.
      	(TARGET_GENERAL_REGS_SSE_SPILL): New macro.
      	* config/i386/i386.c (initial_ix86_tune_features): Set up
      	X86_TUNE_GENERAL_REGS_SSE_SPILL for m_COREI7 and m_CORE2I7.
      	(ix86_lra_p, ix86_register_priority): New functions.
      	(ix86_secondary_reload): Add NON_Q_REGS, SIREG, DIREG.
      	(inline_secondary_memory_needed): Change assert.
      	(ix86_spill_class): New function.
      	(TARGET_LRA_P, TARGET_REGISTER_BANK, TARGET_SPILL_CLASS): New
      	macros.
      	* config/m68k/m68k.c (emit_move_sequence): Pass new argument to
      	alter_subreg.
      	* config/m32r/m32r.c (gen_split_move_double): Ditto.
      	* config/pa/pa.c (pa_emit_move_sequence): Ditto.
      	* config/sh/sh.md: Ditto.
      	* config/v850/v850.c (v850_reorg): Ditto.
      	* config/xtensa/xtensa.c (fixup_subreg_mem): Ditto.
      	* doc/md.texi: Add new interpretation of hint * for LRA.
      	* doc/passes.texi: Describe LRA pass.
      	* doc/tm.texi.in: Add TARGET_LRA_P, TARGET_REGISTER_PRIORITY,
      	TARGET_DIFFERENT_ADDR_DISPLACEMENT_P, and TARGET_SPILL_CLASS.
      	* doc/tm.texi: Update.
      
      From-SVN: r192719
      Vladimir Makarov committed
  15. 19 Oct, 2012 1 commit
    • common.opt (flag_ira_hoist_pressure): New. · b11f0116
      	gcc/ChangeLog
      	* common.opt (flag_ira_hoist_pressure): New.
      	* doc/invoke.texi (-fira-hoist-pressure): Describe.
      	* ira-costs.c (ira_set_pseudo_classes): New parameter.
      	* ira.h: Update copyright dates.
      	(ira_set_pseudo_classes): Update prototype.
      	* haifa-sched.c (sched_init): Update call.
      	* ira.c (ira): Update call.
      	* regmove.c: Update copyright dates.
      	(regmove_optimize): Update call.
      	* loop-invariant.c: Update copyright dates.
      	(move_loop_invariants): Update call.
      	* gcse.c: (struct bb_data): New structure.
      	(BB_DATA): New macro.
      	(curr_bb, curr_reg_pressure): New static variables.
      	(should_hoist_expr_to_dom): Rename from hoist_expr_reaches_here_p.
      	Change parameter expr_index to expr.
      	New parameters pressure_class, nregs and hoisted_bbs.
      	Use reg pressure to determine the distance expr can be hoisted.
      	(hoist_code): Use reg pressure to direct the hoist process.
      	(get_regno_pressure_class, get_pressure_class_and_nregs)
      	(change_pressure, calculate_bb_reg_pressure): New.
      	(one_code_hoisting_pass): Calculate register pressure. Allocate
      	and free data.
      
      	gcc/testsuite/ChangeLog
      	* testsuite/gcc.dg/hoist-register-pressure.c: New test.
      
      From-SVN: r192604
      Bin Cheng committed
  16. 14 Oct, 2012 1 commit
    • re PR rtl-optimization/38711 (ira should not be using df-lr except at -O1.) · bf744527
      	PR rtl-optimization/38711
      	* df.h (df_get_live_out, df_get_live_in): Make static inline functions.
      	* df-problems.c (df_get_live_out, df_get_live_in): Moved to df.h.
      	* ira-lives.c (process_bb_node_lives): Use df_get_live_out instead of
      	DF_LR_OUT.
      	* ira-build.c (create_bb_allocnos): Likewise.
      	(create_loop_allocnos): Likewise, and use df_get_live_in instead of
      	DF_LR_IN.
      	* ira-emit.c (generate_edge_moves): Likewise.
      	(add_ranges_and_copies): Likewise.
      	* ira-color.c (ira_loop_edge_freq): Use df_get_live_out instead of
      	DF_LR_OUT, and df_get_live_in instead of DF_LR_IN.
      	* ira.c (mark_elimination): Update DF_LR and DF_LIVE.
      	(build_insn_chain): Use df_get_live_out instead of DF_LR_OUT.
      	(do_reload): Remove the DF_LIVE problem for -O1.
      
      From-SVN: r192440
      Steven Bosscher committed
  17. 13 Oct, 2012 1 commit
  18. 02 Oct, 2012 2 commits
    • ira-int.h (target_ira_int): Add x_ira_useful_class_mode_regs. · a2c19e93
      gcc/
      	* ira-int.h (target_ira_int): Add x_ira_useful_class_mode_regs.
      	(ira_useful_class_mode_regs): New macro.
      	* ira.c (clarify_prohibited_class_mode_regs): Set up
      	ira_useful_class_mode_regs.
      	* ira-color.c (setup_profitable_hard_regs): Use it to initialise
      	profitable_hard_regs.
      
      From-SVN: r191996
      Richard Sandiford committed
    • ira.h (target_ira): Add x_ira_class_singleton. · c9d74da6
      gcc/
      	* ira.h (target_ira): Add x_ira_class_singleton.
      	(ira_class_singleton): New macro.
      	* ira.c (setup_prohibited_class_mode_regs): Set up ira_class_singleton.
      	* ira-build.c (update_conflict_hard_reg_costs): Use
      	ira_class_singleton to check for classes with a single
      	allocatable register.
      	* ira-lives.c (ira_implicitly_set_insn_hard_regs): Likewise.
      	(single_reg_class): Likewise.  When more than one class is specified,
      	check whether they have the same singleton register.
      	(process_single_reg_class_operands): Require single_reg_class
      	to return NO_REGS or a class with a single allocatable register.
      	Obtain that register from ira_class_singleton.
      
      From-SVN: r191995
      Richard Sandiford committed
  19. 10 Sep, 2012 1 commit
  20. 23 Aug, 2012 1 commit
    • alias.c (rtx_equal_for_memref_p): Convert constant cases. · d8116890
      2012-08-23  Kenneth Zadeck <zadeck@naturalbridge.com>
      
      	* alias.c (rtx_equal_for_memref_p): Convert constant cases.
      	* combine.c (find_single_use_1, mark_used_regs_combine): Convert
      	to CASE_CONST_ANY.
       	* cse.c (exp_equiv_p, canon_reg, fold_rtx, cse_process_notes_1,
      	count_reg_usage): Convert constant cases.
      	* cselib.c (cselib_expand_value_rtx_1): Convert to
      	CASE_CONST_ANY.
      	(cselib_subst_to_values): Convert constant cases.
      	* df-scan.c (df_uses_record): Ditto.
      	* dse.c (const_or_frame_p): Convert case statements to explicit
      	if-then-else using mode classes.
      	* emit-rtl.c (verify_rtx_sharing, copy_insn_1): Convert constant cases.
      	* explow.c (convert_memory_address_addr_space): Ditto.
      	* gcse.c (want_to_gcse_p, oprs_unchanged_p, compute_transp): Ditto.
      	* genattrtab.c (attr_copy_rtx, clear_struct_flag): Ditto.
      	* ira.c (equiv_init_varies_p, contains_replace_regs,
      	memref_referenced_p, rtx_moveable_p): Ditto.
      	* jump.c (mark_jump_label_1): Remove constant cases.
      	(rtx_renumbered_equal_p): Convert to CASE_CONST_UNIQUE.
      	* loop-invariant.c (check_maybe_invariant, hash_invariant_expr_1,
      	invariant_expr_equal_p): Convert to CASE_CONST_ANY.
      	* postreload-gcse.c (oprs_unchanged_p): Convert constant cases.
      	* reginfo.c (reg_scan_mark_refs): Ditto.
      	* regrename.c (scan_rtx): Ditto.
      	* reload1.c (eliminate_regs_1, elimination_effects,
      	scan_paradoxical_subregs): Ditto.
      	* reload.c (operands_match_p, subst_reg_equivs):  Ditto.
      	* resource.c (mark_referenced_resources, mark_set_resources): Ditto.
      	* rtlanal.c (rtx_unstable_p, rtx_varies_p, count_occurrences)
      	(reg_mentioned_p, modified_between_p, modified_in_p)
      	(volatile_insn_p, volatile_refs_p, side_effects_p, may_trap_p_1,
      	inequality_comparisons_p, computed_jump_p_1): Ditto.
      	* rtl.c (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Ditto.
      	* sched-deps.c (sched_analyze_2): Ditto.
      	* valtrack.c (cleanup_auto_inc_dec): Ditto.
      	* rtl.h: (CASE_CONST_SCALAR_INT, CASE_CONST_UNIQUE, 
      	CASE_CONST_ANY): New macros.
      
      From-SVN: r190627
      Kenneth Zadeck committed
  21. 14 Aug, 2012 1 commit
  22. 13 Aug, 2012 1 commit
    • basic-block.h (struct basic_block): Remove loop_depth member, move flags and… · 391886c8
      basic-block.h (struct basic_block): Remove loop_depth member, move flags and index members next to each other.
      
      2012-08-13  Richard Guenther  <rguenther@suse.de>
      
      	* basic-block.h (struct basic_block): Remove loop_depth
      	member, move flags and index members next to each other.
      	* cfgloop.h (bb_loop_depth): New inline function.
      	* cfghooks.c (split_block): Do not set loop_depth.
      	(duplicate_block): Likewise.
      	* cfgloop.c (flow_loop_nodes_find): Likewise.
      	(flow_loops_find): Likewise.
      	(add_bb_to_loop): Likewise.
      	(remove_bb_from_loops): Likewise.
      	* cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
      	* gimple-streamer-in.c (input_bb): Do not stream loop_depth.
      	* gimple-streamer-out.c (output_bb): Likewise.
      	* bt-load.c: Include cfgloop.h.
      	(migrate_btr_defs): Use bb_loop_depth.
      	* cfg.c (dump_bb_info): Likewise.
      	* final.c (compute_alignments): Likewise.
      	* ira.c (update_equiv_regs): Likewise.
      	* tree-ssa-copy.c (init_copy_prop): Likewise.
      	* tree-ssa-dom.c (loop_depth_of_name): Likewise.
      	* tree-ssa-forwprop.c: Include cfgloop.h.
      	(forward_propagate_addr_expr): Use bb_loop_depth.
      	* tree-ssa-pre.c (insert_into_preds_of_block): Likewise.
      	* tree-ssa-sink.c (select_best_block): Likewise.
      	* ipa-inline-analysis.c: Include cfgloop.h.
      	(estimate_function_body_sizes): Use bb_loop_depth.
      	* Makefile.in (tree-ssa-forwprop.o): Depend on $(CFGLOOP_H).
      	(ipa-inline-analysis.o): Likewise.
      	(bt-load.o): Likewise.
      
      	* gcc.dg/tree-prof/update-loopch.c: Adjust.
      
      From-SVN: r190346
      Richard Guenther committed
  23. 08 Aug, 2012 1 commit
  24. 16 Jul, 2012 1 commit
    • system.h (dump_file): Do not define. · 7ee2468b
      gcc/
      	* system.h (dump_file): Do not define.
      	* tree-pass.h: Include dumpfile.h, which is a new file containing...
      	(enum tree_dump_index, TDF_*, get_dump_file_name, dump_enabled_p,
      	dump_initialized_p, dump_begin, dump_end, dump_node, dump_switch_p,
      	dump_flag_name, dump_file, dump_flags, dump_file_name,
      	get_dump_file_info, struct dump_file_info): all of this, moved to...
      	* dumpfile.h: Here, new file.
      	* tree-dump.h: Include dumpfile.h, but not tree-pass.h.
      	(dump_stmt): Remove prototype for C++ specific function.
      	(dump_enumerated_decls): Move prototype from here...
      	* tree-flow.h (dump_enumerated_decls): ... to here.
      	(get_ref_base_and_extent) Move prototype from here ...
      	* tree.h (get_ref_base_and_extent) ... to here.
      	* tree-ssa-live.c: Do not inclde tree-pretty-print.h, because
      	gimple-pretty-print.h is enough.  Do not include tree-dump.h,
      	include timevar.h and dumpfile.h instead.
      	(struct numbered_tree_d, compare_decls_by_uid,
      	dump_enumerated_decls_push, dump_enumerated_decls): Move from here ...
      	* tree-dfa.c:(struct numbered_tree_d, compare_decls_by_uid,
      	dump_enumerated_decls_push, dump_enumerated_decls):... to here.
      	Do not include timevar.h.
      	* tree.c: Do not include timevar.h.
      	* tree-cfg.c: Do not include langhooks.h, tree-pretty-print.h, and
      	timevar.h.
      	(dump_cfg_stats): Use current_function_name.
      	(gimple_cfg2vcg): Likewise.
      	(dump_function_to_file): Likewise.
      	* df-scan.c: Do not include tree-pass.h and timevar.h.
      	Include dumpfile.h.
      	(df_entry_block_bitmap_verify, df_exit_block_bitmap_verify): Do not
      	use print_current_pass.
      	* df-problems.c: Include dumpfile.h.
      	Always define REG_DEAD_DEBUGGING, avoid #ifdef code, because it
      	leads to errors in the code not selected.
      	(df_note_compute): Do not print_rtl_with_bb here.  Fix compilation
      	bug if REG_DEAD_DEBUGGING is not 0, get_insns is not available here.
      	* lcm.c: Include dumpfile.h.
      	Remove obsolete include of insn-attr.h.
      	* dojump.c (do_compare_rtx_and_jump): Remove failure printing for
      	missing probability notes.
      	* stmt.c: Include dumpfile.h.
      	(emit_case_decision_tree): Re-enable printing expand details only
      	if TDF_DETAILS.
      	* alias.c, auto-inc-dec.c, bb-reorder.c, caller-save.c, cfg.c, 
      	cfgcleanup.c, cfgexpand.c, cfgloop.c, cfgloopmanip.c, cgraph.c, 
      	cgraphclones.c, cgraphunit.c, combine.c, combine-stack-adj.c, 
      	coverage.c, cprop.c, cse.c, cselib.c, dbgcnt.c, dce.c, df-core.c, 
      	dse.c, dwarf2out.c, emit-rtl.c, except.c, expr.c, final.c, 
      	function.c, fwprop.c, gcse.c, gimple-fold.c, 
      	gimple-pretty-print.c, gimple-ssa-strength-reduction.c, 
      	gimplify.c, graphite-blocking.c, graphite-clast-to-gimple.c, 
      	graphite-dependences.c, graphite-interchange.c, 
      	graphite-optimize-isl.c, graphite-poly.c, 
      	graphite-sese-to-poly.c, haifa-sched.c, hw-doloop.c, ifcvt.c, 
      	ipa.c, ipa-cp.c, ipa-inline-analysis.c, ipa-inline.c, 
      	ipa-inline-transform.c, ipa-prop.c, ipa-pure-const.c, 
      	ipa-reference.c, ipa-split.c, ipa-utils.c, ira.c, ira-emit.c, 
      	jump.c, loop-doloop.c, loop-init.c, loop-invariant.c, loop-iv.c, 
      	loop-unroll.c, loop-unswitch.c, lower-subreg.c, 
      	lto-section-out.c, lto-streamer-in.c, matrix-reorg.c, mcf.c, 
      	mode-switching.c, modulo-sched.c, omega.c, omp-low.c, passes.c, 
      	plugin.c, postreload.c, postreload-gcse.c, predict.c, print-rtl.c, 
      	print-tree.c, profile.c, recog.c, ree.c, regcprop.c, reginfo.c, 
      	regmove.c, regrename.c, reg-stack.c, reload1.c, reorg.c, 
      	sched-rgn.c, sched-vis.c, sel-sched.c, sel-sched-ir.c, 
      	store-motion.c, tracer.c, trans-mem.c, tree-affine.c, 
      	tree-call-cdce.c, tree-cfgcleanup.c, tree-chrec.c, 
      	tree-data-ref.c, tree-diagnostic.c, tree-dump.c,
      	tree-eh.c, tree-flow-inline.h, tree-if-conv.c, tree-into-ssa.c, 
      	tree-mudflap.c, tree-nrv.c, tree-object-size.c, 
      	tree-optimize.c, tree-outof-ssa.c, tree-predcom.c, 
      	tree-pretty-print.c, tree-profile.c, tree-scalar-evolution.c, 
      	tree-sra.c, tree-ssa-address.c, tree-ssa-alias.c, tree-ssa.c, 
      	tree-ssa-ccp.c, tree-ssa-coalesce.c, tree-ssa-copy.c, 
      	tree-ssa-copyrename.c,, tree-ssa-dce.c, tree-ssa-dom.c, 
      	tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-ifcombine.c, 
      	tree-ssa-loop.c, tree-ssa-loop-ch.c, tree-ssa-loop-im.c, 
      	tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c, 
      	tree-ssa-loop-manip.c, tree-ssa-loop-niter.c, 
      	tree-ssa-loop-prefetch.c, tree-ssa-loop-unswitch.c, 
      	tree-ssa-math-opts.c, tree-ssa-operands.c, tree-ssa-phiopt.c, 
      	tree-ssa-phiprop.c, tree-ssa-pre.c, tree-ssa-propagate.c, 
      	tree-ssa-reassoc.c, tree-ssa-sccvn.c, tree-ssa-sink.c, 
      	tree-ssa-structalias.c, tree-ssa-tail-merge.c, tree-ssa-ter.c, 
      	tree-ssa-threadedge.c, tree-ssa-threadupdate.c, 
      	tree-ssa-uncprop.c, tree-ssa-uninit.c, 
      	tree-switch-conversion.c, tree-tailcall.c, 
      	tree-vect-data-refs.c, tree-vect-loop.c, 
      	tree-vect-loop-manip.c, tree-vectorizer.c, 
      	tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c, 
      	tree-vrp.c, value-prof.c, var-tracking.c, web.c: Include tree-pass.h
      	only if needed.  If tree-pass.h is included, do not include timevar.h
      	and dumpfile.h.  If tree-pass.h is not included but dump_file, or
      	dump_flags, or the TDF_* flags are used, include dumpfile.h.
      	If gimple-pretty-print.h is included, don't include tree-pretty-print.h.
      	Remove assorted unnecessary includes.
      
      	* config/mn10300/mn10300.c, config/c6x/c6x.c, config/ia64/ia64.c,
      	config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
      	config/spu/spu.c, config/mep/mep.c, config/i386/i386.c:
      	Include dumpfile.h.
      	* config/rl78/rl78.c: Include dumpfile.h instead of tree-pass.h.
      	* arm/t-arm, avr/t-avr, i386/t-i386, ia64/t-ia64, mep/t-mep,
      	spu/t-spu-elf: Fix dependencies.
      
      c-family/
      	* c-gimplify.c: Include dumpfile.h instead of tree-dump.h.
      	* c-ada-spec.c: Likewise.
      	* c-dump.c (dump_stmt): Move to cp/dump.c, the only user.
      
      c/
      	* c-decl.c: Include dumpfile.h instead of tree-dump.h.
      	* Make-lang.in: Fix dependencies.
      
      cp/
      	* dump.c (dump_stmt): Moved here from c-dump.c.
      	* optimize.c: Include dumpfile.h instead of tree-dump.h.
      	* class.c: Likewise.
      	* decl2.c: Likewise.
      	* Make-lang.in: Fix dependencies.
      
      fortran/
      	* f95-lang.c: Include dumpfile.h instead of tree-dump.h.
      	* Make-lang.in: Fix dependencies.
      
      java/
      	* java-gimplify.c Include dumpfile.h instead of tree-dump.h
      	* Make-lang.in: Fix dependencies.
      
      lto/
      	* lto.c: Do not include timevar.h.
      	* Make-lang.in: Fix dependencies.
      
      ada/
      	* gcc-interface/utils.c: Include timevar.h.
      	* Make-lang.in: Fix dependencies.
      
      From-SVN: r189519
      Steven Bosscher committed
  25. 24 Jun, 2012 1 commit
    • output.h: (current_function_is_leaf... · 416ff32e
      	* output.h: (current_function_is_leaf,
      	current_function_sp_is_unchanging,
      	current_function_uses_only_leaf_regs): Remove.
      	* function.c (current_function_is_leaf,
      	current_function_sp_is_unchanging,
      	current_function_uses_only_leaf_regs): Remove.
      	(rest_of_handle_check_leaf_regs): Set crtl->uses_only_leaf_regs
      	instead of current_function_uses_only_leaf_regs.
      	* function.h (struct rtl_data): New fields sp_is_unchanging,
      	is_leaf, uses_only_leaf_regs.
      	* resource.c (init_resource_info): Replace current_function_is_leaf,
      	current_function_sp_is_unchanging, and
      	current_function_uses_only_leaf_regs with new crtl fields.
      	* sdbout.c (sdbout_symbol): Likewise.
      	* df-core.c (rest_of_handle_df_initialize): Likewise.
      	* ira.c (ira): Likewise.
      	* final.c (final_start_function): Likewise.
      	* reorg.c (fill_simple_delay_slots): Likewise.
      	* regrename.c (check_new_reg_p): Likewise.
      	* stack-ptr-mod.c (notice_stack_pointer_modification_1): Likewise.
      	(notice_stack_pointer_modification): Likewise.
      	* dbxout.c (dbxout_symbol): Likewise.
      	(dbxout_parms): Likewise.
      	* sel-sched.c (init_regs_for_mode): Likewise.
      	* dwarf2out.c (dbx_reg_number): Likewise.
      	(multiple_reg_loc_descriptor): Likewise.
      	* config/i386/i386.c (ix86_frame_pointer_required): Likewise.
      	(gen_pop): Likewise.
      	(ix86_select_alt_pic_regnum): Likewise.
      	(ix86_compute_frame_layout): Likewise.
      	(ix86_finalize_stack_realign_flags): Likewise.
      	(ix86_expand_epilogue): Likewise.
      	* config/rs6000/rs6000.c (rs6000_stack_info): Likewise.
      	* config/h8300/h8300.c (byte_reg): Likewise.
      	* config/c6x/c6x.c (must_reload_pic_reg_p): Likewise.
      	(c6x_save_reg): Likewise.
      	(c6x_compute_frame_layout): Likewise.
      	* config/pa/pa.c (pa_compute_frame_size): Likewise.
      	(pa_output_function_prologue): Likewise.
      	* config/stormy16/stormy16.c (struct xstormy16_stack_layout): Likewise.
      	* config/sparc/sparc.md (attr "leaf_function"): Likewise.
      	* config/sparc/sparc.c (sparc_initial_elimination_offset): Likewise.
      	(sparc_expand_prologue): Likewise.
      	(sparc_flat_expand_prologue): Likewise.
      	(sparc_asm_function_prologue): Likewise.
      	(sparc_output_mi_thunk): Likewise.
      	(sparc_frame_pointer_required): Likewise.
      	* config/epiphany/epiphany.c (epiphany_compute_function_type): Likewise.
      	(epiphany_compute_frame_size): Likewise.
      	* config/lm32/lm32.c (lm32_compute_frame_size): Likewise.
      	* config/cris/cris.c (cris_md_asm_clobbers): Likewise.
      	(cris_frame_pointer_required): Likewise.
      	* config/tilepro/tilepro.c (emit_sp_adjust): Likewise.
      	(tilepro_current_function_is_leaf): Likewise.
      	* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Likewise.
      	* config/pdp11/pdp11.c (pdp11_expand_epilogue): Likewise.
      	* config/ia64/ia64.c (find_gr_spill): Likewise.
      	(ia64_compute_frame_size): Likewise.
      	(ia64_can_eliminate): Likewise.
      	(ia64_initial_elimination_offset): Likewise.
      	* config/m68k/m68k.c (m68k_save_reg): Likewise.
      	(m68k_expand_epilogue): Likewise.
      	* config/rx/rx.c (rx_get_stack_layout): Likewise.
      	* config/tilegx/tilegx.c (tilegx_current_function_is_leaf): Likewise.
      	* config/picochip/picochip.c (picochip_can_eliminate_link_sp_save):
      	Likewise.
      	(picochip_output_frame_debug): Likewise.
      	* config/sh/sh.c (sh_media_register_for_return): Likewise.
      	(sh_allocate_initial_value): Likewise.
      	(sh_output_mi_thunk): Likewise.
      	* config/microblaze/microblaze.c (microblaze_must_save_register): Likewise.
      	(compute_frame_size): Likewise.
      	(microblaze_initial_elimination_offset): Likewise.
      	(microblaze_expand_prologue): Likewise.
      	(microblaze_expand_epilogue): Likewise.
      	* config/frv/frv.c (frv_expand_epilogue): Likewise.
      	(frv_frame_pointer_required): Likewise.
      	* config/spu/spu.c (get_pic_reg): Likewise.
      	(direct_return): Likewise.
      	(spu_expand_prologue): Likewise.
      	(spu_expand_epilogue): Likewise.
      	(spu_initial_elimination_offset): Likewise.
      	* config/mips/mips.c (mips_global_pointer): Likewise.
      	(mips_cfun_might_clobber_call_saved_reg_p): Likewise.
      	(mips_compute_frame_info): Likewise.
      	* config/mep/mep.c (mep_interrupt_saved_reg): Likewise.
      	(mep_reload_pointer): Likewise.
      	* config/rl78/rl78.c (need_to_save): Likewise.
      	* config/cr16/cr16.c (cr16_compute_save_regs): Likewise.
      	* config/score/score.c (score_compute_frame_size): Likewise.
      	(score_function_prologue): Likewise.
      	* config/bfin/bfin.c (must_save_p): Likewise.
      	(expand_prologue_reg_save): Likewise.
      	(expand_epilogue_reg_restore): Likewise.
      	(bfin_frame_pointer_required): Likewise.
      	(n_regs_saved_by_prologue): Likewise.
      	(add_to_reg): Likewise.
      	(expand_interrupt_handler_prologue): Likewise.
      	(expand_interrupt_handler_epilogue): Likewise.
      	(bfin_expand_prologue): Likewise.
      	* config/avr/avr.c (avr_regs_to_save): Likewise.
      	(avr_prologue_setup_frame): Likewise.
      	(expand_epilogue): Likewise.
      	* config/s390/s390.c (s390_regs_ever_clobbered): Likewise.
      	(s390_register_info): Likewise.
      	(s390_frame_info): Likewise.
      	(s390_init_frame_layout): Likewise.
      	(s390_emit_prologue): Likewise.
      
      From-SVN: r188918
      Steven Bosscher committed
  26. 04 Jun, 2012 1 commit
    • ira-int.h (struct target_ira_int): Add member x_ira_uniform_class_p. · 165f639c
      2012-06-04  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-int.h (struct target_ira_int): Add member
      	x_ira_uniform_class_p.
      	(ira_uniform_class_p): New macro.
      
      	* ira.c (setup_uniform_class_p): New function.
      	(setup_allocno_and_important_classes): Call the function.
      	(print_unform_and_important_classes): New function.
      	(print_classes): Rename to print_translated_classes.
      	(ira_debug_allocno_classes): Add call of
      	print_unform_and_important_classes.
      
      	* ira-costs.c (setup_regno_cost_classes_by_aclass): Use uniform
      	classes instead of pressure classes.
      
      From-SVN: r188199
      Vladimir Makarov committed
  27. 31 May, 2012 6 commits
    • ira-int.h (target_ira_int): Rename x_move_cost to x_ira_register_move_cost... · 7cc61ee4
      gcc/
      	* ira-int.h (target_ira_int): Rename x_move_cost to
      	x_ira_register_move_cost, x_may_move_in_cost to
      	x_ira_may_move_in_cost and x_may_move_out_cost to
      	x_ira_may_move_out_cost.  Delete the old fields with
      	those names and also x_ira_max_register_move_cost,
      	x_ira_max_may_move_in_cost and x_ira_max_may_move_out_cost.
      	(move_cost, may_move_in_cost, may_move_out_cost)
      	(ira_max_register_move_cost, ira_max_may_move_in_cost)
      	(ira_max_may_move_out_cost): Delete.
      	* ira.c (init_move_cost): Rename to...
      	(ira_init_register_move_cost): ...this, deleting the old
      	function with that name.  Apply above variable renamings.
      	Retain asserts for null fields.
      	(ira_init_once): Don't initialize register move costs here.
      	(free_register_move_costs): Apply above variable renamings.
      	Remove code for deleted fields.
      
      From-SVN: r188047
      Richard Sandiford committed
    • ira.c (init_move_cost): Adjust choice of subclasses to match the current… · 48e3d6e9
      ira.c (init_move_cost): Adjust choice of subclasses to match the current ira_init_register_move_cost choice.
      
      gcc/
      	* ira.c (init_move_cost): Adjust choice of subclasses to match
      	the current ira_init_register_move_cost choice.  Use
      	ira_class_subset_p instead of reg_class_subset_p.
      	(ira_init_register_move_cost): Assert that move_cost,
      	may_move_in_cost and may_move_out_cost already hold the desired
      	values for their ira_* equivalents.  For the latter two,
      	ignore classes that can't store a register of the given mode.
      
      From-SVN: r188046
      Richard Sandiford committed
    • ira.c (setup_allocno_and_important_classes): Use ira_class_hard_regs_num to… · 3e575fe2
      ira.c (setup_allocno_and_important_classes): Use ira_class_hard_regs_num to check whether a class has any allocatable registers.
      
      gcc/
      	* ira.c (setup_allocno_and_important_classes): Use
      	ira_class_hard_regs_num to check whether a class has any
      	allocatable registers.
      	(ira_init_register_move_cost): Likewise.
      
      From-SVN: r188045
      Richard Sandiford committed
    • ira.c (init_move_cost): Adjust local variable names to match file conventions. · ed9e2ed0
      gcc/
      	* ira.c (init_move_cost): Adjust local variable names to match
      	file conventions.  Use ira_assert instead of gcc_assert.
      
      From-SVN: r188044
      Richard Sandiford committed
    • regs.h (move_table, [...]): Move these definitions and associated target_globals fields to... · e80ccebc
      gcc/
      	* regs.h (move_table, move_cost, may_move_in_cost, may_move_out_cost):
      	Move these definitions and associated target_globals fields to...
      	* ira-int.h: ...here.
      	* rtl.h (init_move_cost): Delete.
      	* reginfo.c (last_mode_for_init_move_cost, init_move_cost): Move to...
      	* ira.c: ...here, making the latter static.
      
      From-SVN: r188043
      Richard Sandiford committed
    • ira.h (target_ira): Delete x_ira_available_class_regs. · f508f827
      gcc/
      	* ira.h (target_ira): Delete x_ira_available_class_regs.
      	(ira_available_class_regs): Delete.
      	* ira.c (setup_available_class_regs): Delete.
      	(setup_alloc_classes): Don't call it.
      	(setup_pressure_classes): Use ira_class_hard_regs_num instead of
      	ira_available_class_regs.
      	* haifa-sched.c (print_curr_reg_pressure, setup_insn_reg_pressure_info)
      	(model_spill_cost): Likewise.
      	* ira-build.c (low_pressure_loop_node_p): Likewise.
      	* ira-color.c (color_pass): Likewise.
      	* ira-emit.c (change_loop): Likewise.
      	* ira-lives.c (inc_register_pressure, dec_register_pressure)
      	(single_reg_class, ira_implicitly_set_insn_hard_regs)
      	(process_bb_node_lives): Likewise.
      	* loop-invariant.c (gain_for_invariant): Likewise.
      
      From-SVN: r188041
      Richard Sandiford committed
  28. 30 May, 2012 1 commit
  29. 29 May, 2012 1 commit
    • integrate.c: Remove. · 6399c0ab
      	* integrate.c: Remove.
      	* integrate.h: Remove.
      	* Makefile.in: Remove make rules for integrate.c and INTEGRATE_H.
      	* config/arm/t-arm: Remove INTEGRATE_H dependency for target files.
      	* config/rs6000/t-rs6000: Likewise
      	* config/spu/t-spu-elf: Likewise.
      	* function.h (get_hard_reg_initial_val, has_hard_reg_initial_val,
      	get_hard_reg_initial_reg, emit_initial_value_sets): Move prototypes
      	from integrate.h to here.
      	(initial_value_entry): New prototype.
      	* reload.h (allocate_initial_values): Remove prototype.
      	* tree.h (set_decl_abstract_flags, set_decl_origin_self): Likewise.
      	* cse.c (fixed_base_plus_p): Don't handle virtual registers for
      	integrate.c.
      	* dwarf2out.c (set_decl_origin_self, set_block_origin_self,
      	set_decl_abstract_flags, set_block_abstract_flags): Move from
      	integrate.c to here, the only user.
      	* expmed.c (extract_fixed_bit_field): Remove outdated comment
      	about integrate.c.
      	* function.c: Don't include integrate.h.
      	(struct initial_value_pair, struct initial_value_struct,
      	get_hard_reg_initial_val, has_hard_reg_initial_val,
      	get_hard_reg_initial_reg, emit_initial_value_sets): Move from
      	integrate.c to here.
      	(initial_value_entry): New function.
      	* genemit.c (main): Don't print integrate.h include line.
      	* ira.c: Don't include integrate.h.
      	(allocate_initial_values): Move from integrate.c to here.
      	(ira): Update allocate_initial_values call.
      	* tree-inline.c: Don't include integrate.h.
      	(function_attribute_inlinable_p): Moved from integrate.c to here.
      	* cfgexpand.c: Don't include integrate.h.
      	* except.c: Likewise.
      	* langhooks.c: Likewise.
      	* passes.c: Likewise.
      	* toplev.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/epiphany/epiphany.c: Likewise.
      	* config/mep/mep.c: Likewise.
      	* config/score/score.c: Likewise.
      	* config/picochip/picochip.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/alpha/alpha.c: Likewise.
      	* config/microblaze/microblaze.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/v850/v850.c: Likewise.
      	* config/mmix/mmix.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/arm/arm.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/m32r/m32r.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/c6x/c6x.c: Include function.h instead of integrate.h.
      	* config/tilegx/tilegx.c: Likewise.
      	* config/tilepro/tilepro.c: Likewise.
      
      From-SVN: r187969
      Steven Bosscher committed
  30. 16 May, 2012 1 commit
  31. 15 May, 2012 1 commit
  32. 14 May, 2012 1 commit
    • attribs.c (decl_attributes): Avoid emitting a warning if ATTR_FLAG_BUILT_IN. · e384e6b5
      	* attribs.c (decl_attributes): Avoid emitting a warning if
      	ATTR_FLAG_BUILT_IN.
      	* doc/rtl.texi (CALL_INSN_FUNCTION_USAGE): Use lowercase for rtx
      	codes.  Document meaning of sets inside CALL_INSN_FUNCTION_USAGE.
      	* c-family/c-common.c (DEF_ATTR_STRING): Define and undefine as
      	necessary.
      	* builtin-attrs.def (DEF_ATTR_FOR_STRING): Define.  Use it to
      	define a string "1".
      	(ATTR_RET1_NOTHROW_NONNULL_LEAF): New attr definition.
      	* builtins.def (BUILT_IN_MEMCPY, BUILT_IN_MEMMOVE, BUILT_IN_MEMSET,
      	BUILT_IN_STRCPY): Use it for these functions.
      	* postreload.c (reload_combine): Deal with SETs inside
      	CALL_INSN_FUNCTION_USAGE.
      	* caller-save.c (setup_save_areas, save_call_clobbered_regs):
      	Look for REG_RETURNED notes and use a cheap restore if possible.
      	* ira-int.h (struct ira_allocno): New member cheap_calls_crossed_num.
      	(ALLOCNO_CHEAP_CALLS_CROSSED_NUM): New macro.
      	* ira-build.c (ira_create_allocno, create_cap_allocno,
      	propagate_allocno_info, propagate_some_info_from_allocno,
      	copy_info_to_removed_store_destination, ira_flattening): Handle it.
      	* ira-lives.c (pseudo_regno_single_word_and_live_p,
      	find_call_crossed_cheap_reg): New static functions.
      	(process_bb_node_lives): Look for SETs in CALL_INSN_FUNCTION_USAGE,
      	and set ALLOCNO_CHEAP_CALLS_CROSSED_NUM if possible.  Also make
      	a REG_RETURNED note in that case.
      	* ira.c (setup_reg_renumber): Change assert to allow cases where
      	allocnos only cross calls for which they are cheap to restore.
      	* ira-costs.c (ira_tune_allocno_costs): Compare
      	ALLOCNO_CALLS_CROSSED_NUM to ALLOCNO_CHEAP_CALLS_CROSSED_NUM rather
      	than 0.
      	* reg-notes.def (REG_RETURNED): New note.
      	* cse.c (cse_insn): Likewise.
      	* sched-deps.c (sched_analyze_insn): Likewise.
      	* expr.c (init_block_move_fn): Set a "fn spec" attribute.
      	* calls.c (decl_return_flags): New static function.
      	(expand_call): Generate a SET in CALL_INSN_FUNCTION_USAGE for
      	functions that return one of their arguments.
      	* lto/lto-lang.c (handle_fnspec_attribute): New static function.
      	(lto_attribute_table): Add "fn spec".
      	(DEF_ATTR_STRING): Define and undefine along with the other macros.
      	* regcprop.c (struct kill_set_value_data): New.
      	(kill_set_value): Interpret data as a pointer to such a struct.
      	Do nothing if the caller wants the register to be ignored.
      	(copyprop_hardreg_forward_1): Handle SETs in CALL_INSN_FUNCTION_USAGE.
      
      testsuite/
      	* gcc.target/i386/retarg.c: New test.
      
      From-SVN: r187459
      Bernd Schmidt committed