1. 10 Jan, 2013 1 commit
  2. 04 Jan, 2013 1 commit
  3. 04 Dec, 2012 1 commit
    • rtl.h (print_insn_with_notes): Remove prototype. · 2c895bd1
      	* rtl.h (print_insn_with_notes): Remove prototype.
      	(rtl_dump_bb_for_graph): New prototype.
      	* sched-vis.c (print_insn_with_notes): Make static again.  Fix
      	printing of notes.
      	(rtl_dump_bb_for_graph): New function.
      	* cfghooks.h (struct cfg_hooks) <dump_bb_for_graph>: New hook.
      	(dump_bb_for_graph): New prototype.
      	* cfghooks.c (dump_bb_for_graph): New function.
      	* tree-cfg.c (gimple_cfg_hooks): Register gimple_dump_bb_for_graph
      	as dump_bb_for_graph hook implementation for GIMPLE.
      	* cfgrtl.c (rtl_cfg_hooks): Likewise for rtl_dump_bb_for_graph.
      	(cfg_layout_rtl_cfg_hooks): Likewise.
      	* graph.c (draw_cfg_node): Don't include sbitmap.h, rtl.h, tree.h,
      	gimple.h, and gimple-pretty-print.h.
      	(draw_cfg_node, draw_cfg_node_succ_edges): Use the uniqe function
      	definition number instead of the function declaration UID.
      	(print_graph_cfg): Take a struct function instead of a tree.
      	Use the dump_bb_for_graph hook to dump the basic block content.
      	* graph.h (print_graph_cfg): Update prototype.
      	* passes.c (execute_function_dump): Update print_graph_cfg call.
      	* Makefile.in (graph.o): Fixup dependencies.
      
      From-SVN: r194157
      Steven Bosscher committed
  4. 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
  5. 09 Oct, 2012 1 commit
    • * basic-block. (profile_record): New struct, moved from passes.c. · aa4723d7
      	* cfghooks.h (struct cfg_hooks) <account_profile_record>: New hook.
      	(account_profile_record): New prototype.
      	* cfghooks.c (account_profile_record): New function.
      	* tree-cfg.c (gimple_account_profile_record): New function
      	(gimple_cfg_hooks): Add it.
      	* cfgrtl.c (rtl_account_profile_record): New function
      	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Add it.
      	* passes.c (check_profile_consistency): Simplify.  Move IR-dependent
      	code around using cfghooks machinery.
      
      From-SVN: r192271
      Steven Bosscher committed
  6. 13 Sep, 2012 1 commit
    • ipa-pure-const.c (state_from_flags, [...]): Use current_function_name instead of… · df92c640
      ipa-pure-const.c (state_from_flags, [...]): Use current_function_name instead of lang_hooks.decl_printable_name.
      
      	* ipa-pure-const.c (state_from_flags, local_pure_const): Use
      	current_function_name instead of lang_hooks.decl_printable_name.
      
      	* function.h (fndecl_name): New prototype.
      	* function.c (fndecl_name): New function.
      	* vecir.h (cgraph_node_p): New standard IR VEC type.
      	* trans-mem.c (cgraph_node_p): No need anymore to define it here.
      	* ipa-utils.h (ipa_get_nodes_in_cycle): New prototype.
      	* ipa-utils.c (ipa_get_nodes_in_cycle): New function.
      	* ipa-reference.c: Don't include langhooks.h, and certainly not twice.
      	Fix many formatting issues (long lines, short lines, spacing, etc.).
      	(get_static_name): Use fndecl_name.
      	(dump_static_vars_set_to_file): New function split out from propagate.
      	(union_static_var_sets): New function, union two sets and collapse
      	to all_module_statics as quickly as possible.
      	(intersect_static_var_sets): New function, similar to above.
      	(copy_static_var_set): Renamed from copy_global_bitmap and rewritten
      	to allocate a copy on the same bitmap_obstack as the source set.
      	(propagate_bits): Simplify, and clarify by using union_static_var_sets.
      	(generate_summary): Remove bm_temp.  Print UID of promotable globals.
      	(read_write_all_from_decl): Use pass-by-reference, bless C++.
      	(get_read_write_all_from_node): New function, split out from propagate.
      	(propagate): Simplify and clarify with helper functions.  Use
      	ipa_get_nodes_in_cycle to walk all nodes in a reduced node.
      	(ipa_reference_read_optimization_summary): Use fndecl_name instead of
      	lang_hooks.decl_printable_name.
      
      	* rtl.h (print_rtl_single_with_indent): New prototype.
      	* print-rtl.c (print_rtl_single_with_indent): New function.
      	* cfghooks.h (empty_block_p, split_block_before_cond_jump): New hooks.
      	* cfghooks.c (empty_block_p, split_block_before_cond_jump): Implement.
      	* cfgrtl.c (rtl_block_empty_p, rtl_split_block_before_cond_jump):
      	Implement RTL specific hooks.
      	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Register the new hooks.
      	* tree-cfg.c (gimple_empty_block_p,
      	gimple_split_block_before_cond_jump): Implement GIMPLE specific hooks.
      	(gimple_cfg_hooks): Register the new hooks.
      	* tree-ssa-phiopt.c (empty_block_p): Remove in favor of new hook.
      
      From-SVN: r191255
      Steven Bosscher committed
  7. 17 Jul, 2012 1 commit
    • dumpfile.h (TDF_COMMENT): New define. · a315c44c
      	* dumpfile.h (TDF_COMMENT): New define.
      	* basic-block.h (EDGE_FALLTHRU, EDGE_ABNORMAL, EDGE_ABNORMAL_CALL,
      	EDGE_EH, EDGE_FAKE, EDGE_DFS_BACK, EDGE_CAN_FALLTHRU,
      	EDGE_IRREDUCIBLE_LOOP, EDGE_SIBCALL, EDGE_LOOP_EXIT, EDGE_TRUE_VALUE,
      	EDGE_FALSE_VALUE, EDGE_EXECUTABLE, EDGE_CROSSING, EDGE_PRESERVE):
      	Move to new file cfg-flags.h.
      	(enum cfg_edge_flags): New enum, using cfg-flags.h.
      	(EDGE_ALL_FLAGS): Compute value automatically.
      	(BB_NEW, BB_REACHABLE, BB_IRREDUCIBLE_LOOP, BB_SUPERBLOCK,
      	BB_DISABLE_SCHEDULE, BB_HOT_PARTITION, BB_COLD_PARTITION,
      	BB_DUPLICATED, BB_NON_LOCAL_GOTO_TARGET, BB_RTL,
      	BB_FORWARDER_BLOCK, BB_NONTHREADABLE_BLOCK, BB_MODIFIED, BB_VISITED,
      	BB_IN_TRANSACTION): Move to new file cfg-flags.h.
      	(enum bb_flags): Rename to cfg_bb_flags.  Use cfg-flags.h.
      	(BB_ALL_FLAGS): New, compute value automatically.
      	(dump_bb_info): Update prototype.
      	(dump_edge_info): Update prototype.
      	* cfg-flags.h: New file.
      	* cfg.c (dump_edge_info): Take flags argument.  Be verbose only if
      	TDF_DETAILS and not TDF_SLIM.  Include cfg-flags.h for bitnames.
      	Check that the edge flags are within the range of EDGE_ALL_FLAGS.
      	(debug_bb): Update dump_bb call.
      	(dump_cfg_bb_info): Remove.
      	(dump_bb_info): New function.  Use cfg-flags.h for bitnames.
      	Adjust verbosity using TDF_* flags.  Check that the basic block flags
      	are within the range of BB_ALL_FLAGS.
      	(brief_dump_cfg): Use dump_bb_info instead of dump_cfg_bb_info.
      	* cfghooks.h (struct cfghooks): Update dump_bb hook, take a FILE
      	first for consistency with other dump functions.
      	(dump_bb): Update prototype accordingly.
      	* cfghooks.c: Include dumpfile.h.
      	(verify_flow_info): Update dump_edge_info calls.
      	(dump_bb): Take a flags argument and pass it around.
      	Use dump_bb_info to dump common information about a basic block.
      	(dump_flow_info): Moved here from cfgrtl.c.  Make IL agnostic.
      	(debug_flow_info): Moved here from cfgrtl.c.
      	* profile.c (is_edge_inconsistent): Update dump_bb calls.
      	* loop-invariant.c (find_defs): Update print_rtl_with_bb call.
      	* rtl.h (debug_bb_n_slim, debug_bb_slim, print_rtl_slim,
      	print_rtl_slim_with_bb): Remove prototypes.
      	(dump_insn_slim): Adjust prototype to take a const_rtx.
      	(print_rtl_with_bb): Adjust prototype.
      	* sched-rgn.c (debug_region): Use dump_bb instead of debug_bb_n_slim.
      	* sched-vis.c (dump_insn_slim): Take a const_rtx.
      	(debug_insn_slim): Prototype here near DEBUG_FUNCTION marker.
      	(print_rtl_slim_with_bb): Remove.
      	(print_rtl_slim): Rename to debug_rtl_slim.  Print only insn info,
      	not basic block info (print_rtl_with_bb with TDF_SLIM should be used
      	for that.  Prototype here near DEBUG_FUNCTION marker.
      	(debug_bb_slim): Prototype here near DEBUG_FUNCTION marker.
      	Use dump_bb.
      	(debug_bb_n_slim): Prototype here near DEBUG_FUNCTION marker.
      	* tree-cfg.c (gimple_can_merge_blocks_p): Use EDGE_COMPLEX.
      	(remove_bb): Update dump_bb call.
      	(gimple_debug_bb): Use dump_bb.
      	(dump_function_to_file): Update gimple_dump_bb call.
      	(print_loops_bb): Likewise.
      	* tree-flow.h (gimple_dump_bb): Update prototype.
      	* gimple-pretty-print.c (dump_bb_header): Rename to
      	dump_gimple_bb_header.  Write to a stream instead of a pretty
      	printer.  Use dump_bb_info to dump basic block info.
      	(dump_bb_end): Rename to dump_gimple_bb_footer.  Write to a
      	stream instead of a pretty printer.  Use dump_bb_info.
      	(gimple_dump_bb_buff): Do not call dump_bb_header and dump_bb_end.
      	(gimple_dump_bb): Do it here with dump_gimple_bb_header and
      	dump_gimple_bb_footer.
      	* cfgrtl.c (rtl_dump_bb): Update prototype.  Only dump DF if the
      	dump flags have TDF_DETAILS.  Use dump_insn_slim if TDF_SLIM.
      	(print_rtl_with_bb): Take a flags argument and pass it around.
      	Use dump_insn_slim if TDF_SLIM.
      	(dump_bb_info): Removed and re-incarnated in cfg.c.
      	(dump_flow_info): Moved to cfghooks.c.
      	(debug_flow_info): Moved to cfghooks.c.
      	* passes.c (execute_function_dump): Unconditionally use
      	print_rtl_with_bb for RTL dumps, now that it understands TDF_SLIM.
      	* final.c (dump_basic_block_info): Update dump_edge_info calls.
      	* tree-vrp.c (dump_asserts_for): Likewise.
      	* ifcvt.c (if_convert): Unconditionally use print_rtl_with_bb.
      	* tree-if-conv.c (if_convertible_bb_p): Don't look at
      	EDGE_ABNORMAL_CALL, it has no meaning in the GIMPLE world.
      	* trans-mem.c (make_tm_edge): Don't set EDGE_ABNORMAL_CALL,
      	for the same reason.
      	* config/rl78/rl78.c (rl78_reorg): Update print_rtl_with_bb calls.
      
      From-SVN: r189590
      Steven Bosscher committed
  8. 17 Jun, 2012 1 commit
    • cfglayout.h: Remove. · 78bde837
      2012-06-17  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* cfglayout.h: Remove.
      	* cfglayout.c: Remove.
      	* function.h (struct function): Remove x_last_location field.
      	* function.c: Do not include cfglayout.h.
      	(expand_function_start): Do not call no-op force_next_line_note.
      	(expand_function_end): Likewise.
      	* cfgrtl.c: Do not include cfglayout.h.  Include gt-cfgrtl.h.
      	(unlink_insn_chain): Moved here from cfglayout.c.
      	(skip_insns_after_block, label_for_bb, record_effective_endpoints,
      	into_cfg_layout_mode, outof_cfg_layout_mode,
      	pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode,
      	relink_block_chain, fixup_reorder_chain, verify_insn_chain,
      	fixup_fallthru_exit_predecessor, force_one_exit_fallthru,
      	cfg_layout_can_duplicate_bb_p, duplicate_insn_chain,
      	cfg_layout_duplicate_bb, cfg_layout_initialize, break_superblocks,
      	cfg_layout_finalize): Likewise.
      	(rtl_can_remove_branch_p): Likewise.
      	* rtl.h (insn_scope): Move prototype from cfglayout.h here.
      	(duplicate_insn_chain): Likewise.
      	(force_next_line_note): Remove prototype.
      	* emit-rtl.c: Do not include tree-flow.h, egad.  Include vecprim.h.
      	(last_location): Remove #define to emit.x_last_location.
      	(force_next_line_note): Remove no-op function.
      	(init_emit): Don't set x_last_location.
      	(block_locators_locs, block_locators_blocks, locations_locators_locs,
      	locations_locators_vals, prologue_locator, epilogue_locator,
      	curr_location, last_location, curr_block, last_block, curr_rtl_loc):
      	Move POD to here from cfglayout.c.
      	(insn_locators_alloc, insn_locators_finalize, insn_locators_free,
      	set_curr_insn_source_location, get_curr_insn_source_location,
      	set_curr_insn_block, get_curr_insn_block, curr_insn_locator,
      	locator_scope, insn_scope, locator_location, locator_line, insn_line,
      	locator_file, insn_file, locator_eq): Move to here from cfglayout.c.
      	* cfghooks.h: Remove double-include protection.
      	(can_copy_bbs_p, copy_bbs): Move prototypes from cfglayout.h to here.
      	* cfghooks.c (can_copy_bbs_p, copy_bbs): Move to here from cfglayout.c.
      	* final.c: Do not include cfglayout.h.
      	(choose_inner_scope, change_scope): Move to here from cfglayout.c.
      	(reemit_insn_block_notes): Likewise.  Make static.
      	* tree-flow.h (tree_could_trap_p, operation_could_trap_helper_p,
      	operation_could_trap_p, tree_could_throw_p): Move from here...
      	* tree.h: ... to here.
      	* gengtype.c (open_base_files): Remove cfglayout.h from the list.
      	* profile.c: Do not include cfghooks.h.
      	* cfgloopmanip.c: Do not include cfglayout.h and cfghooks.h.
      	* modulo-sched.c: Likewise.
      	* loop-unswitch.c: Do not include cfglayout.h.
      	* sched-ebb.c: Likewise.
      	* tracer.c: Likewise.
      	* ddg.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* loop-init.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* hw-doloop.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* bb-reorder.c: Likewise.
      	* sched-rgn.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* config/alpha/alpha.c: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/c6x/c6x.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/score/score.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* Makefile.in (CFGAYOUT_H): Remove, and fixup users.
      	* config/rs6000/t-rs6000 (rs6000.o): Do not depend on cfglayout.h.
      	* config/spu/t-spu-elf (spu.o: $): Likewise.
      	* config/sparc/t-sparc (sparc.o): Do not depend on CFGLAYOUT_H.
      
      From-SVN: r188712
      Steven Bosscher committed
  9. 07 Apr, 2011 1 commit
    • basic-block.h (force_nonfallthru): Move to... · cf103ca4
      	* basic-block.h (force_nonfallthru): Move to...
      	* cfghooks.h (struct cfg_hooks): Add force_nonfallthru hook.
      	(force_nonfallthru): ...here.
      	* cfghooks.c (force_nonfallthru): New function.
      	* cfgrtl.c (force_nonfallthru): Rename into...
      	(rtl_force_nonfallthru): ...this.
      	(commit_one_edge_insertion): Do not set AUX field.
      	(commit_edge_insertions): Do not discover new basic blocks.
      	(rtl_cfg_hooks): Add rtl_force_nonfallthru.
      	(cfg_layout_rtl_cfg_hooks): Likewise.
      	* function.c (thread_prologue_and_epilogue_insns): Remove bogus
      	ATTRIBUTE_UNUSED.  Discover new basic blocks in the prologue insns.
      	* tree-cfg.c (gimple_cfg_hooks): Add NULL for force_nonfallthru.
      
      From-SVN: r172128
      Eric Botcazou committed
  10. 25 Nov, 2009 1 commit
    • Remove trailing white spaces. · b8698a0f
      2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* alias.c: Remove trailing white spaces.
      	* alloc-pool.c: Likewise.
      	* alloc-pool.h: Likewise.
      	* attribs.c: Likewise.
      	* auto-inc-dec.c: Likewise.
      	* basic-block.h: Likewise.
      	* bb-reorder.c: Likewise.
      	* bt-load.c: Likewise.
      	* builtins.c: Likewise.
      	* builtins.def: Likewise.
      	* c-common.c: Likewise.
      	* c-common.h: Likewise.
      	* c-cppbuiltin.c: Likewise.
      	* c-decl.c: Likewise.
      	* c-format.c: Likewise.
      	* c-lex.c: Likewise.
      	* c-omp.c: Likewise.
      	* c-opts.c: Likewise.
      	* c-parser.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* c-tree.h: Likewise.
      	* c-typeck.c: Likewise.
      	* caller-save.c: Likewise.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfglayout.c: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphbuild.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* cif-code.def: Likewise.
      	* collect2.c: Likewise.
      	* combine.c: Likewise.
      	* convert.c: Likewise.
      	* coverage.c: Likewise.
      	* crtstuff.c: Likewise.
      	* cse.c: Likewise.
      	* cselib.c: Likewise.
      	* dbgcnt.c: Likewise.
      	* dbgcnt.def: Likewise.
      	* dbgcnt.h: Likewise.
      	* dbxout.c: Likewise.
      	* dce.c: Likewise.
      	* ddg.c: Likewise.
      	* ddg.h: Likewise.
      	* defaults.h: Likewise.
      	* df-byte-scan.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* df.h: Likewise.
      	* dfp.c: Likewise.
      	* diagnostic.c: Likewise.
      	* diagnostic.h: Likewise.
      	* dominance.c: Likewise.
      	* domwalk.c: Likewise.
      	* double-int.c: Likewise.
      	* double-int.h: Likewise.
      	* dse.c: Likewise.
      	* dwarf2asm.c: Likewise.
      	* dwarf2asm.h: Likewise.
      	* dwarf2out.c: Likewise.
      	* ebitmap.c: Likewise.
      	* ebitmap.h: Likewise.
      	* emit-rtl.c: Likewise.
      	* et-forest.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* expr.h: Likewise.
      	* final.c: Likewise.
      	* flags.h: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* function.h: Likewise.
      	* fwprop.c: Likewise.
      	* gcc.c: Likewise.
      	* gcov-dump.c: Likewise.
      	* gcov-io.c: Likewise.
      	* gcov-io.h: Likewise.
      	* gcov.c: Likewise.
      	* gcse.c: Likewise.
      	* genattr.c: Likewise.
      	* genattrtab.c: Likewise.
      	* genautomata.c: Likewise.
      	* genchecksum.c: Likewise.
      	* genconfig.c: Likewise.
      	* genflags.c: Likewise.
      	* gengtype-parse.c: Likewise.
      	* gengtype.c: Likewise.
      	* gengtype.h: Likewise.
      	* genmddeps.c: Likewise.
      	* genmodes.c: Likewise.
      	* genopinit.c: Likewise.
      	* genpreds.c: Likewise.
      	* gensupport.c: Likewise.
      	* ggc-common.c: Likewise.
      	* ggc-page.c: Likewise.
      	* ggc-zone.c: Likewise.
      	* ggc.h: Likewise.
      	* gimple-iterator.c: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* gimple.c: Likewise.
      	* gimple.def: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* graphds.c: Likewise.
      	* graphite-clast-to-gimple.c: Likewise.
      	* gthr-nks.h: Likewise.
      	* gthr-posix.c: Likewise.
      	* gthr-posix.h: Likewise.
      	* gthr-posix95.h: Likewise.
      	* gthr-single.h: Likewise.
      	* gthr-tpf.h: Likewise.
      	* gthr-vxworks.h: Likewise.
      	* gthr.h: Likewise.
      	* haifa-sched.c: Likewise.
      	* hard-reg-set.h: Likewise.
      	* hooks.c: Likewise.
      	* hooks.h: Likewise.
      	* hosthooks.h: Likewise.
      	* hwint.h: Likewise.
      	* ifcvt.c: Likewise.
      	* incpath.c: Likewise.
      	* init-regs.c: Likewise.
      	* integrate.c: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-struct-reorg.c: Likewise.
      	* ipa-struct-reorg.h: Likewise.
      	* ipa-type-escape.c: Likewise.
      	* ipa-type-escape.h: Likewise.
      	* ipa-utils.c: Likewise.
      	* ipa-utils.h: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-conflicts.c: Likewise.
      	* ira-costs.c: Likewise.
      	* ira-emit.c: Likewise.
      	* ira-int.h: Likewise.
      	* ira-lives.c: Likewise.
      	* ira.c: Likewise.
      	* jump.c: Likewise.
      	* lambda-code.c: Likewise.
      	* lambda-mat.c: Likewise.
      	* lambda-trans.c: Likewise.
      	* lambda.h: Likewise.
      	* langhooks.c: Likewise.
      	* lcm.c: Likewise.
      	* libgcov.c: Likewise.
      	* lists.c: Likewise.
      	* loop-doloop.c: Likewise.
      	* loop-init.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-iv.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-compress.c: Likewise.
      	* lto-opts.c: Likewise.
      	* lto-section-in.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* lto-streamer.c: Likewise.
      	* lto-streamer.h: Likewise.
      	* lto-symtab.c: Likewise.
      	* lto-wpa-fixup.c: Likewise.
      	* matrix-reorg.c: Likewise.
      	* mcf.c: Likewise.
      	* mode-switching.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omega.c: Likewise.
      	* omega.h: Likewise.
      	* omp-low.c: Likewise.
      	* optabs.c: Likewise.
      	* optabs.h: Likewise.
      	* opts-common.c: Likewise.
      	* opts.c: Likewise.
      	* params.def: Likewise.
      	* params.h: Likewise.
      	* passes.c: Likewise.
      	* plugin.c: Likewise.
      	* postreload-gcse.c: Likewise.
      	* postreload.c: Likewise.
      	* predict.c: Likewise.
      	* predict.def: Likewise.
      	* pretty-print.c: Likewise.
      	* pretty-print.h: Likewise.
      	* print-rtl.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* read-rtl.c: Likewise.
      	* real.c: Likewise.
      	* recog.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regcprop.c: Likewise.
      	* reginfo.c: Likewise.
      	* regmove.c: Likewise.
      	* regrename.c: Likewise.
      	* regs.h: Likewise.
      	* regstat.c: Likewise.
      	* reload.c: Likewise.
      	* reload1.c: Likewise.
      	* resource.c: Likewise.
      	* rtl.c: Likewise.
      	* rtl.def: Likewise.
      	* rtl.h: Likewise.
      	* rtlanal.c: Likewise.
      	* sbitmap.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-int.h: Likewise.
      	* sched-rgn.c: Likewise.
      	* sched-vis.c: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-dump.h: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched-ir.h: Likewise.
      	* sel-sched.c: Likewise.
      	* sel-sched.h: Likewise.
      	* sese.c: Likewise.
      	* sese.h: Likewise.
      	* simplify-rtx.c: Likewise.
      	* stack-ptr-mod.c: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* stringpool.c: Likewise.
      	* stub-objc.c: Likewise.
      	* sync-builtins.def: Likewise.
      	* target-def.h: Likewise.
      	* target.h: Likewise.
      	* targhooks.c: Likewise.
      	* targhooks.h: Likewise.
      	* timevar.c: Likewise.
      	* tlink.c: Likewise.
      	* toplev.c: Likewise.
      	* toplev.h: Likewise.
      	* tracer.c: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-affine.h: Likewise.
      	* tree-browser.def: 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-dump.c: Likewise.
      	* tree-dump.h: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-flow.h: Likewise.
      	* tree-if-conv.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-loop-linear.c: Likewise.
      	* tree-mudflap.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-nomudflap.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-pass.h: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-ifcombine.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-ssa-loop-ch.c: 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-loop-unswitch.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-operands.h: 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-sink.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-ter.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-tailcall.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.def: Likewise.
      	* tree.h: Likewise.
      	* treestruct.def: Likewise.
      	* unwind-compat.c: Likewise.
      	* unwind-dw2-fde-glibc.c: Likewise.
      	* unwind-dw2.c: Likewise.
      	* value-prof.c: Likewise.
      	* value-prof.h: Likewise.
      	* var-tracking.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* vec.c: Likewise.
      	* vec.h: Likewise.
      	* vmsdbgout.c: Likewise.
      	* web.c: Likewise.
      	* xcoffout.c: Likewise.
      
      From-SVN: r154645
      H.J. Lu committed
  11. 20 Feb, 2009 1 commit
  12. 01 Sep, 2008 1 commit
    • sel-sched.h, [...]: New files. · e855c69d
      2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
              Dmitry Melnik  <dm@ispras.ru>
              Dmitry Zhurikhin  <zhur@ispras.ru>
              Alexander Monakov  <amonakov@ispras.ru>
              Maxim Kuvyrkov  <maxim@codesourcery.com>
      
      	* sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
      	sel-sched-dump.c, sel-sched-ir.c: New files.
      	* Makefile.in (OBJS-common): Add selective scheduling object
      	files.
      	(sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
      	(SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
      	(sched-vis.o): Add dependency on $(INSN_ATTR_H).
      	* cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
      	* cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
      	(make_forwarder_block): Update loop latch if we have redirected
      	the loop latch edge.
      	* cfgloop.c (get_loop_body_in_custom_order): New function.
      	* cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
      	(CP_FALLTHRU_PREHEADERS): Likewise.
      	(get_loop_body_in_custom_order): Declare.
      	* cfgloopmanip.c (has_preds_from_loop): New.
      	(create_preheader): Honor CP_FALLTHRU_PREHEADERS.
      	Assert that the preheader edge will be fall thru when it is set.
      	* common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
      	fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
      	fsel-sched-substitution, fselective-scheduling): New flags.
          	* cse.c (hash_rtx_cb): New.
      	(hash_rtx): Use it.
      	* dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
      	sel_sched_insn_cnt): New counters. 
      	* final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
      	* genattr.c (main): Output maximal_insn_latency prototype.
      	* genautomata.c (output_default_latencies): New. Factor its code from ...
      	(output_internal_insn_latency_func): ... here.
      	(output_internal_maximal_insn_latency_func): New.
      	(output_maximal_insn_latency_func): New.
      	* hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
      	(struct hard_reg_set_iterator): New.
      	(hard_reg_set_iter_init, hard_reg_set_iter_set,
      	hard_reg_set_iter_next): New functions.
      	(EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
      	* lists.c (remove_free_INSN_LIST_node,
      	remove_free_EXPR_LIST_node): New functions.
      	* loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
      	set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
      	(loop_optimizer_finalize): Do not verify flow info after reload.
      	* recog.c (validate_replace_rtx_1): New parameter simplify.
      	Default it to true.  Update all uses.  Factor out simplifying
      	code to ...
      	(simplify_while_replacing): ... this new function.
      	(validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): New.
      	* recog.h (validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): Declare.
      	* rtl.c (rtx_equal_p_cb): New.
      	(rtx_equal_p): Use it.
      	* rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
      	(remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
      	debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
      	* vecprim.h: Add a vector type for unsigned int. 
      	* haifa-sched.c: Include vecprim.h and cfgloop.h.
      	(issue_rate, sched_verbose_param, note_list, dfa_state_size,
      	ready_try, cycle_issued_insns, spec_info): Make global.
      	(readyp): Initialize.
      	(dfa_lookahead): New global variable.
      	(old_max_uid, old_last_basic_block): Remove.
      	(h_i_d): Make it a vector.
      	(INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
      	through HID macro.
      	(after_recovery, adding_bb_to_current_region_p):
      	New variables to handle correct insertion of the recovery code.
      	(struct ready_list): Move declaration to sched-int.h.
      	(rgn_n_insns): Removed.
      	(rtx_vec_t): Move to sched-int.h.
      	(find_insn_reg_weight): Remove.
      	(find_insn_reg_weight1): Rename to find_insn_reg_weight.
      	(haifa_init_h_i_d, haifa_finish_h_i_d):
      	New functions to initialize / finalize haifa instruction data.
      	(extend_h_i_d, init_h_i_d): Rewrite.
      	(unlink_other_notes): Move logic to add_to_note_list.  Handle
      	selective scheduler.
      	(ready_lastpos, ready_element, ready_sort, reemit_notes,
      	find_fallthru_edge): Make global, remove static prototypes.
      	(max_issue): Make global.  Add privileged_n and state parameters.  Use
      	them.  
      	(extend_global, extend_all): Removed.
      	(init_before_recovery): Add new param.  Fix the handling of the case
      	when we insert a recovery code before the EXIT which has a predecessor
      	with a fallthrough edge to it.
      	(create_recovery_block): Make global.  Rename to
      	sched_create_recovery_block.  Update.
      	(change_pattern): Rename to sched_change_pattern.  Make global.
      	(speculate_insn): Rename to sched_speculate_insn.  Make global.
      	Split haifa-specific functionality into ...
      	(haifa_change_pattern): New static function.
      	(sched_extend_bb): New static function.
      	(sched_init_bbs): New function.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(insn_cost): Adjust for selective scheduling.
      	(dep_cost_1): New function.  Move logic from ...
      	(dep_cost): ... here.
      	(dep_cost): Use dep_cost_1.
      	(contributes_to_priority_p): Use sched_deps_info instead of
      	current_sched_info.
      	(priority): Adjust to work with selective scheduling.  Process the
      	corner case when all dependencies don't contribute to priority.
      	(rank_for_schedule): Use ds_weak instead of dep_weak.
      	(advance_state): New function.  Move logic from ...
      	(advance_one_cycle): ... here.
      	(add_to_note_list, concat_note_lists): New functions.
      	(rm_other_notes): Make static.  Adjust for selective scheduling.
      	(remove_notes, restore_other_notes): New functions.
      	(move_insn): Add two arguments.  Update assert.  Don't call
      	reemit_notes.
      	(choose_ready): Remove lookahead variable, use dfa_lookahead.
      	Remove more_issue, max_points.  Move the code to initialize
      	max_lookahead_tries to max_issue.
      	(schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
      	ready.  Adjust use of move_insn.  Call restore_other_notes.
      	(luid): Remove.
      	(sched_init, sched_finish): Move Haifa-specific initialization/
      	finalization to ...
      	(haifa_sched_init, haifa_sched_finish): ... respectively.
      	New functions.
      	(setup_sched_dump): New function.
      	(haifa_init_only_bb): New static function.
      	(haifa_speculate_insn): New static function.
      	(try_ready): Use haifa_* instead of speculate_insn and
      	change_pattern.
      	(extend_ready, extend_all): Remove.
      	(sched_extend_ready_list, sched_finish_ready_list): New functions.
      	(create_check_block_twin, add_to_speculative_block): Use
      	haifa_insns_init instead of extend_global.  Update to use new
      	initialization functions.  Change parameter.  Factor out code from
      	create_check_block_twin to ...
      	(sched_create_recovery_edges) ... this new function.
      	(add_block): Remove.
      	(sched_scan_info): New.
      	(extend_bb): Use sched_scan_info.
      	(init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
      	static functions for walking through scheduling region.
      	(sched_luids): New vector variable to replace uid_to_luid.
      	(luids_extend_insn): New function.
      	(sched_max_luid): New variable.
      	(luids_init_insn): New function.
      	(sched_init_luids, sched_finish_luids): New functions.
      	(insn_luid): New debug function.
      	(sched_extend_target): New function.
      	(haifa_init_insn): New static function.
      	(sched_init_only_bb): New hook.
      	(sched_split_block): New hook.
      	(sched_split_block_1): New function.
      	(sched_create_empty_bb): New hook.
      	(sched_create_empty_bb_1): New function.	
      	(common_sched_info, ready): New global variables.
      	(current_sched_info_var): Remove.
      	(move_block_after_check): Use common_sched_info.		
      	(haifa_luid_for_non_insn): New static function.	
      	(init_before_recovery): Use haifa_init_only_bb instead of
      	add_block.
      	(increase_insn_priority): New.
      	* modulo-sched.c: (issue_rate): Remove static declaration.
      	(sms_sched_info): Change type to haifa_sched_info.
      	(sms_sched_deps_info, sms_common_sched_info): New variables.
      	(setup_sched_infos): New.
      	(sms_schedule): Initialize them.  Call haifa_sched_init/finish.
      	Do not call regstat_free_calls_crossed.
      	(sms_print_insn): Use const_rtx.
      	* params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
      	PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
      	PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
      	PARAM_SCHED_MEM_TRUE_DEP_COST): New.
      	* sched-deps.c (sched_deps_info): New.  Update all relevant uses of
      	current_sched_info to use it.
      	(enum reg_pending_barrier_mode): Move to sched-int.h.
      	(h_d_i_d): New variable. Initialize to NULL.
      	({true, output, anti, spec, forward}_dependency_cache): Initialize
      	to NULL.
      	(estimate_dep_weak): Remove static declaration.
      	(sched_has_condition_p): New function.  Adjust users of
      	sched_get_condition to use it instead.
      	(conditions_mutex_p): Add arguments indicating which conditions are
      	reversed.  Use them.
      	(sched_get_condition_with_rev): Rename from sched_get_condition.  Add
      	argument to indicate whether returned condition is reversed.  Do not
      	generate new rtx when condition should be reversed; indicate it by
      	setting new argument instead.
      	(add_dependence_list_and_free): Add deps parameter.
      	Update all users.  Do not free dependence list when
      	deps context is readonly.
      	(add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
      	contexts.
      	(remove_from_dependence_list, remove_from_both_dependence_lists): New.
      	(remove_from_deps): New. Use the above functions.	
      	(cur_insn, can_start_lhs_rhs_p): New static variables.
      	(add_or_update_back_dep_1): Initialize present_dep_type.
      	(haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
      	haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
      	haifa_note_dep): New functions implementing dependence hooks for
      	the Haifa scheduler.
      	(note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
      	note_dep): New functions.
      	(ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
      	functions.
      	(init_deps): Initialize last_reg_pending_barrier and deps->readonly.
      	(free_deps): Initialize deps->reg_last.
      	(sched_analyze_reg, sched_analyze_1, sched_analyze_2,
      	sched_analyze_insn): Update to use dependency hooks infrastructure
      	and readonly contexts.
      	(deps_analyze_insn): New function.  Move part of logic from ...
      	(sched_analyze): ... here.  Also move some logic to ...
      	(deps_start_bb): ... here.  New function.
      	(add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
      	sel_sched_p.
      	(sched_deps_init): New function.  Move code from ...
      	(init_dependency_caches): ... here.  Remove.
      	(init_deps_data_vector): New.
      	(sched_deps_finish): New function.  Move code from ...
      	(free_dependency_caches): ... here.  Remove.
      	(init_deps_global, finish_deps_global): Adjust for use with
      	selective scheduling.
      	(get_dep_weak): Move logic to ...
      	(get_dep_weak_1): New function.
      	(ds_merge): Move logic to ...
      	(ds_merge_1): New static function.
      	(ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
      	(ds_get_max_dep_weak): New function.
      	* sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
      	(n_insns): Rename to rgn_n_insns.
      	(debug_ebb_dependencies): New function.
      	(init_ready_list): Use it.
      	(begin_schedule_ready): Use sched_init_only_bb.
      	(ebb_print_insn): Indicate when an insn starts a new cycle.
      	(contributes_to_priority, compute_jump_reg_dependencies,
      	add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
      	(add_block1): Remove to ebb_add_block.
      	(ebb_sched_deps_info, ebb_common_sched_info): New variables.
      	(schedule_ebb): Initialize them.  Use remove_notes instead of
      	rm_other_notes.  Use haifa_local_init/finish.
      	(schedule_ebbs): Use haifa_sched_init/finish.
      	* sched-int.h: Include vecprim.h, remove rtl.h.
      	(struct ready_list): Delete declaration.
      	(sched_verbose_param, enum sched_pass_id_t,
      	bb_vec_t, insn_vec_t, rtx_vec_t): New.
      	(struct sched_scan_info_def): New structure.
      	(sched_scan_info, sched_scan, sched_init_bbs,
      	sched_init_luids, sched_finish_luids, sched_extend_target,
      	haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
      	(struct common_sched_info_def): New.
      	(common_sched_info, haifa_common_sched_info,
      	sched_emulate_haifa_p): Declare.
      	(sel_sched_p): New.
      	(sched_luids): Declare.
      	(INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
      	(sched_max_luid, insn_luid): Declare.
      	(note_list, remove_notes, restore_other_notes, bb_note): Declare.
      	(sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
      	print_insn, print_pattern, print_value, haifa_classify_insn,
      	sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
      	setup_sched_dump, sched_init, sched_finish,
      	sel_insn_is_speculation_check): Export.
      	(struct ready_list): Move from haifa-sched.c.
      	(ready_try, ready, max_issue): Export.
      	(ebb_compute_jump_reg_dependencies, find_fallthru_edge,
      	sched_init_only_bb, sched_split_block, sched_split_block_1,
      	sched_create_empty_bb, sched_create_empty_bb_1,
      	sched_create_recovery_block, sched_create_recovery_edges): Export.
      	(enum reg_pending_barrier_mode): Export.
      	(struct deps): New fields `last_reg_pending_barrier' and `readonly'.
      	(deps_t): New.
      	(struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
      	print_insn field.  Move add_block and fix_recovery_cfg to
      	common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
      	(struct sched_deps_info_def): ... this new structure.
      	(sched_deps_info): Declare.
      	(struct spec_info_def): Remove weakness_cutoff, add
      	data_weakness_cutoff and control_weakness_cutoff.
      	(spec_info): Declare.
      	(struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
      	dep_count field.
      	(struct haifa_insn_data): Rename to struct _haifa_insn_data.
      	(haifa_insn_data_def, haifa_insn_data_t): New typedefs.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
      	(h_d_i_d): New variable.
      	(HDID): New accessor macro.
      	(h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
      	(HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
      	and HDID.
      	(IS_SPECULATION_CHECK_P): Update for selective scheduler.
      	(enum SCHED_FLAGS): Update for selective scheduler.
      	(enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
      	(init_dependency_caches, free_dependency_caches): Delete declarations.
      	(deps_analyze_insn, remove_from_deps, get_dep_weak_1,
      	estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
      	ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
      	sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
      	haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
      	ds_to_dt): Export.
      	(rm_other_notes): Delete declaration.
      	(schedule_block): Remove one argument.
      	(cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
      	ready_element, ready_lastpos, sched_extend_ready_list,
      	sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
      	concat_note_lists): Export.
      	(struct region): Move from sched-rgn.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN): Export.
      	(ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
      	(current_nr_blocks, current_blocks, target_bb): Likewise.
      	(dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
      	sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
      	sched_rgn_local_init, extend_regions,
      	rgn_make_new_region_out_of_new_block, compute_priorities,
      	debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
      	extend_rgns, deps_join rgn_setup_common_sched_info,
      	rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
      	dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
      	(get_rgn_sched_max_insns_priority, sel_add_to_insn_priority, 
      	increase_insn_priority): Likewise.
      	* sched-rgn.c: Include sel-sched.h.
      	(ref_counts): New static variable.  Use it ...
      	(INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
      	(FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
      	(sched_is_disabled_for_current_region_p): Delete static declaration.
      	(struct region): Move to sched-int.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	ebb_head): Define and initialize.
      	(RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
      	BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
      	sched-int.h.
      	(find_single_block_region): Add new argument to indicate that EBB
      	regions should be constructed.
      	(debug_live): Delete declaration.
      	(current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
      	(compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
      	declaration.
      	(init_regions): Delete declaration.
      	(debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
      	rgn_estimate_number_of_insns): New.
      	(too_large): Use estimate_number_of_insns.
      	(haifa_find_rgns): New. Move the code from ...
      	(find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
      	(free_trg_info): New.
      	(compute_trg_info): Allocate candidate tables here instead of ...
      	(init_ready_list): ... here.
      	(rgn_print_insn): Use const_rtx.
      	(contributes_to_priority, extend_regions): Delete static declaration.
      	(add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
      	(add_block1): Rename to rgn_add_block.
      	(debug_rgn_dependencies): Delete static qualifier.
      	(new_ready): Use sched_deps_info.  Simplify.
      	(rgn_common_sched_info, rgn_const_sched_deps_info,
      	rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
      	(region_sched_info): Rename to rgn_const_sched_info.
      	(deps_join): New, extracted from ...
      	(propagate_deps): ... here.
      	(compute_block_dependences, debug_dependencies): Update for selective
      	scheduling.
      	(free_rgn_deps, compute_priorities): New functions.
      	(sched_rgn_init, sched_rgn_finish, rgn_setup_region,
      	sched_rgn_compute_dependencies): New functions.
      	(schedule_region): Use them.
      	(sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
      	rgn_setup_common_sched_info, rgn_setup_sched_infos):
      	New functions.
      	(schedule_insns): Call new functions that were split out.
      	(rgn_make_new_region_out_of_new_block): New.
      	(get_rgn_sched_max_insns_priority): New.
      	(rest_of_handle_sched, rest_of_handle_sched2): Call selective
      	scheduling when appropriate.
      	* sched-vis.c: Include insn-attr.h.
      	(print_value, print_pattern): Make global.
      	(print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
      	* target-def.h (TARGET_SCHED_ADJUST_COST_2,
      	TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
      	TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
      	TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
      	TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
      	hooks.  Initialize them to 0.
      	(TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
      	* target.h (struct gcc_target): Add them.  Rename gen_check field to
      	gen_spec_check.
      	* flags.h (sel_sched_switch_set): Declare.
      	* opts.c (sel_sched_switch_set): New variable.
      	(decode_options): Unset flag_sel_sched_pipelining_outer_loops if
      	pipelining is disabled from command line.
      	(common_handle_option): Record whether selective scheduling is
      	requested from command line.
      	* doc/invoke.texi: Document new flags and parameters.
      	* doc/tm.texi: Document new target hooks.
      	* config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
      	(dfa_state_size): Do not declare locally.
      	* config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
      	* config/rs6000/rs6000.c (rs6000_init_sched_context,
      	rs6000_alloc_sched_context, rs6000_set_sched_context,
      	rs6000_free_sched_context): New functions.
      	(struct _rs6000_sched_context): New.
      	(rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
      	scheduling.
      	(rs6000_sched_finish): Do not run for selective scheduling. 
      
      Co-Authored-By: Alexander Monakov <amonakov@ispras.ru>
      Co-Authored-By: Dmitry Melnik <dm@ispras.ru>
      Co-Authored-By: Dmitry Zhurikhin <zhur@ispras.ru>
      Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com>
      
      From-SVN: r139854
      Andrey Belevantsev committed
  13. 28 Jul, 2008 1 commit
    • backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch. · 726a989a
      2008-07-28  Richard Guenther  <rguenther@suse.de>
      
      	Merge from gimple-tuples-branch.
      
      	* ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
      	* gimple.def: New file.
      	* gsstruct.def: Likewise.
      	* gimple-iterator.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* tree-gimple.c: Removed.  Merged into ...
      	* gimple.c: ... here.  New file.
      	* tree-gimple.h: Removed.  Merged into ...
      	* gimple.h: ... here.  New file.
      
      	* Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
      	* configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
      	--enable-checking=gimple flag.
      	* config.in: Likewise.
      	* configure: Regenerated.
      
      	* tree-ssa-operands.h: Tuplified.
      	* tree-vrp.c: Likewise.
      	* tree-loop-linear.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-complex.c: Likewise.
      	* cgraphbuild.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tracer.c: Likewise.
      	* gengtype.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-ssa-loop-unswitch.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* value-prof.c: Likewise.
      	* tree-ssa-loop-ch.c: Likewise.
      	* tree-tailcall.c: Likewise.
      	* value-prof.h: Likewise.
      	* tree.c: Likewise.
      	* tree.h: Likewise.
      	* tree-pass.h: Likewise.
      	* ipa-cp.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-scalar-evolution.h: Likewise.
      	* target.h: Likewise.
      	* lambda-mat.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* diagnostic.h: Likewise.
      	* builtins.c: Likewise.
      	* tree-ssa-alias-warnings.c: Likewise.
      	* cfghooks.c: Likewise.
      	* fold-const.c: Likewise.
      	* cfghooks.h: Likewise.
      	* omp-low.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* toplev.c: Likewise.
      	* tree-gimple.c: Likewise.
      	* tree-gimple.h: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-chrec.h: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-sccvn.h: Likewise.
      	* cgraphunit.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-nomudflap.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* c-format.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* ipa-utils.c: Likewise.
      	* tree-ssa-propagate.h: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* gimple-low.c: Likewise.
      	* tree-ssa-sink.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* c-semantics.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* expr.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* predict.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-ifcombine.c: Likewise.
      	* matrix-reorg.c: Likewise.
      	* c-decl.c: Likewise.
      	* tree-eh.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* lambda-trans.c: Likewise.
      	* function.c: Likewise.
      	* langhooks.c: Likewise.
      	* ebitmap.h: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* function.h: Likewise.
      	* langhooks.h: Likewise.
      	* tree-vectorizer.h: Likewise.
      	* ipa-type-escape.c: Likewise.
      	* ipa-type-escape.h: Likewise.
      	* domwalk.c: Likewise.
      	* tree-if-conv.c: Likewise.
      	* profile.c: Likewise.
      	* domwalk.h: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-data-ref.h: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-vect-analyze.c: Likewise.
      	* c-typeck.c: Likewise.
      	* gimplify.c: Likewise.
      	* coretypes.h: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* calls.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree.def: Likewise.
      	* tree-dfa.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* cfgexpand.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-predcom.c: Likewise.
      	* lambda.h: Likewise.
      	* tree-mudflap.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* print-tree.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* ipa-prop.h: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* ggc-page.c: Likewise.
      	* c-omp.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-ssa-ter.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* lambda-code.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-inline.h: Likewise.
      	* tree-iterator.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-vect-transform.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* cfgloop.c: Likewise.
      	* system.h: Likewise.
      	* tree-profile.c: Likewise.
      	* cfgloop.h: Likewise.
      	* c-gimplify.c: Likewise.
      	* c-common.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-flow.h: Likewise.
      	* c-common.h: Likewise.
      	* basic-block.h: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-ssa-structalias.h: Likewise.
      	* tree-cfg.c: Likewise.
      	* passes.c: Likewise.
      	* ipa-struct-reorg.c: Likewise.
      	* ipa-struct-reorg.h: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* varpool.c: Likewise.
      	* stmt.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* langhooks-def.h: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* config/alpha/alpha.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/m32c/m32c.c: Likewise.
      	* config/m32c/m32c-protos.h: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/xtensa/xtensa.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/mips/mips.c: Likewise.
      
      From-SVN: r138207
      Richard Biener committed
  14. 07 Sep, 2007 1 commit
  15. 27 Aug, 2007 1 commit
    • alias.c (memory_modified_1, [...]): Constify. · 9678086d
      	* alias.c (memory_modified_1, memory_modified_in_insn_p):
      	Constify.
      	* basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
      	Likewise.
      	* bb-reorder.c (copy_bb_p): Likewise.
      	* cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
      	predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
      	block_ends_with_condjump_p): Likewise.
      	* cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
      	predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
      	block_ends_with_condjump_p): Likewise.
      	* cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
      	* cfgrtl.c (can_delete_note_p, can_delete_label_p,
      	rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
      	rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
      	need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
      	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
      	debug_true_const_tree instad of debug_true_tree.
      	* debug.c (do_nothing_debug_hooks): Likewise.
      	* debug.h (ignore_block, debug_true_const_tree): Constify.
      	* dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
      	dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
      	decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
      	same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
      	dbx_reg_number, is_based_loc, field_type,
      	simple_type_align_in_bits, simple_decl_align_in_bits,
      	simple_type_size_in_bits, field_byte_offset, insert_float,
      	type_tag, member_declared_type, is_redundant_typedef,
      	secname_for_decl, is_inlined_entry_point): Likewise.
      	* emit-rtl.c (const_next_insn, const_previous_insn,
      	const_next_nonnote_insn, const_prev_nonnote_insn,
      	const_next_real_insn, const_prev_real_insn,
      	const_next_active_insn, const_prev_active_insn, const_next_label,
      	const_prev_label): Likewise.
      	* except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
      	Likewise.
      	* haifa-sched.c (may_trap_exp, haifa_classify_insn,
      	find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
      	sched_insn_is_legitimate_for_speculation_p): Likewise.
      	* jump.c (reversed_comparison_code_parts,
      	reversed_comparison_code, reversed_comparison, condjump_label):
      	Likewise.
      	* predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
      	* reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
      	Likewise.
      	* rtl.h (const_previous_insn, const_next_insn,
      	const_prev_nonnote_insn, const_next_nonnote_insn,
      	const_prev_real_insn, const_next_real_insn,
      	const_prev_active_insn, const_next_active_insn, const_prev_label,
      	const_next_label, modified_between_p, modified_in_p,
      	const_note_storeskeep_with_call_p, condjump_label,
      	reversed_comparison, reversed_comparison_code,
      	reversed_comparison_code_parts, memory_modified_in_insn_p,
      	stack_regs_mentioned): Likewise.
      	* rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
      	keep_with_call_p): Likewise.
      	* sched-deps.c (deps_may_trap_p, sched_get_condition,
      	conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
      	sd_lists_size, sd_lists_empty_p): Likewise.
      	* sched-int.h (sched_insns_conditions_mutex_p,
      	haifa_classify_insn, no_real_insns_p,
      	sched_insn_is_legitimate_for_speculation_p, sd_next_list,
      	sd_lists_size, sd_lists_empty_p): Likewise.
      	* sdbout.c (sdb_debug_hooks): Likewise.
      	* tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
      	stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
      	-tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
      	Likewise.
      	* tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
      	tree_can_throw_internal): Likewise.
      	* tree-flow-inline.h (phi_nodes): Likewise.
      	* tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
      	tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
      	* tree-gimple.c (const_get_call_expr_in): Likewise.
      	* tree-gimple.h (const_get_call_expr_in): Likewise.
      	* tree.c (const_lookup_attribute, attribute_list_equal,
      	attribute_list_contained): Likewise.
      	* tree.h (attribute_list_equal, attribute_list_contained,
      	const_lookup_attribute): Likewise.
      	* vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
      
      From-SVN: r127824
      Kaveh R. Ghazi committed
  16. 26 Jul, 2007 1 commit
  17. 09 Jul, 2007 1 commit
    • cfghooks.c (remove_edge): New function. · 452ba14d
      	* cfghooks.c (remove_edge): New function.
      	(redirect_edge_and_branch, remove_branch, merge_blocks): Updated
      	loop exit rescans.
      	* cfghooks.h (remove_edge): Declare.
      	* cfg.c (remove_edge): Renamed to remove_edge_raw.
      	* basic-block.h (remove_edge): Declaration changed to remove_edge_raw.
      
      From-SVN: r126499
      Zdenek Dvorak committed
  18. 11 Jun, 2007 1 commit
  19. 04 Feb, 2007 1 commit
    • cfgloopmanip.c (loop_delete_branch_edge): Removed. · 14fa2cc0
      	* cfgloopmanip.c (loop_delete_branch_edge): Removed.
      	(remove_path): Use can_remove_branch_p and remove_branch instead
      	of loop_delete_branch_edge.
      	* tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
      	(tree_transform_and_unroll_loop): Remove dead branches immediately.
      	Update profile using scale_dominated_blocks_in_loop.
      	* cfghooks.c (can_remove_branch_p, remove_branch): New functions.
      	* cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
      	(can_remove_branch_p, remove_branch): Declare.
      	* tree-cfg.c (tree_can_remove_branch_p): New function.
      	(tree_cfg_hooks): Add tree_can_remove_branch_p.
      	* cfgrtl.c (rtl_can_remove_branch_p): New function.
      	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
      
      From-SVN: r121583
      Zdenek Dvorak committed
  20. 20 Dec, 2006 1 commit
    • loop-unswitch.c (unswitch_loop): Update arguments of duplicate_loop_to_header_edge call. · ee8c1b05
      	* loop-unswitch.c (unswitch_loop): Update arguments of
      	duplicate_loop_to_header_edge call.
      	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Ditto.
      	* loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
      	unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
      	Ditto.
      	* cfgloopmanip.c (loop_version): Ditto.
      	(duplicate_loop_to_header_edge): Change
      	type of to_remove to VEC(edge), remove n_to_remove argument.
      	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge):
      	Change type of to_remove to VEC(edge), remove n_to_remove argument.
      	(tree_unroll_loop): Update arguments of
      	tree_duplicate_loop_to_header_edge call.
      	* cfghooks.c (cfg_hook_duplicate_loop_to_header_edge):
      	Change type of to_remove to VEC(edge), remove n_to_remove argument.
      	* cfghooks.h (struct cfg_hooks): Type of
      	cfg_hook_duplicate_loop_to_header_edge changed.
      	(cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
      	* cfgloop.h (duplicate_loop_to_header_edge): Ditto.
      	* tree-flow.h (tree_duplicate_loop_to_header_edge): Ditto.
      
      From-SVN: r120074
      Zdenek Dvorak committed
  21. 25 Nov, 2006 1 commit
    • tree-vrp.c (execute_vrp): Do not pass loops structure through arguments. · d73be268
      	* tree-vrp.c (execute_vrp): Do not pass loops structure through
      	arguments.
      	* loop-unswitch.c (unswitch_loops, unswitch_single_loop,
      	unswitch_loop): Ditto.
      	* tree-loop-linear.c (linear_transform_loops): Ditto.
      	* tree-ssa-loop-im.c (determine_lsm, tree_ssa_lim_initialize,
      	tree_ssa_lim): Ditto.
      	* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
      	free_numbers_of_iterations_estimates): Ditto.
      	* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops,
      	tree_unswitch_single_loop, tree_unswitch_loop): Ditto.
      	* cfgloopmanip.c (fix_bb_placement, fix_bb_placements,
      	remove_path, add_loop, loopify, unloop, fix_loop_placements,
      	place_new_loop, duplicate_loop, duplicate_subloops,
      	update_single_exit_for_duplicated_loops, copy_loops_to,
      	duplicate_loop_to_header_edge, create_preheaders,
      	force_single_succ_latches, loop_version, fix_loop_structure):
      	Ditto.
      	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge,
      	tree_unroll_loop): Ditto.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
      	* tree-scalar-evolution.c (select_loops_exit_conditions,
      	scev_initialize, scev_analysis): Ditto.
      	* tree-scalar-evolution.h (scev_initialize): Ditto.
      	* cfghooks.c (cfg_hook_duplicate_loop_to_header_edge): Ditto.
      	* cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
      	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
      	* modulo-sched.c (sms_schedule): Ditto.
      	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
      	* loop-init.c (loop_optimizer_init, rtl_move_loop_invariants,
      	rtl_unswitch, rtl_unroll_and_peel_loops, rtl_doloop): Ditto.
      	* ifcvt.c (if_convert): Ditto.
      	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely,
      	canonicalize_loop_induction_variables,
      	canonicalize_induction_variables,
      	tree_unroll_loops_completely, remove_empty_loops): Ditto.
      	* tree-ssa-loop.c (tree_ssa_loop_init, tree_ssa_loop_im,
      	tree_ssa_loop_unswitch, tree_vectorize, tree_linear_transform,
      	tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
      	tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts,
      	tree_ssa_loop_done): Ditto.
      	* predict.c (predict_loops, tree_estimate_probability, estimate_loops,
      	estimate_bb_frequencies): Ditto.
      	* tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
      	slpeel_tree_peel_loop_to_edge, vectorize_loops): Ditto.
      	* loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
      	decide_unrolling_and_peeling, peel_loop_completely,
      	unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
      	peel_loop_simple, unroll_loop_stupid): Ditto.
      	* loop-doloop.c (doloop_optimize_loops): Ditto.
      	* tree-cfgcleanup.c (cleanup_tree_cfg_loop): Ditto.
      	* loop-invariant.c (move_loop_invariants): Ditto.
      	* tree-ssa-dce.c (tree_ssa_dce_loop): Ditto.
      	* tree-ssa-loop-prefetch.c (loop_prefetch_arrays,
      	tree_ssa_prefetch_arrays): Ditto.
      	* lambda-code.c (gcc_loopnest_to_lambda_loopnest, perfect_nestify):
      	Ditto.
      	* tree-vect-transform.c (vect_do_peeling_for_loop_bound,
      	vect_do_peeling_for_alignment, vect_transform_loop): Ditto.
      	* cfgloop.c (flow_loops_cfg_dump, flow_loops_dump,
      	mark_single_exit_loops, cancel_loop, cancel_loop_tree,
      	verify_loop_structure): Ditto.
      	* tree-flow.h (vectorize_loops, tree_ssa_lim, tree_ssa_unswitch_loops,
      	canonicalize_induction_variables, tree_unroll_loops_completely,
      	tree_ssa_prefetch_arrays, remove_empty_loops, tree_ssa_iv_optimize,
      	estimate_numbers_of_iterations, free_numbers_of_iterations_estimates,
      	tree_duplicate_loop_to_header_edge, tree_ssa_loop_version,
      	tree_unroll_loop, linear_transform_loops): Declaration changed.
      	* basic-block.h: Remove declaration of struct loops.
      	* cfghooks.h (struct cfg_hooks): Change type of
      	cfg_hook_duplicate_loop_to_header_edge.
      	(cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
      	* tree-vectorizer.h (slpeel_tree_peel_loop_to_edge,
      	vect_transform_loop): Declaration changed.
      	* lambda.h (gcc_loopnest_to_lambda_loopnest): Declaration changed.
      	* cfgloop.h (flow_loops_dump, fix_loop_structure,
      	mark_irreducible_loops, mark_single_exit_loops, mark_loop_exit_edges,
      	cancel_loop_tree, create_preheaders, force_single_succ_latches,
      	verify_loop_structure, duplicate_loop, duplicate_loop_to_header_edge,
      	loopify, loop_version, remove_path, unswitch_loops,
      	unroll_and_peel_loops, doloop_optimize_loops, move_loop_invariants):
      	Declaration changed.
      
      From-SVN: r119189
      Zdenek Dvorak committed
  22. 03 Nov, 2006 1 commit
    • tree-dump.c (dump_enable_all): Rename local variable ir_type to avoid name conflicts. · 52bca999
      	* tree-dump.c (dump_enable_all): Rename local variable
      	ir_type to avoid name conflicts.
      	* cfgloopmanip.c (lv_adjust_loop_entry_edge): Check for IR_GIMPLE
      	instead of using ir_type().
      	* profile.c (tree_register_profile_hooks): Likewise.
      	* value-prof.c (tree_register_value_prof_hooks): Likewise.
      	* basic-block.h (struct edge_def): Likewise.
      	* config/arm/arm.c (legitimize_pic_address): Likewise.
      	* coretypes.h (ir_type): New enum of all intermediate languages
      	used in GCC.
      	* cfghooks.c (ir_type): Rename to...
      	(current_ir_type): ...this.  Distinguish between cfgrtl and
      	cfglayout mode when the current IR is RTL.  Return enum ir_type.
      	* cfghooks.h (ir_type): Replace with current_ir_type prototype.
      
      From-SVN: r118465
      Steven Bosscher committed
  23. 18 May, 2006 1 commit
  24. 24 Aug, 2005 1 commit
    • bb-reorder.c (copy_bb, [...]): Add argument to duplicate_block. · b9a66240
      	* bb-reorder.c (copy_bb, duplicate_computed_gotos): Add argument
      	to duplicate_block.
      	* cfghooks.c (duplicate_block): Added position where to place
      	new block as argument.
      	* cfghooks.h (duplicate_block): Declaration changed.
      	* cfglayout.c (copy_bbs): Add argument after.  Pass it to
      	duplicate_block.
      	* cfglayout.h (copy_bbs): Declaration changed.
      	* cfgloop.h (loop_version): Declaration changed.
      	* cfgloopmanip.c (duplicate_loop_to_header_edge): Pass
      	position to copy_bbs.
      	(loop_version): Pass position to duplicate_loop_to_header_edge.
      	Add place_after argument and position new blocks according to
      	it.
      	* modulo-sched.c (sms_schedule): Pass place_after argument
      	to loop_version.
      	* tracer.c (tail_duplicate): Pass argument to duplicate_block.
      	* tree-cfg.c (split_edge_bb_loc): New function.
      	(tree_split_edge, tree_duplicate_sese_region): Use split_edge_bb_loc
      	to determine position of new blocks.
      	* tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass argument
      	to loop_version.
      	* tree-ssa-threadupdate.c (create_block_for_threading): Pass
      	argument to duplicate_block.
      	* tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg):
      	Pass position to copy_bbs.
      
      From-SVN: r103437
      Zdenek Dvorak committed
  25. 25 Jun, 2005 1 commit
  26. 26 May, 2005 1 commit
    • c-common.c, [...]: Fix comment typos. · 0fa2e4df
      	* c-common.c, c-parser.c, cfgbuild.c, cfghooks.c, cfghooks.h,
      	cfgrtl.c, cgraphunit.c, ddg.c, expr.h, gcse.c, ggc-page.c,
      	ggc-zone.c, gimplify.c, ipa-inline.c, longlong.h, targhooks.c,
      	tree-flow-inline.h, tree-pass.h, tree-ssa-dse.c,
      	tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c,
      	tree-ssa-operands.c, tree-vect-analyze.c,
      	tree-vect-transform.c, tree-vectorizer.c, tree.c,
      	config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
      	config/frv/frv.md, config/i386/i386.c, config/i386/sse.md,
      	config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
      	config/mcore/mcore.c, config/mips/mips.c, config/mips/mips.md,
      	config/rs6000/darwin-ldouble.c, config/rs6000/rs6000.c,
      	config/rs6000/rs6000.h, config/sh/sh.c, config/sh/sh.md,
      	config/sh/ushmedia.h, config/sparc/sparc.c,
      	config/sparc/sparc.md, config/stormy16/stormy-abi: Fix comment
      	typos.  Follow spelling conventions.
      	* doc/invoke.texi, doc/tm.texi, doc/tree-ssa.texi: Fix typos.
      	Follow spelling conventions.
      
      From-SVN: r100218
      Kazu Hirata committed
  27. 28 Apr, 2005 1 commit
    • attribs.c, [...]: Update copyright. · fe9565ed
      	* attribs.c, c-pragma.c, caller-save.c, cfghooks.h,
      	coverage.c, cselib.h, domwalk.c, domwalk.h, errors.c,
      	errors.h, gcov-dump.c, gcov-io.c, gcov-io.h, gen-protos.c,
      	genattrtab.h, genextract.c, gthr-win32.h, insn-notes.def,
      	integrate.c, lambda-mat.c, lambda.h, libgcov.c, local-alloc.c,
      	machmode.def, mips-tfile.c, params.c, pretty-print.c,
      	print-rtl.c, protoize.c, regmove.c, sched-vis.c, tree-chrec.h,
      	tree-data-ref.h, vec.h, config/darwin-c.c, config/sol2-c.c,
      	config/sol2.c, config/arm/arm-cores.def, config/arm/cirrus.md,
      	config/arm/symbian.h, config/c4x/c4x.c, config/c4x/c4x.h,
      	config/i386/cygming.h, config/i386/djgpp.h,
      	config/i386/lynx.h, config/i386/netware.c,
      	config/i386/winnt.c, config/ia64/ia64-c.c,
      	config/iq2000/iq2000.c, config/m32r/little.h,
      	config/m68k/m68k-protos.h, config/m68k/m68k.h,
      	config/m68k/m68k.md, config/mcore/mcore.c,
      	config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.md,
      	config/mn10300/mn10300-protos.h, config/mn10300/mn10300.c,
      	config/mn10300/mn10300.h, config/ns32k/netbsd.h,
      	config/ns32k/ns32k.c, config/ns32k/ns32k.h,
      	config/pa/pa-hpux11.h, config/pdp11/pdp11.c,
      	config/pdp11/pdp11.h, config/rs6000/darwin.h,
      	config/rs6000/default64.h, config/rs6000/rs6000-c.c,
      	config/s390/2064.md, config/s390/2084.md,
      	config/s390/s390-modes.def, config/s390/s390-protos.h,
      	config/s390/tpf.h, config/sh/sh.h, config/sh/symbian.c,
      	config/stormy16/stormy16.c, config/vax/vax-protos.h,
      	config/vax/vax.c, config/vax/vax.h,
      	config/xtensa/lib1funcs.asm, config/xtensa/xtensa.md: Update
      	copyright.
      
      From-SVN: r98914
      Kazu Hirata committed
  28. 21 Apr, 2005 1 commit
    • lambda.h (lambda_vector_min_nz): Likewise. · 0e61db61
      	* lambda.h (lambda_vector_min_nz): Likewise.
      	* langhooks.h (struct lang_hooks_for_types,
      	struct lang_hooks): Likewise.
      	* output.h (assemble_integer, this_is_asm_operands): Likewise.
      	* tree.h: Likewise.
      	* vec.h: Likewise.
      	* tree-flow-inline.h (relink_imm_use): Use gcc_assert.
      
      	* optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword
      	comments to avoid 'abort'.  Use gcc_assert as necessary.
      	* opts.c (common_handle_option): Likewise.
      	* pretty-print.c (pp_base_format_text): Likewise.
      	* print-rtl.c (print_rtx): Likewise.
      	* read-rtl.c (read_rtx_filename, read_rtx_1): Likewise.
      	* regmove.c (try_auto_increment): Likewise.
      	* reload.c (find_valid_class, find_reloads_toplev,
      	find_equiv_reg): Likewise.
      	* reload1.c (reload, forget_old_reloads_1, function_invariant_p,
      	merge_assigned_reloads): Likewise.
      	* tree-inline.c (inline_forbidden_p_1,
      	estimate_num_insns_1): Likewise.
      	* tree-optimize.c (execute_todo): Likewise.
      	* tree-outof-ssa.c (eliminate_phi): Likewise.
      	* tree-ssa-alias.c (add_pointed_to_expr): Likewise.
      	* tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise.
      	* tree-ssa-operands.c (parse_ssa_operands,
      	get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise.
      	* tree-ssa-pre.c (find_or_generate_expression): Likewise.
      	* tree-ssanames.c (release_ssa_name): Likewise.
      	* tree.c (int_bit_position, int_byte_position, tree_low_cst,
      	walk_tree): Likewise.
      
      	* tree-ssa-operands.c (verify_abort): Fold into ..
      	(verify_imm_links): ... here.
      
      From-SVN: r98519
      Nathan Sidwell committed
  29. 03 Apr, 2005 1 commit
    • cfghooks.c (lv_flush_pending_stmts, [...]): New. · 1cb7dfc3
      2005-03-30 Mostafa Hagog <mustafa@il.ibm.com>
      
              * cfghooks.c (lv_flush_pending_stmts,
              cfg_hook_duplicate_loop_to_header_edge, extract_cond_bb_edges,
              lv_adjust_loop_header_phi, lv_add_condition_to_bb): New.
              * cfghooks.h (cfg_hook_duplicate_loop_to_header_edge,
              lv_add_condition_to_bb,
              lv_adjust_loop_header_phi, extract_cond_bb_edges,
              flush_pending_stmts): New in cfg_hooks structure.
              (cfg_hook_duplicate_loop_to_header_edge, lv_flush_pending_stmts,
              extract_cond_bb_edges, lv_adjust_loop_header_phi,
              lv_add_condition_to_bb): New declarations.
              * cfgloop.h (duplicate_loop_to_header_edge): Change return type to
              bool.
              (loop_version): Declare.
              * cfgloopmanip.c (cfghooks.h): Include.
              (duplicate_loop_to_header_edge): Change return type to bool.
              (loop_version, lv_adjust_loop_entry_edge): Move here.
              * cfgrtl.c (cfgloop.h): Include.
              (rtl_verify_flow_info_1): Fix.
              (rtl_lv_add_condition_to_bb, rtl_extract_cond_bb_edges): New.
              (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add hooks to
              initialization.
              * tree-cfg.c (tree_lv_adjust_loop_header_phi,
              tree_lv_add_condition_to_bb): New.
              (tree_cfg_hooks): Add new hooks to initialization.
              * tree-ssa-loop-manip.c (lv_adjust_loop_header_phi,
              lv_adjust_loop_entry_edge, tree_ssa_loop_version): Remove.
      
      From-SVN: r97481
      Mostafa Hagog committed
  30. 22 Nov, 2004 1 commit
    • cfg.c (unchecked_make_edge): Call execute_on_growing_pred after making an edge. · d9d4706f
      	* cfg.c (unchecked_make_edge): Call execute_on_growing_pred
      	after making an edge.
      	(remove_edge): Call execute_on_shrinking_pred before removing
      	an edge.
      	(redirect_edge_succ): Call execute_on_growing_pred and
      	execute_on_shrinking_pred.
      	* cfghooks.c (execute_on_growing_pred): New.
      	(execute_on_shrinking_pred): Likewise.
      	* cfghooks.h (cfg_hooks): Add execute_on_growing_pred and
      	execute_on_shrinking_pred.
      	Add prototypes for execute_on_growing_pred and
      	execute_on_shrinking_pred.
      	* cfgrtl.c (rtl_cfg_hooks): Add NULL hooks to
      	execute_on_growing_pred and execute_on_shrinking_pred.
      	(cfg_layout_rtl_cfg_hook): Likewise.
      	* tree-cfg.c (tree_cfg_hooks): Likewise.
      
      From-SVN: r91035
      Kazu Hirata committed
  31. 13 May, 2004 1 commit
  32. 31 Jan, 2004 1 commit
    • alloc-pool.c, c-lex.c, c-pragma.h, c-semantics.c, cfghooks.c, · 283334f0
      	cfghooks.h, cfglayout.c, cfgloopmanip.c, debug.c, debug.h,
      	flow.c, genextract.c, ggc-common.c, ggc-page.c, ggc.h,
      	ifcvt.c, jump.c, loop-unswitch.c, timevar.c, timevar.def,
      	tree-optimize.c, vmsdbgout.c, config/fp-bit.c,
      	config/alpha/alpha.c, config/alpha/alpha.h,
      	config/alpha/alpha.md, config/alpha/unicosmk.h,
      	config/alpha/vms.h, config/arm/linux-elf.h, config/avr/avr.c,
      	config/c4x/c4x-protos.h, config/c4x/c4x.md,
      	config/d30v/d30v.h, config/frv/frv.md, config/frv/frvbegin.c,
      	config/frv/frvend.c, config/i386/cygming.h,
      	config/i386/djgpp.h, config/i386/emmintrin.h,
      	config/i386/gthr-win32.c, config/i386/i386-interix.h,
      	config/i386/i386-protos.h, config/i386/openbsd.h,
      	config/i386/winnt.c, config/i386/xm-mingw32.h,
      	config/i386/xmmintrin.h, config/ia64/ia64.md,
      	config/iq2000/iq2000.md, config/m32r/m32r.md,
      	config/m68k/m68k.md, config/mcore/mcore-elf.h,
      	config/mcore/mcore.md, config/mips/elf.h, config/mips/elf64.h,
      	config/mips/iris5gas.h, config/mips/iris6.h,
      	config/mips/iris6gas.h, config/mips/linux.h,
      	config/mips/mips.md, config/mips/netbsd.h,
      	config/mips/openbsd.h, config/mips/windiss.h,
      	config/pa/fptr.c, config/rs6000/aix.h,
      	config/rs6000/altivec.h, config/rs6000/darwin.h,
      	config/rs6000/xcoff.h, config/s390/s390-protos.h,
      	config/s390/s390.c, config/s390/s390.h, config/s390/s390.md,
      	config/sh/netbsd-elf.h, config/sh/sh.h, config/sh/vxworks.h,
      	config/sparc/sol2.h: Update copyright.
      
      From-SVN: r77018
      Kazu Hirata committed
  33. 29 Jan, 2004 1 commit
    • Makefile.in (cfghooks.o): Add TIMEVAR_H and toplev.h dependency. · f470c378
      	* Makefile.in (cfghooks.o): Add TIMEVAR_H and toplev.h dependency.
      	* basic-block.h (tidy_fallthru_edge, tidy_fallthru_edges, dump_bb,
      	verify_flow_info): Declaration removed.
      	* cfg.c (verify_flow_info, dump_bb): Moved to cfghooks.c.
      	(debug_bb, debug_bb_n): Add argument to dump_bb call.
      	* cfgcleanup.c (try_simplify_condjump, try_crossjump_to_edge,
      	try_optimize_cfg, delete_unreachable_blocks): Use delete_basic_block
      	instead of delete_block.
      	* cfghooks.c: Include timevar.h and toplev.h.
      	(cfg_hooks): Define here.
      	(verify_flow_info, dump_bb): Moved from cfg.c.
      	(redirect_edge_and_branch, redirect_edge_and_branch_force,
      	split_block, split_block_after_labels, move_block_after,
      	delete_basic_block, split_edge, create_basic_block,
      	create_empty_bb, can_merge_blocks_p, merge_blocks,
      	make_forwarder_block, tidy_fallthru_edge, tidy_fallthru_edges):
      	New functions.
      	* cfghooks.h (struct cfg_hooks): Added fields name,
      	make_forwarder_block, tidy_fallthru_edge and
      	move_block_after. Changed type of verify_flow_info, dump_bb,
      	split_block fields. Renamed cfgh_split_edge and delete_block
      	fields.
      	(redirect_edge_and_branch, redirect_edge_and_branch_force,
      	split_block, delete_block, split_edge, create_basic_block,
      	can_merge_blocks_p, merge_blocks): Macros removed.
      	(cfg_hooks): Do not export.
      	(verify_flow_info, dump_bb, redirect_edge_and_branch,
      	redirect_edge_and_branch_force, split_block, split_block_after_labels,
      	move_block_after, delete_basic_block, split_edge, create_basic_block,
      	create_empty_bb, can_merge_blocks_p, merge_blocks,
      	make_forwarder_block, tidy_fallthru_edge, tidy_fallthru_edges):
      	Declare.
      	(cfg_layout_rtl_cfg_hooks): Declare.
      	* cfgloop.c (update_latch_info, mfb_keep_just, mfb_keep_nonlatch):
      	New functions.
      	(canonicalize_loop_headers): Use new semantics of make_forwarder_block.
      	(redirect_edge_with_latch_update): Removed.
      	(make_forwarder_block): Moved to cfghooks.c, semantics changed.
      	* cfgloopmanip.c (remove_bbs): Do not update dominators here.
      	* cfgrtl.c (cfg_layout_split_block, rtl_split_block, rtl_dump_bb,
      	rtl_delete_block, rtl_split_block, rtl_merge_blocks,
      	tidy_fallthru_edge, rtl_split_edge, cfg_layout_delete_block,
      	cfg_layout_merge_blocks, cfg_layout_split_edge): Partly moved to
      	cfghooks.c.
      	(rtl_create_basic_block): Coding style fix.
      	(rtl_tidy_fallthru_edge, rtl_move_block_after,
      	rtl_make_forwarder_block): New functions.
      	(update_cfg_after_block_merging): Removed.
      	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Fill in new entries.
      	* flow.c (verify_wide_reg, verify_local_live_at_start): Add argument
      	to dump_bb.
      	* ifcvt.c (merge_if_block, find_cond_trap, find_if_case_1,
      	find_if_case_2): Don't update dominators.
      	* timevar.def (TV_CFG_VERIFY): New.
      	* loop-unswitch.c (unswitch_loop): Don't call add_to_dominance_info.
      	* cfglayout.c (copy_bbs): Don't call add_to_dominance_info.
      	* cfgloopmanip.c (split_loop_bb): Don't update dominators.
      	(remove_bbs): Don't call remove_bbs.
      	(create_preheader): Use make_forwarder_block.
      	(mfb_keep_just, mfb_update_loops): New static functions.
      
      From-SVN: r76851
      Zdenek Dvorak committed
  34. 21 Dec, 2003 1 commit
    • alias.c: Fix comment formatting. · 6614fd40
      	* alias.c: Fix comment formatting.
      	* alloc-pool.c: Likewise.
      	* bitmap.c: Likewise.
      	* bitmap.h: Likewise.
      	* bt-load.c: Likewise.
      	* c-common.c: Likewise.
      	* c-common.h: Likewise.
      	* c-decl.c: Likewise.
      	* c-opts.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* caller-save.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cgraph.c: Likewise.
      	* collect2.c: Likewise.
      	* cppfiles.c: Likewise.
      	* cpplib.h: Likewise.
      	* dwarf2out.c: Likewise.
      	* dwarfout.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* final.c: Likewise.
      	* function.c: Likewise.
      	* gcov.c: Likewise.
      	* gcse.c: Likewise.
      	* genemit.c: Likewise.
      	* ggc.h: Likewise.
      	* haifa-sched.c: Likewise.
      	* ifcvt.c: Likewise.
      	* libgcc2.h: Likewise.
      	* loop.c: Likewise.
      	* predict.h: Likewise.
      	* unwind-libunwind.c: Likewise.
      	* varasm.c: Likewise.
      
      From-SVN: r74907
      Kazu Hirata committed
  35. 06 Jul, 2003 1 commit
    • basic-block.h: Convert prototypes to ISO C90. · f55ade6e
      	* basic-block.h: Convert prototypes to ISO C90.
      	* c-parse.in: Likewise.
      	* c-pragma.h: Likewise.
      	* c-typeck.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfgloopanal.c: Likewise.
      	* dbxout.h: Likewise.
      	* debug.h: Likewise.
      	* dwarf2asm.h: Likewise.
      	* gcov.c: Likewise.
      	* gengtype-lex.l: Likewise.
      	* sched-int.h: Likewise.
      	* timevar.c: Likewise.
      
      From-SVN: r69010
      Andreas Jaeger committed
  36. 03 Jul, 2003 1 commit
    • basic-block.h (create_basic_block, [...]): Kill. · bc35512f
      	* basic-block.h (create_basic_block, merge_blocks_nomove): Kill.
      	* cfgcleanup.c (merge_blocks): Rename to merge_blocks_move.
      	(merge_blocks_move_predecessor_nojumps,
      	 merge_blocks_move_successor_nojumps): Use merge_blocks.
      	(try_optimize_cfg): Use merge_blocks_move.
      	* cfgrtl.c (create_basic_block): Rename to rtl_create_basic_block.
      	(merge_blocks_nomove): Rename to rtl_merge_blocks.
      	(cfg_layout_create_basic_block): New.
      	(rtl_can_merge_blocks): New.
      	(cfg_layout_split_block): Do not alloc aux by hand.
      	* cfghooks.h (cfg_hooks): Add create_basic_block, can_merge_blocks_p,
      	merge_blocks.
      	(create_basic_block, can_merge_blocks_p, merge_blocks): New macros.
      	* cfglayout.c (cfg_layout_duplicate_bb): Do not allocate aux by hand.
      	* cfgloopmanip.c (loop_split_edge_with): Likewise.
      	* ifcvt.c (merge_if_block): Use merge_blocks_nomove.
      
      	* basic-block.h (basic_block_def): Add field 'rbi'.
      	* bb-reorder.c (find_traces, rotate_loop, mark_bb_visited,
      	find_traces_1_round, copy_bb, connect_traces): Update use of rbi.
      	* cfg.c (entry_exit_blocks): Add new field.
      	* cfglayout.c: Include alloc-pool.h;
      	(cfg_layout_pool): New.
      	(record_effective_endpoints, fixup_reorder_chain,
      	fixup_fallthru_exit_predecessor, cfg_layout_duplicate_bb): Update use
      	of rbi.
      	(cfg_layout_initialize_rbi): New function.
      	(cfg_layout_initialize): Use it.
      	(cfg_layout_finalize): Clear rbi fields.
      	* cfglayout.h (RBI): Kill.
      	(cfg_layout_initialize_rbi): Declare.
      	* cfgloopmanip.c (copy_bbs): Use rbi.
      	(record_exit_edges): Likewise.
      	(duplicate_loop_to_header_edge): Likewise.
      	* cfgrtl.c (cfg_layout_create_basic_block): Use
      	cfg_layout_initialize_rbi.
      	(cfg_layout_split_block): Use rbi.
      	(cfg_layout_delete_block): Likewise.
      	* loop-init.c (loop_optimizer_finalize): Likewise.
      	* loop-unswitch.c (unswitch_loop): Likewise.
      	* tracer.c (seen, tail_duplicate, layout_superblocks): Likewise.
      
      	* cfgrtl.c: Update comments.
      	(try_redirect_by_replacing_jump): New argument.
      	(redirect_branch_edge): Break out from ...
      	(rtl_redirect_edge_and_branch): ... this one.
      	(update_cfg_after_block_merging): Break out from ...
      	(rtl_merge_blocks): ... this one.
      	(cfg_layout_split_edge): New.
      	(cfg_layout_merge_blocks): New.
      	(cfg_layout_can_merge_blocks_p): New.
      	(cfg_layout_redirect_edge_and_branch): Reorganize.
      	(cfg_layout_rtl_cfg_hooks): Fill in.
      	(cfg_layout_delete_block): Kill barriers.
      	* cfganal.c (can_fallthru): Deal with exit blocks
      	* cfglayout.c (cfg_layout_function_header): New function
      	(record_effective_endpoints): Record function header.
      	(fixup_reorder_chain): Fixup dead jumptables; place header
      
      	* basic-block.h (CLEANUP_CFGLAYOUT): New flag.
      	* bb-reorder.c (cfg_layout_initialize): Update call.
      	* cfgcleanup.c (try_optimize_cfg): Supress optimizations of fallthru
      	edges in cfglayout mode.
      	* cfglayout.c (cleanup_unconditional_jumps): Kill.
      	(cfg_layout_initialize): Kill agrument loops; use cfgcleanup.
      	* cfglayout.h (cfg_layout_initialize): Update prototype.
      	* cfgloop.h (CP_INSIDE_CFGLAYOUT): Kill.
      	* cfgloopmanip.c (loop_split_edge_with): Use split_edge.
      	* flow.c (propagate_block): Do not crash when basic block ends
      	by first insn in the chain.
      	* loop-init.c (loop_optimizer_init):  First enter cfglayout mode; later
      	do loop discovery.
      	* tracer.c (tracer): Update call of cfg_layout_initialize.
      
      From-SVN: r68899
      Jan Hubicka committed
  37. 01 Jul, 2003 1 commit
    • basic-block.h: Fix comment typos. · e0bb17a8
      	* basic-block.h: Fix comment typos.
      	* bb-reorder.c: Likewise.
      	* c-format.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphunit.c: Likewise.
      	* combine.c: Likewise.
      	* convert.c: Likewise.
      	* dbxout.c: Likewise.
      	* df.c: Likewise.
      	* df.h: Likewise.
      	* diagnostic.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* et-forest.h: Likewise.
      	* flow.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.h: Likewise.
      	* gcov-io.h: Likewise.
      	* gcov.c: Likewise.
      	* gcse.c: Likewise.
      	* genautomata.c: Likewise.
      	* ggc-common.c: Likewise.
      	* ggc-page.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* loop-unswitch.c: Likewise.
      	* loop.c: Likewise.
      	* mips-tfile.c: Likewise.
      	* optabs.c: Likewise.
      	* ra-build.c: Likewise.
      	* ra-colorize.c: Likewise.
      	* ra-rewrite.c: Likewise.
      	* ra.h: Likewise.
      	* regmove.c: Likewise.
      	* reload.c: Likewise.
      	* rtlanal.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-int.h: Likewise.
      	* sched-vis.c: Likewise.
      	* sreal.c: Likewise.
      	* ssa-ccp.c: Likewise.
      	* ssa.c: Likewise.
      	* toplev.c: Likewise.
      	* tree-inline.c: Likewise.
      	* value-prof.c: Likewise.
      	* value-prof.h: Likewise.
      
      From-SVN: r68770
      Kazu Hirata committed
  38. 22 Jun, 2003 1 commit
    • caller-save.c: Convert to ISO C90. · d329e058
      	* caller-save.c: Convert to ISO C90.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgbuild.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfglayout.c: Likewise.
      	* cfglayout.h: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopanal.c: Likewise.
      	* cfgloopmainip.c: Likewise.
      	* cfgrtl.c: Likewise.
      
      From-SVN: r68331
      Andreas Jaeger committed
  39. 08 Jun, 2003 1 commit
    • i386.md (subsi_3_zext, [...]): Fix predicates. · 10e9fecc
      	* i386.md (subsi_3_zext, sse2_nandv2di3): Fix predicates.
      	* i386.c (k8_avoid_jump_misspredicts): Fix debug output.
      
      	* cfg.c (verify_flow_info): Move IL independent checks from cfgrtl here.
      	(dump_bb): New based on old dump_bb in cfgrtl.c
      	(debug_bb, debug_bb_n): Move the functions from cfgrtl.c here.
      	* cfghooks.h (cfgh_verify_flow_info): Return status.
      	* cfglayout.c (cfg_layout_finalize): Verify CFG correctness.
      	* cfgrtl.c (debug_bb, debug_bb_n): Move to cfg.c
      	(dump_bb): Remove generic parts.
      	(rtl_verify_flow_info_1): Break out from rtl_verify_flow_info.
      	(rtl_verify_flow_info): Only check things dependeing on linearized RTL.
      
      	* i386-cmov1.c: Fix regular expression.
      	* i386-cvt-1.c: Likewise.
      	* i386-local.c: Likewise.
      	* i386-local2.c: Likewise.
      	* i386-mul.c: Likewise.
      	* i386-ssetype-1.c: Likewise.
      	* i386-ssetype-3.c: Likewise.
      	* i386-ssetype-5.c: Likewise.
      
      From-SVN: r67630
      Jan Hubicka committed
  40. 06 Jun, 2003 1 commit
    • function.c (FLOOR_ROUND, CEIL_ROUND): Fix. · 9ee634e3
      	* function.c (FLOOR_ROUND, CEIL_ROUND): Fix.
      	* i386.md (gen_pro_epilogue_adjust_stack): Deal with gigantic stack frames.
      	(pro_epilogue_adjust_stack_rex64_2): New pattern
      
      	* cfghooks.h, cfghooks.c: New files.
      	* Makefile.in (BASIC_BLOCK_H): Depends on cfghooks.h.
      	(OBJS): Add cfghooks.o.
      	(cfghooks.o): New rule.
      	* basic-block.h (split_edge): Rename to rtl_split_edge.
      	(verify_flow_info): Rename to rtl_verify_flow_info.
      	(cfghooks.h): Included here.
      	* cfgrtl.c (split_edge): Renamed rtl_split_edge.
      	(verify_flow_info): Renamed rtl_verify_flow_info.
      	* toplev.c (rest_of_compilation): Call rtl_register_cfg_hooks.
      
      	* basic-block.h (split_block, split_edge, flow_delete_block,
      	redirect_edge_and_branch, redirect_edge_and_branch_force): Delete.
      	(flow_delete_block_noexpunge):  Return void.
      	* cfg.c (verify_flow_info): New function.
      	* cfgcleanup.c (try_simplify_condjump, outgoing_edges_match,
      	try_crossjump_to_edge, try_optimize_cfg, delete_unreachable_blocks):
      	Use delete_block.
      	* cfglayout.c (function_footer): Rename to...
      	(cfg_layout_function_footer): ... this variable
      	(unlink_insn_chain): Make global.
      	(fixup_reorder_chain, record_effective_endpoints): Update.
      	(cleanup_unconditional_jumps): Use delete_block.
      	(cfg_layout_redirect_edge, cfg_layout_split_block): Move to cfgrtl.c
      	(cfg_layout_duplicate_bb): Use redirect_edge_and_branch_force.
      	(cfg_layout_initialize, cfg_layout_finalize): Update hooks.
      	* cfglayout.h (cfg_layout_redirect_edge, cfg_layout_split_block):  Delete.
      	(cfg_layout_function_footer): Declare.
      	* cfgloopmanip (split_loop_bb): Do not update RBI.
      	(remove_bbs): Use delete_block.
      	(loop_reidrect_edge, loop_delete_branch_edge): Use
      	redirect_edge_and_branch.
      	(create_preheader): Use split_block and redirect_edge_and_branch_force.
      	(split_edge_with): Likewise.
      	* cfgrtl.c: Include cfglayout.h
      	(split_edge): Rename to ...
      	(rtl_split_edge) ... this one; make local.
      	(redirect_edge_and_branch): Rename to ...
      	(rtl_redirect_edge_and_branch) ... this one; make local.
      	(redirect_edge_and_branch_force): Rename to ...
      	(rtl_redirect_edge_and_branch_force) ... this one; make local.
      	(cfg_layout_delete_block, cfg_layout_delete_edge_and_branch_force): New.
      	(cfg_layout_redirect_edge_and_branch, cfg_layout_split_block): Move here from
      	cfglayout.c; update to directly call RTL counterparts.
      	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): New functions.
      	* ifcvt.c (find_cond_trap): Use delete_block.
      	(find_if_case_1): Use delete_block.
      	(find_if_case_2): Use delete_block.
      	* rtl.h (unlink_insn_chain): Declare.
      	* toplev.c (rtl_reigster_cfg_hooks): New.
      
      From-SVN: r67535
      Jan Hubicka committed