1. 03 Jun, 2005 1 commit
  2. 12 May, 2005 1 commit
    • basic-block.h (FOR_ALL_BB_FN): New macro. · a930a4ef
      	* basic-block.h (FOR_ALL_BB_FN): New macro.
      	(init_flow): Initialize cfg structure.
      	* function.c (allocate_struct_function): Do not initialize cfg structure.
      	* tree-cfg.c (init_empty_tree_cfg): Break out from ...
      	(build_tree_cfg): ... here.
      	* tree-flow.h (init_empty_tree_cfg): Declare.
      
      From-SVN: r99633
      Jan Hubicka committed
  3. 03 May, 2005 1 commit
  4. 21 Apr, 2005 2 commits
    • alias.c (true_dependence): Remove 'abort' from comments. · 41806d92
      	* alias.c (true_dependence): Remove 'abort' from comments. Use
      	gcc_assert and gcc_unreachable as appropriate.
      	(canon_true_dependence): Likewise.
      	* bb-reorder.c (connect_traces): Likewise.
      	* c-common.c (c_add_case_label): Likewise.
      	* c-decl.c (finish_function): Likewise.
      	* caller-save.c (insert_restore, insert_save): Likewise.
      	* cfg.c (update_bb_profile_for_threading): Likewise.
      	* cfganal.c (flow_active_insn_p): Likewise.
      	* cfgexpand.c (add_reg_br_prob_note): Likewise.
      	* cfgrtl.c (rtl_redirect_edge_and_branch_force, rtl_split_edge,
      	cfg_layout_merge_blocks): Likewise.
      	* ifcvt.c (cond_exec_process_insns, merge_if_block,
      	find_if_block): Likewise.
      	* integrate.c (allocate_initial_values): Likewise.
      	* jump.c (reverse_condition, reverse_condition_maybe_unordered,
      	swap_condition, unsigned_condition, signed_condition,
      	mark_jump_label, invert_jump_1, rtx_renumbered_equal_p,
      	reg_or_subregno): Likewise.
      	* lambda-code.c (lambda_compute_auxillary_space,
      	lambda_transform_legal_p): Likewise.
      	* lambda-mat.c (lambda_matrix_inverse_hard): Likewise.
      	* langhooks.c (lhd_set_decl_assembler_name, lhd_type_promotes_to,
      	lhd_incomplete_type_error, lhd_expand_expr,
      	lhd_types_compatible_p, lhd_tree_size): Likewise.
      	* lcm.c (create_pre_exit, optimize_mode_switching): Likewise.
      	* local-alloc.c (update_equiv_regs): Likewise.
      	* loop-unroll.c (peel_loop_completely
      	unroll_loop_constant_iterations, unroll_loop_runtime_iterations,
      	peel_loop_simple, unroll_loop_stupid,
      	analyze_iv_to_split_insn): Likewise.
      	* loop.c (gen_prefetch, find_and_verify_loops,
      	basic_induction_var): Likewise.
      	* modulo-sched.c (normalize_sched_times, check_nodes_order): Likewise.
      	* value-prof.c (tree_find_values_to_profile): Likewise.
      	* varasm.c (named_section, default_assemble_integer,
      	decode_addr_const): Likewise.
      
      From-SVN: r98508
      Nathan Sidwell committed
    • vec.h: Update API to separate allocation mechanism from type. · d4e6fecb
      	* vec.h: Update API to separate allocation mechanism from type.
      	(VEC_safe_grow): New.
      	* vec.c (calculate_allocation): New.
      	(vec_gc_o_reserve, vec_heap_o_reserve): Adjust.
      	(vec_gc_free, vec_heap_free): Remove.
      	* gengtype-lex.l (DEF_VEC_): Process mult-argument macros.  Adjust.
      	(VEC): Likewise.
      	(mangle_macro_name): New.
      	(struct macro_def): New.
      	(struct macro): Add multiple argument values.
      	(macro_expans_end): New.
      	(push_macro_expansion):  Chain on new macro. Process multiple
      	args, create follow on expansion. Return follow on argument.
      	(macro_input): Deal with multiple arguments.
      
      	* tree.h: Define VEC(tree,heap) and VEC(tree,gc).
      	(struct tree_binfo): Adjust.
      	* basic-block.h: Define VEC(edge,gc).
      	(struct edge_def): Adjust.
      	(struct basic_block_def, struct edge_iterator): Likewise.
      	(ei_container, ei_start_1, ei_last_1): Likewise.
      	* cfg.c (connect_src, connect_dest): Likewise.
      	* cfgrtl.c (force_nonfallthru_and_redirect)
      	* dbxout.c (dbxout_type)
      	* dwarf2out.c (gen_member_die)
      	* lambda-code.c: Define VEC(int,gc), VEC(lambda_loop,gc).
      	(gcc_tree_to_linear_expression): Adjust.
      	(gcc_loop_to_lambda_loop, gcc_loopnest_to_lambda_loopnest,
      	lbv_to_gcc_expression, lle_to_gcc_expression,
      	lambda_loopnest_to_gcc_loopnest, can_convert_to_perfect_nest,
      	perfect_nestify): Likewise.
      	* lambda.h (gcc_loopnest_to_lambda_loopnest,
      	lambda_loopnest_to_gcc_loopnest): Adjust prototypes.
      	* profile.c (instrument_values): Adjust.
      	* tree-cfg.c (modified_noreturn_calls): Adjust.
      	(remove_fallthru_edge): Likewise.
      	* tree-dump.c (dequeue_and_dump): Adjust.
      	* tree-flow-inline.h (mark_stmt_modified): Adjust.
      	* tree-flow.h (modified_noreturn_calls): Adjust.
      	(tree_on_heap): Remove. (yay!)
      	(register_new_def): Adjust.
      	* tree-into-ssa.c: Define VEC(int,heap).
      	(block_defs_stack): Adjust.
      	(find_idf, insert_phi_nodes, register_new_def,
      	rewrite_initialize_block, rewrite_finalize_block,
      	register_new_update_single, rewrite_update_init_block,
      	rewrite_update_fini_block, rewrite_blocks,
      	ssa_rewrite_finalize_block, ssa_register_new_def,
      	ssa_rewrite_initialize_block, rewrite_ssa_into_ssa): Likewise.
      	* tree-loop-linear.c (linear_transform_loops): Adjust.
      	* tree-ssa-alias.c: Define VEC(fieldoff_t,heap).
      	(push_fields_onto_fieldstack, create_overlap_variables_for): Adjust.
      	* tree-ssa-dom.c (avail_exprs_stack, block_defs_stack,
      	stmts_to_rescan, const_and_copies_stack, nonzero_vars_stack,
      	vrp_variables_stack): Adjust declarations.
      	(tree_ssa_dominator_optimize): Adjust.
      	(dom_opt_initialize_block, remove_local_expressions_from_table,
      	restore_nonzero_vars_to_original_value,
      	restore_vars_to_original_value,
      	restore_currdefs_to_original_value, dom_opt_finalize_block,
      	record_var_is_nonzero, record_cond, record_const_or_copy_1,
      	optimize_stmt, update_rhs_and_lookup_avail_expr,
      	lookup_avail_expr, record_range): Likewise.
      	* tree-ssa-pre.c: Define VEC(basic_block,heap).
      	(compute_antic_aux): Adjust.
      	(inserted_exprs, create_expression_by_pieces,
      	insert_into_preds_of_block, eliminate, mark_operand_necessary,
      	remove_dead_inserted_code, fini_pre): Likewise.
      	* tree-ssa-propagate.c (interesting_ssa_edges): Adjust.
      	(varying_ssa_edges, add_ssa_edge, process_ssa_edge_worklist.
      	ssa_prop_init): Likewise.
      	* tree-ssa.c: Define VEC(bitmap,heap).
      	(verify_name_tags): Adjust.
      	* value-prof.c (rtl_divmod_values_to_profile): Adjust.
      	(insn_prefetch_values_to_profile, rtl_find_values_to_profile,
      	tree_divmod_values_to_profile, tree_find_values_to_profile,
      	value_profile_transformations): Likewise.
      	* value-prof.h: Define VEC(histogram_value,heap).
      	* varasm.c: Remove alias_pair pointer typedef, define
      	VEC(alias_pair,gc).
      	(finish_aliases_1, finish_aliases_2, assemble_alias): Adjust.
      
      	* config/pa/pa.c (typedef extern_symbol): Typedef the structure,
      	not a pointer to it.  Create an object vector.
      	(extern_symbols): Turn into an object vector.
      	(pa_hpux_asm_output_external, pa_hpux_file_end): Adjust.
      
      	* cp/cp-tree.h: Adjust for new VEC API.
      	Define VEC(tree_pair_s,gc).
      	(struct save_scope): Adjust.
      	(struct lang_type_class): Adjust.
      	(unemitted_tinfo_decls): Adjust.
      	* cp/class.c (add_method, resort_type_method_vec,
      	finish_struct_methods, struct find_final_overrider_data,
      	dfs_find_final_overrider_pre, find_final_overrider,
      	get_vcall_index, warn_hidden, walk_subobject_offsets,
      	check_methods, fixup_inline_methods, end_of_class,
      	warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
      	add_vcall_offset): Adjust.
      	* cp/decl.c (xref_basetypes, finish_method): Adjust.
      	* cp/decl2.c (check_classfn): Adjust.
      	* cp/init.c (sort_mem_initializers, push_base_cleanups): Adjust.
      	* cp/method.c (do_build_copy_constructor): Adjust.
      	* cp/name-lookup.c (new_class_binding, store_binding,
      	store_bindings, store_class_bindings): Adjust.
      	* cp/name-lookup.h: Define VEC(cxx_saved_binding,gc),
      	VEC(cp_class_binding,gc).
      	(struct cp_binding_level): Adjust.
      	* cp/parser.c: Define VEC(cp_token_position,heap).
      	(struct cp_lexer): Adjust.
      	(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
      	cp_lexer_save_tokens): Adjust.
      	* cp/pt.c (retrieve_specialization,
      	check_explicit_specialization): Adjust.
      	* cp/rtti.c (unemitted_tinfo_decls): Adjust.
      	(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
      	get_pseudo_ti_desc): Adjust.
      	* cp/search.c (dfs_access_in_type, lookup_conversion_operator,
      	lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
      	dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
      	* cp/semantics.c: Define VEC(deferred_access,gc).
      	(push_deferring_access_checks): Adjust.
      	* cp/typeck2.c (abstract_virtuals_error): Adjust.
      
      From-SVN: r98498
      Nathan Sidwell committed
  5. 12 Apr, 2005 1 commit
    • Makefile.in: Add function.h to BASIC_BLOCK_H. · 997de8ed
      	* Makefile.in: Add function.h to BASIC_BLOCK_H.  Remove all
      	references to gt-tree-cfg.h.
      	* basic-block.h (struct basic_block_def): Don't skip rbi
      	for garbage collection.
      	(struct reorder_block_def): Make GTY-able.
      	(struct control_flow_graph): New structure.
      	(n_edges, n_basic_blocks, last_basic_block, basic_block_info,
      	BASIC_BLOCK, EXIT_BLOCK_PTR, ENTRY_BLOCK_PTR): No longer vars,
      	but instead defines to the control_flow_graph for cfun.
      	(label_to_block_map): New define, points to the label map of
      	the control_flow_graph for cfun.
      	(n_edges_for_function, n_basic_blocks_for_function,
      	last_basic_block_for_function, basic_block_info_for_function,
      	EXIT_BLOCK_PTR_FOR_FUNCTION, ENTRY_BLOCK_PTR_FOR_FUNCTION,
      	basic_block_info_for_function, label_to_block_map_for_function):
      	Counterparts for the above, taking a struct function as an extra
      	argument.
      	(alloc_rbi_pool, free_rbi_pool): Remove prototypes.
      	* cfg.c: (n_edges, n_basic_blocks, last_basic_block,
      	basic_block_info, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Remove.
      	(alloc_rbi_pool, free_rbi_pool): Remove.
      	(initialize_bb_rbi): Use ggc_alloc_cleared instead of pool_alloc.
      	* cfglayout.c: (cfg_layout_initialize): Don't allocate the rbi pool
      	here...
      	(cfg_layout_finalize) ... and don't free it here.
      	* cfgrtl.c (cfg_layout_delete_block): Zero out rbi so it gets
      	garbage collected.
      	* flow.c (free_basic_block_vars): Set label_to_block_map and
      	n_edges to zero too.
      	* function.h (struct function): Add cfg field.
      	* function.c (allocate_struct_function): Allocate the cfg.
      	* tree-cfg.c (label_to_block_map): Remove.
      	(build_tree_cfg): Don't allocate the rbi pool here...
      	(delete_tree_cfg_annotations): ...and don't free it here.
      	Also don't nullify label_to_block_map for cfun.
      
      Co-Authored-By: Jan Hubicka <jh@suse.cz>
      Co-Authored-By: Stuart Hastings <stuart@apple.com>
      
      From-SVN: r98048
      Steven Bosscher committed
  6. 03 Apr, 2005 1 commit
    • cfg.c (clear_bb_flags): Don't clear BB_DISABLE_SCHEDULE. · f73d5666
      2005-03-31 Mostafa Hagog <mustafa@il.ibm.com>
      
              * cfg.c (clear_bb_flags): Don't clear BB_DISABLE_SCHEDULE.
              * modulo-sched.c (undo_replace_buff_elem): New structure.
              (kernel_number_of_cycles, ps_unschedule_node,
              undo_generate_reg_moves,free_undo_replace_buff,
              undo_permute_partial_schedule,  loop_single_full_bb_p,
              SIMPLE_SMS_LOOP_P, loop_canon_p, canon_loop,
              build_loops_structure, get_sched_window): New.
              (generate_reg_moves): Return undo_replace_buff_elem and other
              fixes.
              (generate_prolog_epilog): Remove old loop versioning.
              (sms_schedule): Use loop information and loop_version.
              (sms_schedule_by_order): Split part of it to get_sched_window.
              * passes.c (rest_of_handle_sms): call cfg_layout_initialize
              cfg_layout_finalize and free_dominance_info before/after SMS.
      
      From-SVN: r97484
      Mostafa Hagog committed
  7. 18 Mar, 2005 1 commit
    • basic-block.h (scale_bbs_frequencies_int, [...]): Declare. · 33156717
      	* basic-block.h (scale_bbs_frequencies_int,
      	scale_bbs_frequencies_gcov_type): Declare.
      	* cfg.c (RDIV): New macro.
      	(update_bb_frequency_for_threading): Fix.
      	* basic-block.h (scale_bbs_frequencies_int,
      	scale_bbs_frequencies_gcov_type): New.
      	* cfgloopmanip.c (scale_bbs_frequencies): Kill.
      	(scale_loop_frequencies, duplicate_loop_to_header_edge): Use
      	scale_bbs_frequencies_int.
      	* tree-ssa-loop-ch.c (copy_loop_headers): Fix profiling info.
      
      Co-Authored-By: Dale Johannesen <dalej@apple.com>
      
      From-SVN: r96700
      Jan Hubicka committed
  8. 14 Mar, 2005 1 commit
  9. 08 Mar, 2005 1 commit
  10. 02 Mar, 2005 1 commit
  11. 22 Feb, 2005 1 commit
  12. 15 Jan, 2005 1 commit
    • harg-reg-set.h (reg_class_names): Prototype global array. · 778f72f2
      	* harg-reg-set.h (reg_class_names): Prototype global array.
      	* regclass.c (reg_class_names): Declare here and initialize to
      	REG_CLASS_NAMES.
      	(dump_regclass): Remove local declaration of reg_class_names.
      	(regclass): Likewise.
      	* cfg.c (dump_flow_info): Likewise.
      	* ra-debug.c (reg_class_names): Likewise.
      	* regrename.c (reg_class_names): Likewise.
      	* reload.c (reg_class_names): Likewise.
      	* reload1.c (spill_failure): Likewise.
      	* config/m68hc11/m68hc11.c (reg_class_names): Likewise.
      
      From-SVN: r93696
      Roger Sayle committed
  13. 13 Dec, 2004 1 commit
  14. 29 Nov, 2004 1 commit
  15. 22 Nov, 2004 3 commits
    • 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
    • cfg.c (cached_make_edge): Use find_edge rather than an inlined variant. · 9ff3d2de
              * cfg.c (cached_make_edge): Use find_edge rather than an inlined
              variant.
              * cfgbuild.c (make_edges): Likewise.
              * cfghooks.c (can_duplicate_block_p): Likewise.
              * cfgloop.c (loop_latch_edge): Likewise.
              * cfgloopmanip.c (force_single_succ_latches): Likewise.
              * cfgrtl.c (rtl_flow_call_edges_add): Likewise.
              * predict.c (predict_loops, propagate_freq): Likewise.
              * tracer.c (tail_duplicate): Likewise.
              * tree-cfg.c (disband_implicit_edges): Likewise.
              (tree_forwarder_block_p, tree_flow_call_edges_add): Likewise.
      
      From-SVN: r91019
      Jeff Law committed
    • bitmap.h (struct bitmap_obstack): New obstack type. · 7932a3db
      	* bitmap.h (struct bitmap_obstack): New obstack type.
      	(struct bitmap_head_def): Replace using_obstack with obstack
      	pointer.
      	(bitmap_default_obstack): New.
      	(bitmap_initialize): Make inline, does not do allocation.
      	(bitmap_release_memory): Remove.
      	(bitmap_obstack_initialize, bitmap_obstack_release): Declare.
      	(bitmap_obstack_alloc, bitmap_malloc_alloc, bitmap_gc_alloc,
      	bitmap_obstack_free, bitmap_malloc_free): Declare.
      	(BITMAP_OBSTACK_ALLOC, BITMAP_GGC_ALLOC, BITMAP_XMALLOC): Adjust.
      	(BITMAP_FREE): Replace with ...
      	(BITMAP_OBSTACK_FREE): ... this.
      	(BITMAP_XFREE): Adjust.
      	(BITMAP_INIT_ONCE): Remove.
      	* bitmap.c (bitmap_obstack, bitmap_obstack_init, bitmap_free: Remove.
      	(bitmap_default_obstack): New.
      	(bitmap_elem_to_freelist): Adjust.
      	(bitmap_element_allocate): Adjust. Break initialization into ...
      	(bitmap_obstack_initialize): ... here.
      	(bitmap_release_memory): Replace with ...
      	(bitmap_obstack_release): ... this.
      	(bitmap_obstack_alloc, bitmap_malloc_alloc, bitmap_gc_alloc,
      	bitmap_obstack_free, bitmap_malloc_free): New.
      	(bitmap_ior_and_compl, bitmap_ior_and_compl_into): Use
      	bitmap_initialize.
      	(bitmap_initialize): Move to bitmap.h.
      	* gengtype.c (open_base_files): Add obstack.h to ifiles.
      	* Makefile.in (BASIC_BLOCK_H, REGS_H): Add obstack.h.
      	* basic-block.h (INIT_REG_SET): Allocate from reg_obstack.
      	(INITIALIZE_REG_SET): Remove.
      	(FREE_REG_SET): Use BITMAP_OBSTACK_FREE.
      	(INIT_ONCE_REG_SET, MAX_REGNO_REG_SET): Remove.
      	(flow_obstack): Do not declare.
      	(reg_obstack): Declare.
      	* regs.h: Include obstack.h.
      	* tree-optimize.c (tree_rest_of_compilation): Initialize and
      	release bitmap obstack here.
      	* bb-reorder.c: #include regs, not basic-block.
      	(fix_crossing_conditional_branches): Allocate regsets from
      	reg_obstack.
      	* bt-load.c: Do not inlude bitmap.h, sbitmap.h, basic-block.h or
      	obstack.h.
      	* caller-save.c: Include regs.h earlier.
      	* cfg.c: Do not include basic-block.h or obstack.h.
      	(reg_obstack): Define.
      	* cfganal.c: Include obstack.h
      	* cfgcleanyp.c: Do not include basic-block.h. Include regs.h
      	earlier.
      	* cfglayout.c: Do not include obstack.h.
      	(flow_obstack): Remove declaration.
      	(cfg_layout_duplicate_bb): Use reg_obstack.
      	* cfgloop.c, cfgloopanal.c, cfgloopmanip.c: Include obstack.h.
      	* cfgrtl.c (rtl_split_block): Use reg_obstack.
      	(force_nonfallthru_and_redirect, rtl_split_edge): Likewise.
      	(safe_insert_insn_on_edge): Use OBSTACK_ALLOC_REG_SET, adjust.
      	(cfg_layout_split_edge): Use reg_obstack.
      	* cse.c: Include regs.h earlier.
      	* ddg.c: Do not include basic-block.h.
      	* dominance.c: Inlude obstack.h.
      	* flow.c (update_life_info): Use OBSTACK_ALLOC_REG_SET, adjust.
      	(calculate_global_regs_live): Likewise.
      	(allocate_bb_life_data): Use reg_obstack.
      	(init_propagate_block_info): Use OBSTACK_ALLOC_REGSET.
      	* global.c: Do not include basic-block.h.
      	(build_insn_chain): Use OBSTACK_ALLOC_REG_SET, adjust.
      	* graph.c: Include obstack.h.
      	* haifa-sched.c: Do not include basic-block.h.
      	* ifcvt.c: Use OBSTACK_ALLOC_REG_SET, adjust.
      	* local-alloc.c: Do not include basic-block.h.
      	* loop-init.c, loop-invariant.c: Include obstack.h.
      	* loop-iv.c: Likewise.
      	(simplify_using_initial_values): Use OBSTACK_ALLOC_REG_SET,
      	adjust.
      	* loop-unroll.c, loop-unswitch.c: Inlude obstack.h.
      	* modulo-sched.c: Do not include basic-block.h.
      	* passes.c (rest_of_handle_final): Do not call
      	regset_release_memory.
      	* ra-debug.c: Include regs.h earlier. Do not include
      	basic-block.h.
      	* recog.c (peephole2_optimize): Use OBSTACK_ALLOC_REG_SET, adjust.
      	* regclass.c (init_reg_sets): Do not call INIT_ONCE_REG_SET.
      	(allocate_reg_info): Do not call MAX_REGNO_REG_SET.
      	(regset_release_memory): Remove.
      	* resource.c: Do not include basic-block.h.
      	* rtlanal.c: Do not include basic-block.h.
      	* sbitmap.c: Include obstack.h.
      	* sched-deps.c: Do not include basic-block.h.
      	(reg_pending_sets_head, reg_pending_clobbers_head,
      	reg_pending_uses_head): Remove.
      	(init_deps_global): Use OBSTACK_ALLOC_REG_SET.
      	* sched-ebb.c: Do not include basic-block.h.
      	* sched-rgn.c: Likewise.
      	* tree-if-conv.c (get_loop_body_in_if_conv_order): Use
      	BITMAP_XFREE.
      	* tree-outof-ssa.c (perform_edge_inserts): Use BITMAP_XFREE.
      	* tree-sra.c (decide_instantiations): Adjust bitmap
      	initialization.
      	* tree-ssa-dce.c: Include obstack.h.
      	* tree-ssa-pre.c (grand_bitmap_obstack): Make a bitmap_obstack.
      	(value_insert_into_set_bitmap): Remove useless bitmap_clear.
      	(bitmap_set_new): Likewise.
      	(init_pre): Initialize bitmap obstack.
      	(fini_pre): Release bitmap obstack.
      	* tree-ssanames.c (ssa_names_to_rewrite): Make static.
      	(marked_for_rewrite_p): ssa_names_to_rewrite is never NULL.
      	(mark_for_rewrite, unmark_for_rewrite): Likewise.
      	(marked_ssa_names): Likewise.
      	(init_ssanames): Use BITMAP_XMALLOC.
      	(fini_ssanames): Use BITMAP_XFREE.
      	* web.c: Include obstack.h
      
      From-SVN: r91009
      Nathan Sidwell committed
  16. 21 Nov, 2004 1 commit
  17. 20 Nov, 2004 1 commit
    • basic-block.h (edge_def): Add dest_idx. · 73553871
      	* basic-block.h (edge_def): Add dest_idx.
      	* cfg.c (unchecked_make_edge): Initialize dest_idx.
      	(remove_edge): Simplify the disconnection of an edge from its
      	destination.
      	(redirect_edge_succ): Likewise.
      	* cfghooks.c (verify_flow_info): Check the consistency of
      	dest_idx for each edge.
      
      From-SVN: r90958
      Kazu Hirata committed
  18. 09 Nov, 2004 1 commit
  19. 25 Oct, 2004 1 commit
  20. 22 Oct, 2004 1 commit
  21. 18 Oct, 2004 1 commit
  22. 28 Sep, 2004 1 commit
    • backport: basic-block.h: Include vec.h, errors.h. · 628f6a4e
      2004-09-24  Ben Elliston  <bje@au.ibm.com>
      	    Steven Bosscher  <stevenb@suse.de>
      	    Andrew Pinski  <pinskia@physics.uc.edu>
      
      	Merge from edge-vector-branch:
      	* basic-block.h: Include vec.h, errors.h. Instantiate a VEC(edge).
      	(struct edge_def): Remove pred_next, succ_next members.
      	(struct basic_block_def): Remove pred, succ members.  Add preds
      	and succs members of type VEC(edge).
      	(FALLTHRU_EDGE): Redefine using EDGE_SUCC.
      	(BRANCH_EDGE): Likewise.
      	(EDGE_CRITICAL_P): Redefine using EDGE_COUNT.
      	(EDGE_COUNT, EDGE_I, EDGE_PRED, EDGE_SUCC): New.
      	(edge_iterator): New.
      	(ei_start, ei_last, ei_end_p, ei_one_before_end_p): New.
      	(ei_next, ei_prev, ei_edge, ei_safe_edge): Likewise.
      	(FOR_EACH_EDGE): New.
      	* bb-reorder.c (find_traces): Use FOR_EACH_EDGE and EDGE_* macros
      	where applicable.
      	(rotate_loop): Likewise.
      	(find_traces_1_route): Likewise.
      	(bb_to_key): Likewise.
      	(connect_traces): Likewise.
      	(copy_bb_p): Likewise.
      	(find_rarely_executed_basic_blocks_and_crossing_edges): Likewise.
      	(add_labels_and_missing_jumps): Likewise.
      	(fix_up_fall_thru_edges): Likewise.
      	(find_jump_block): Likewise.
      	(fix_crossing_conditional_branches): Likewise.
      	(fix_crossing_unconditional_branches): Likewise.
      	(add_reg_crossing_jump_notes): Likewise.
      	* bt-load.c (augment_live_range): Likewise.
      	* cfg.c (clear_edges): Likewise.
      	(unchecked_make_edge): Likewise.
      	(cached_make_edge): Likewise.
      	(make_single_succ_edge): Likewise.
      	(remove_edge): Likewise.
      	(redirect_edge_succ_nodup): Likewise.
      	(check_bb_profile): Likewise.
      	(dump_flow_info): Likewise.
      	(alloc_aux_for_edges): Likewise.
      	(clear_aux_for_edges): Likewise.
      	(dump_cfg_bb_info): Likewise.
      	* cfganal.c (forwarder_block_p): Likewise.
      	(can_fallthru): Likewise.
      	(could_fall_through): Likewise.
      	(mark_dfs_back_edges): Likewise.
      	(set_edge_can_fallthru_flag): Likewise.
      	(find_unreachable_blocks): Likewise.
      	(create_edge_list): Likewise.
      	(verify_edge_list): Likewise.
      	(add_noreturn_fake_exit_edges): Likewise.
      	(connect_infinite_loops_to_exit): Likewise.
      	(flow_reverse_top_sort_order_compute): Likewise.
      	(flow_depth_first_order_compute): Likewise.
      	(flow_preorder_transversal_compute): Likewise.
      	(flow_dfs_compute_reverse_execute): Likewise.
      	(dfs_enumerate_from): Likewise.
      	(compute_dominance_frontiers_1): Likewise.
      	* cfgbuild.c (make_edges): Likewise.
      	(compute_outgoing_frequencies): Likewise.
      	(find_many_sub_basic_blocks): Likewise.
      	(find_sub_basic_blocks): Likewise.
      	* cfgcleanup.c (try_simplify_condjump): Likewise.
      	(thread_jump): Likewise.
      	(try_forward_edges): Likewise.
      	(merge_blocks_move): Likewise.
      	(outgoing_edges_match): Likewise.
      	(try_crossjump_to_edge): Likewise.
      	(try_crossjump_bb): Likewise.
      	(try_optimize_cfg): Likewise.
      	(merge_seq_blocks): Likewise.
      	* cfgexpand.c (expand_gimple_tailcall): Likewise.
      	(expand_gimple_basic_block): Likewise.
      	(construct_init_block): Likewise.
      	(construct_exit_block): Likewise.
      	* cfghooks.c (verify_flow_info): Likewise.
      	(dump_bb): Likewise.
      	(delete_basic_block): Likewise.
      	(split_edge): Likewise.
      	(merge_blocks): Likewise.
      	(make_forwarder_block): Likewise.
      	(tidy_fallthru_edges): Likewise.
      	(can_duplicate_block_p): Likewise.
      	(duplicate_block): Likewise.
      	* cfglayout.c (fixup_reorder_chain): Likewise.
      	(fixup_fallthru_exit_predecessor): Likewise.
      	(can_copy_bbs_p): Likewise.
      	(copy_bbs): Likewise.
      	* cfgloop.c (flow_loops_cfg_dump): Likewise.
      	(flow_loop_entry_edges_find): Likewise.
      	(flow_loop_exit_edges_find): Likewise.
      	(flow_loop_nodes_find): Likewise.
      	(mark_single_exit_loops): Likewise.
      	(flow_loop_pre_header_scan): Likewise.
      	(flow_loop_pre_header_find): Likewise.
      	(update_latch_info): Likewise.
      	(canonicalize_loop_headers): Likewise.
      	(flow_loops_find): Likewise.
      	(get_loop_body_in_bfs_order): Likewise.
      	(get_loop_exit_edges): Likewise.
      	(num_loop_branches): Likewise.
      	(verify_loop_structure): Likewise.
      	(loop_latch_edge): Likewise.
      	(loop_preheader_edge): Likewise.
      	* cfgloopanal.c (mark_irreducible_loops): Likewise.
      	(expected_loop_iterations): Likewise.
      	* cfgloopmanip.c (remove_bbs): Likewise.
      	(fix_bb_placement): Likewise.
      	(fix_irreducible_loops): Likewise.
      	(remove_path): Likewise.
      	(scale_bbs_frequencies): Likewise.
      	(loopify): Likewise.
      	(unloop): Likewise.
      	(fix_loop_placement): Likewise.
      	(loop_delete_branch_edge): Likewise.
      	(duplicate_loop_to_header_edge): Likewise.
      	(mfb_keep_just): Likewise.
      	(create_preheader): Likewise.
      	(force_single_succ_latches): Likewise.
      	(loop_split_edge_with): Likewise.
      	(create_loop_notes): Likewise.
      	* cfgrtl.c (rtl_split_block): Likewise.
      	(rtl_merge_blocks): Likewise.
      	(rtl_can_merge_blocks): Likewise.
      	(try_redirect_by_replacing_jump): Likewise.
      	(force_nonfallthru_and_redirect): Likewise.
      	(rtl_tidy_fallthru_edge): Likewise.
      	(commit_one_edge_insertion): Likewise.
      	(commit_edge_insertions): Likewise.
      	(commit_edge_insertions_watch_calls): Likewise.
      	(rtl_verify_flow_info_1): Likewise.
      	(rtl_verify_flow_info): Likewise.
      	(purge_dead_edges): Likewise.
      	(cfg_layout_redirect_edge_and_branch): Likewise.
      	(cfg_layout_can_merge_blocks_p): Likewise.
      	(rtl_flow_call_edges_add): Likewise.
      	* cse.c (cse_cc_succs): Likewise.
      	* df.c (hybrid_search): Likewise.
      	* dominance.c (calc_dfs_tree_nonrec): Likewise.
      	(calc_dfs_tree): Likewise.
      	(calc_idoms): Likewise.
      	(recount_dominator): Likewise.
      	* domwalk.c (walk_dominator_tree): Likewise.
      	* except.c (emit_to_new_bb_before): Likewise.
      	(connect_post_landing_pads): Likewise.
      	(sjlj_emit_function_enter): Likewise.
      	(sjlj_emit_function_exit): Likewise.
      	(finish_eh_generation): Likewise.
      	* final.c (compute_alignments): Likewise.
      	* flow.c (calculate_global_regs_live): Likewise.
      	(initialize_uninitialized_subregs): Likewise.
      	(init_propagate_block_info): Likewise.
      	* function.c (thread_prologue_and_epilogue_insns): Likewise.
      	* gcse.c (find_implicit_sets): Likewise.
      	(bypass_block): Likewise.
      	(bypass_conditional_jumps): Likewise.
      	(compute_pre_data): Likewise.
      	(insert_insn_end_bb): Likewise.
      	(insert_store): Likewise.
      	(remove_reachable_equiv_notes): Likewise.
      	* global.c (global_conflicts): Likewise.
      	(calculate_reg_pav): Likewise.
      	* graph.c (print_rtl_graph_with_bb): Likewise.
      	* ifcvt.c (mark_loop_exit_edges): Likewise.
      	(merge_if_block): Likewise.
      	(find_if_header): Likewise.
      	(block_jumps_and_fallthru_p): Likewise.
      	(find_if_block): Likewise.
      	(find_cond_trap): Likewise.
      	(block_has_only_trap): Likewise.
      	(find_if_case1): Likewise.
      	(find_if_case_2): Likewise.
      	* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Likewise.
      	(perfect_nestify): Likewise.
      	* lcm.c (compute_antinout_edge): Likewise.
      	(compute_laterin): Likewise.
      	(compute_available): Likewise.
      	(compute_nearerout): Likewise.
      	* loop-doloop.c (doloop_modify): Likewise.
      	* loop-init.c (loop_optimizer_init): Likewise.
      	* loop-invariant.c (find_exits): Likewise.
      	* loop-iv.c (simplify_using_initial_values): Likewise.
      	(check_simple_exit): Likewise.
      	(find_simple_exit): Likewise.
      	* loop-unroll.c (peel_loop_completely): Likewise.
      	(unroll_loop_constant_iterations): Likewise.
      	(unroll_loop_runtime_iterations): Likewise.
      	* loop-unswitch.c (may_unswitch_on): Likewise.
      	(unswitch_loop): Likewise.
      	* modulo-sched.c (generate_prolog_epilog): Likewise.
      	(sms_schedule): Likewise.
      	* postreload-gcse.c (eliminate_partially_redundant_load):
      	Likewise.
      	* predict.c (can_predict_insn_p): Likewise.
      	(set_even_probabilities): Likewise.
      	(combine_predictions_for_bb): Likewise.
      	(predict_loops): Likewise.
      	(estimate_probability): Likewise.
      	(tree_predict_by_opcode): Likewise.
      	(tree_estimate_probability): Likewise.
      	(last_basic_block_p): Likewise.
      	(propagate_freq): Likewise.
      	(estimate_loops_at_level): Likewise.
      	(estimate_bb_frequencies): Likewise.
      	* profile.c (instrument_edges): Likewise.
      	(get_exec_counts): Likewise.
      	(compute_branch_probabilities): Likewise.
      	(branch_prob): Likewise.
      	* ra-build.c (live_in): Likewise.
      	* ra-rewrite.c (rewrite_program2): Likewise.
      	* ra.c (reg_alloc): Likewise.
      	* reg-stack.c (reg_to_stack): Likewise.
      	(convert_regs_entry): Likewise.
      	(compensate_edge): Likewise.
      	(convert_regs_1): Likewise,
      	(convert_regs_2): Likewise.
      	(convert_regs): Likewise.
      	* regrename.c (copyprop_hardreg_forward): Likewise.
      	* reload1.c (fixup_abnormal_edges): Likewise.
      	* sbitmap.c (sbitmap_intersection_of_succs): Likewise.
      	(sbitmap_insersection_of_preds): Likewise.
      	(sbitmap_union_of_succs): Likewise.
      	(sbitmap_union_of_preds): Likewise.
      	* sched-ebb.c (compute_jump_reg_dependencies): Likewise.
      	(fix_basic_block_boundaries): Likewise.
      	(sched_ebbs): Likewise.
      	* sched-rgn.c (build_control_flow): Likewise.
      	(find_rgns): Likewise.
      	* tracer.c (find_best_successor): Likewise.
      	(find_best_predecessor): Likewise.
      	(tail_duplicate): Likewise.
      	* tree-cfg.c (make_edges): Likewise.
      	(make_ctrl_stmt_edges): Likewise.
      	(make_goto_expr_edges): Likewise.
      	(tree_can_merge_blocks_p): Likewise.
      	(tree_merge_blocks): Likewise.
      	(cfg_remove_useless_stmts_bb): Likewise.
      	(remove_phi_nodes_and_edges_for_unreachable_block): Likewise.
      	(tree_block_forwards_to): Likewise.
      	(cleanup_control_expr_graph): Likewise.
      	(find_taken_edge): Likewise.
      	(dump_cfg_stats): Likewise.
      	(tree_cfg2vcg): Likewise.
      	(disband_implicit_edges): Likewise.
      	(tree_find_edge_insert_loc): Likewise.
      	(bsi_commit_edge_inserts): Likewise.
      	(tree_split_edge): Likewise.
      	(tree_verify_flow_info): Likewise.
      	(tree_make_forwarder_block): Likewise.
      	(tree_forwarder_block_p): Likewise.
      	(thread_jumps): Likewise.
      	(tree_try_redirect_by_replacing_jump): Likewise.
      	(tree_split_block): Likewise.
      	(add_phi_args_after_copy_bb): Likewise.
      	(rewrite_to_new_ssa_names_bb): Likewise.
      	(dump_function_to_file): Likewise.
      	(print_pred_bbs): Likewise.
      	(print_loop): Likewise.
      	(tree_flow_call_edges_add): Likewise.
      	(split_critical_edges): Likewise.
      	(execute_warn_function_return): Likewise.
      	(extract_true_false_edges_from_block): Likewise.
      	* tree-if-conv.c (tree_if_conversion): Likewise.
      	(if_convertable_bb_p): Likewise.
      	(find_phi_replacement_condition): Likewise.
      	(combine_blocks): Likewise.
      	* tree-into-ssa.c (compute_global_livein): Likewise.
      	(ssa_mark_phi_uses): Likewise.
      	(ssa_rewrite_initialize_block): Likewise.
      	(rewrite_add_phi_arguments): Likewise.
      	(ssa_rewrite_phi_arguments): Likewise.
      	(insert_phi_nodes_for): Likewise.
      	(rewrite_into_ssa): Likewise.
      	(rewrite_ssa_into_ssa): Likewise.
      	* tree-mudflap.c (mf_build_check_statement_for): Likewise.
      	* tree-outof-ssa.c (coalesce_abnormal_edges): Likewise.
      	(rewrite_trees): Likewise.
      	* tree-pretty-print.c (dump_bb_header): Likewise.
      	(dump_implicit_edges): Likewise.
      	* tree-sra.c (insert_edge_copies): Likewise.
      	(find_obviously_necessary_stmts): Likewise.
      	(remove_data_stmt): Likewise.
      	* tree-ssa-dom.c (thread_across_edge): Likewise.
      	(dom_opt_finalize_block): Likewise.
      	(single_incoming_edge_ignoring_loop_edges): Likewise.
      	(record_equivalences_from_incoming_edges): Likewise.
      	(cprop_into_successor_phis): Likewise.
      	* tree-ssa-live.c (live_worklist): Likewise.
      	(calculate_live_on_entry): Likewise.
      	(calculate_live_on_exit): Likewise.
      	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
      	(copy_loop_headers): Likewise.
      	* tree-ssa-loop-im.c (loop_commit_inserts): Likewise.
      	(fill_always_executed_in): Likewise.
      	* tree-ssa-loop-ivcanon.c (create_canonical_iv): Likewise.
      	* tree-ssa-loop-ivopts.c (find_interesting_uses): Likewise.
      	(compute_phi_arg_on_exit): Likewise.
      	* tree-ssa-loop-manip.c (add_exit_phis_edge): Likewise.
      	(get_loops_exit): Likewise.
      	(split_loop_exit_edge): Likewise.
      	(ip_normal_pos): Likewise.
      	* tree-ssa-loop-niter.c (simplify_using_initial_conditions):
      	Likewise.
      	* tree-ssa-phiopt.c (candidate_bb_for_phi_optimization): Likewise.
      	(replace_phi_with_stmt): Likewise.
      	(value_replacement): Likewise.
      	* tree-ssa-pre.c (compute_antic_aux): Likewise.
      	(insert_aux): Likewise.
      	(init_pre): Likewise.
      	* tree-ssa-propagate.c (simulate_stmt): Likewise.
      	(simulate_block): Likewise.
      	(ssa_prop_init): Likewise.
      	* tree-ssa-threadupdate.c (thread_block): Likewise.
      	(create_block_for_threading): Likewise.
      	(remove_last_stmt_and_useless_edges): Likewise.
      	* tree-ssa.c (verify_phi_args): Likewise.
      	(verify_ssa): Likewise.
      	* tree_tailcall.c (independent_of_stmt_p): Likewise.
      	(find_tail_calls): Likewise.
      	(eliminate_tail_call): Likewise.
      	(tree_optimize_tail_calls_1): Likewise.
      	* tree-vectorizer.c (vect_transform_loop): Likewise.
      	* var-tracking.c (prologue_stack_adjust): Likewise.
      	(vt_stack_adjustments): Likewise.
      	(vt_find_locations): Likewise.
      	* config/frv/frv.c (frv_ifcvt_modify_tests): Likewise.
      	* config/i386/i386.c (ix86_pad_returns): Likewise.
      	* config/ia64/ia64.c (ia64_expand_prologue): Likewise.
      	* config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
      
      Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
      Co-Authored-By: Steven Bosscher <stevenb@suse.de>
      
      From-SVN: r88222
      Ben Elliston committed
  23. 20 Sep, 2004 1 commit
  24. 19 Sep, 2004 1 commit
    • basic-block.h (update_bb_profile_after_threading): Declare. · 15db5571
      	* basic-block.h (update_bb_profile_after_threading): Declare.
      	* cfg.c (update_bb_profile_after_threading): Break out from ...
      	* cfgcleanup.c (try_forward_edges): ... here; use it.
      	* tree-ssa-dom.c (thread_across_edge): Use it.
      	* tree-ssa-threadupdate.c (create_block_for_threading): Zero out
      	profile of the new BB.
      
      From-SVN: r87730
      Jan Hubicka committed
  25. 14 Sep, 2004 1 commit
  26. 07 Sep, 2004 1 commit
    • cfganal.c (flow_depth_first_order_compute, [...]): Use gcc_assert or gcc_unreachable. · 341c100f
      	* cfganal.c (flow_depth_first_order_compute, dfs_enumerate_from,
      	cfgbuild.c, inside_basic_block_p, control_flow_insn_p,
      	make_label_edge, make_edges, find_basic_blocks_1): Use gcc_assert
      	or gcc_unreachable.
      	* cfg.c (clear_edges, initialize_bb_rbi, compact_blocks,
      	remove_edge, alloc_aux_for_blocks, free_aux_for_blocks,
      	alloc_aux_for_edges, free_aux_for_edges): Likewise.
      	* cfgcleanup.c (try_forward_edges,
      	merge_blocks_move_predecessor_nojumps,
      	merge_blocks_move_successor_nojumps): Likewise.
      	* cfgexpand.c (expand_gimple_cond_expr,
      	expand_gimple_tailcall): Likewise.
      	* cfghooks.c (duplicate_block): Likewise.
      	* cfglayout.c (record_effective_endpoints,
      	insn_locators_initialize, change_scope, fixup_reorder_chain,
      	verify_insn_chain, fixup_fallthru_exit_predecessor,
      	duplicate_insn_chain, cfg_layout_finalize): Likewise.
      	* cfgloopanal.c (check_irred): Likewise.
      	* cfgloop.c (superloop_at_depth, flow_loops_free,
      	flow_loop_entry_edges_find, flow_loops_find,
      	flow_loop_outside_edge_p, get_loop_body,
      	get_loop_body_in_dom_order, get_loop_body_in_bfs_order,
      	get_loop_exit_edges, num_loop_branches, cancel_loop,
      	verify_loop_structure): Likewise.
      	cfgloopmanip.c (find_path, remove_path, loop_delete_branch_edge,
      	duplicate_loop_to_header_edge, create_preheader,
      	create_loop_notes): Likewise.
      	* cfgrtl.c (delete_insn, try_redirect_by_replacing_jump,
      	edirect_branch_edge, force_nonfallthru_and_redirect,
      	rtl_split_edge, insert_insn_on_edge, commit_one_edge_insertion,
      	commit_edge_insertions, commit_edge_insertions_watch_calls,
      	purge_dead_edges, cfg_layout_redirect_edge_and_branch,
      	cfg_layout_redirect_edge_and_branch_force,
      	cfg_layout_merge_blocks, rtl_flow_call_edges_add): Likewise.
      	* cgraph.c (cgraph_node, cgraph_create_edge, cgraph_remove_edge,
      	cgraph_redirect_edge_callee, cgraph_global_info, cgraph_rtl_info,
      	cgraph_varpool_node): Likewise.
      	* cgraphunit.c (cgraph_finalize_function,
      	cgraph_finalize_compilation_unit, cgraph_mark_functions_to_output,
      	cgraph_expand_function, cgraph_remove_unreachable_nodes,
      	cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
      	cgraph_mark_inline, cgraph_expand_all_functions,
      	cgraph_build_static_cdtor): Likewise.
      	* combine.c  (do_SUBST, try_combine, subst, combine_simplify_rtx,
      	simplify_logical, distribute_notes, insn_cuid): Likewise.
      	* conflict.c (conflict_graph_add, print_conflict): Likewise.
      	* coverage.c (rtl_coverage_counter_ref, tree_coverage_counter_ref,
      	coverage_checksum_string): Likewise.
      	* cse.c (make_new_qty, make_regs_eqv, insert, invalidate,
      	hash_rtx, exp_equiv_p, cse_basic_block, count_reg_usage,
      	cse_cc_succs, cse_condition_code_reg): Likewise.
      	* cselib.c (entry_and_rtx_equal_p, remove_useless_values,
      	rtx_equal_for_cselib_p, wrap_constant, cselib_hash_rtx,
      	new_cselib_val, cselib_subst_to_values, cselib_invalidate_regno,
      	cselib_record_set): Likewise.
      
      From-SVN: r87145
      Nathan Sidwell committed
  27. 03 Sep, 2004 1 commit
    • cfg.c (free_edge): Use ggc_free. · 80d8221e
      2004-09-04  Jan Hubicka  <jh@suse.cz>
      
      	* cfg.c (free_edge): Use ggc_free.
      	(expunge_block): Use ggc_free.
      	* passes.c (rest_of_clean_state): Free after compilation.
      	* tree-ssa.c (delete_tree_ssa): Free annotations; call release_defs
      	* tree-ssanames.c (release_defs): Ignore non-SSA_NAME arguments.
      
      From-SVN: r87058
      Jan Hubicka committed
  28. 25 Aug, 2004 1 commit
  29. 24 Aug, 2004 1 commit
  30. 04 Aug, 2004 1 commit
    • basic-block.h (profile_staus): New global variable. · 878f99d2
      	* basic-block.h (profile_staus): New global variable.
      	* cfg.c (profile_status): Declare.
      	(check_bb_profile): Break out from ....; use profile_status
      	(dump_flow_info): ... here.
      	* cfgbuild.c (find_basic_blocks): Set profile_status.
      	* cfgexpand.c (tree_expand_cfg): Likewise.
      	* predict.c (estimate_probability): Likewise.
      	* profile.c (branch_prob): Likewise.
      	* tree-cfg.c (build_tree_cfg): Likewise.
      	(dump_function_to_file): Use check_bb_profile.
      	* tree-pretty-print (dump_bb_header): Likewise.
      	* tree-profile.c (do_tree_profiling): Cleanup.
      
      From-SVN: r85579
      Jan Hubicka committed
  31. 13 May, 2004 1 commit
  32. 09 Apr, 2004 1 commit
    • basic-block.h (struct edge_def): Add new field, crossing_edge. · 750054a2
      2004-04-09  Caroline Tice  <ctice@apple.com>
      
              * basic-block.h (struct edge_def):  Add new field, crossing_edge.
              (struct basic_block_def):  Add new field, partition.
              (UNPARTITIONED, HOT_PARTITION, COLD_PARTITION):  New constant macro
              definitions.
              (partition_hot_cold_basic_blocks): Add extern function
              declaration.
              * bb-reorder.c (function.h, obstack.h, expr.h, regs.h):  Add four new
              include statements.
              (N_ROUNDS): Increase the maximum number of rounds by 1.
              (branch_threshold): Add array value for new round.
              (exec_threshold): Add array value for new round.
              (push_to_next_round_p): New function.
              (add_unlikely_executed_notes): New function.
              (find_rarely_executed_basic_blocks_and_crossing_edges): New function.
              (mark_bb_for_unlikely_executed_section): New function.
              (add_labels_and_missing_jumps): New function.
              (add_reg_crossing_jump_notes): New function.
              (fix_up_fall_thru_edges): New function.
              (find_jump_block): New function.
              (fix_crossing_conditional_branches): New function.
              (fix_crossing_unconditional_branches): New function.
              (fix_edges_for_rarely_executed_code): New function.
              (partition_hot_cold_basic_blocks): New function.
              (find_traces):  Add an extra round for partitioning hot/cold
              basic blocks.
              (find_traces_1_round): Add a parameter.  Modify to push all cold blocks,
              and only cold blocks, into the last (extra) round of collecting traces.
              (better_edge_p): Add a parameter.  Modify to favor non-crossing edges
              over crossing edges.
              (bb_to_key):  Add code to correctly identify cold blocks when
              doing partitioning.
              (connect_traces): Modify to connect all the non-cold traces first, then
              go back and connect up all the cold traces.
              (reorder_basic_blocks):  Add call to add_unlikely_executed_notes.
              * cfg.c (entry_exit_blocks): Add initialization for partition field in
              entry and exit blocks.
              * cfgbuild.c (make_edges): Update current_function_has_computed_jump
              if we are doing hot/cold partitioning.
              * cfgcleanup.c (cfglayout.h): Add new include statement.
              (try_simplify_condjump): Modify to not attempt on blocks with jumps
              that cross section boundaries.
              (try_forward_edges): Likewise.
              (merge_blocks_move_predecessor_nojumps): Likewise.
              (merge_blocks_move_successor_nojumps): Likewise.
              (merge_blocks_move): Likewise.
              (try_crossjump_to_edge): Modify to not attempt after we have done
              the block partitioning.
              (try_crossjump_bb): Modify to not attempt on blocks with jumps that
              cross section boundaries.
              (try_optimize_cfg): Likewise.
              * cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect
              jumps that cross section boundaries.
              * cfglayout.c (flags.h): Add new include statement.
              (update_unlikely_executed_notes):  New function.
              (fixup_reorder_chain):  Add code so when a new jumping basic block is
              added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are
              updated appropriately.
              (duplicate_insn_chain):  Add code to duplicate the new NOTE insn
              introduced by this optimization.
              * cfglayout.h (scan_ahead_for_unlikely_executed_note):  Add new
              extern function declaration.
              * cfgrtl.c (can_delete_note_p):  Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to
              list of notes that can be deleted.
              (create_basic_block_structure):  Add initialization for partition field.
              (rtl_can_merge_blocks):  Modify to test blocks for jumps that cross
              section boundaries.
              (try_redirect_by_replacing_jump):  Modify to not attempt on jumps that
              cross section boundaries.
              (commit_one_edge_insertion): Add code so newly created basic block
              ends up in correct (hot or cold) section.  Modify to disallow
              insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
              (rtl_verify_flow_info_1):  Add code to verify that no fall_thru edge
              crosses section boundaries.
              (cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that
              cross section boundaries.
              (force_nonfallthru_and_redirect): Modify to make sure new basic block
              ends up in correct section, with correct notes attached.
              * common.opt (freorder-blocks-and-partition):  Add new flag for this
              optimization.
              * dbxout.c (dbx_function_end):  Add code to make sure scope labels at
              the end of functions are written into the correct (hot or cold)
              section.
              (dbx_source_file): Add code so writing debug file information
              doesn't incorrectly change sections.
              * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use
              in partitioning hot/cold basic blocks into separate sections.
              (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold
              section partitioning.
              (HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not
              conditional branches can span all of memory.
              (HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not
              unconditional branches can span all of memory.
              * final.c (scan_ahead_for_unlikely_executed_note):  New function.
              (final_scan_insn):  Add code to check for NOTE instruction indicating
              whether basic block belongs in hot or cold section, and to make sure
              the current basic block is being written to the appropriate section.
              Also added code to ensure that jump table basic blocks end up in the
              correct section.
              * flags.h (flag_reorder_blocks_and_partition):  New flag.
              * ifcvt.c (find_if_case_1):  Modify to not attempt if conversion if
              one of the branches has a jump that crosses between sections.
              (find_if_case_2): Likewise.
              (ifcvt): Modify to not attempt to mark loop exit edges after
              hot/cold partitioning has occurred.
              * opts.c (decode_options): Code to handle new flag,
              flag_reorder_blocks_and_partition; also to turn it off if
              flag_exceptions is on.
              (common_handle_option): Code to handle new flag,
              flag_reorder_blocks_and_partition.
              * output.h (unlikely_text_section): New extern function declaration.
              (in_unlikely_text_section): New extern function declaration.
              * passes.c (rest_of_handle_stack_regs):  Add
              flag_reorder_blocks_and_partition as an 'or' condition for calling
              reorder_basic_blocks.
              (rest_of_handle_reorder_blocks):  Add flag_reorder_blocks_and_partition
              as an 'or' condition for calling reorder_basic_blocks.
              (rest_of_compilation):  Add call to partition_hot_cold_basic_blocks.
              * print-rtl.c (print_rtx): Add code for handling new note,
              NOTE_INSN_UNLIKELY_EXECUTED_CODE
              * rtl.c  (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below).
              (REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that
              cross between section boundaries.
              * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE):  New note instruction,
              indicating the basic block containing it belongs in the cold section.
              (REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross
              between hot and cold sections.
              * toplev.c (flag_reorder_blocks_and_partition):  Add code to
              initialize this flag, and to tie it to the command-line option
              freorder-blocks-and-partition.
              * varasm.c (cfglayout.h):  Add new include statement.
              (unlikely_section_label_printed):  New global variable, used for
              determining when to output section name labels for cold sections.
              (in_section):  Add in_unlikely_executed_text to enum data structure.
              (text_section):  Modify code to use SECTION_FORMAT_STRING and
              NORMAL_TEXT_SECTION_NAME macros.
              (unlikely_text_section):  New function.
              (in_unlikely_text_section):  New function.
              (function_section):  Add code to make sure beginning of function is
              written into correct section (hot or cold).
              (assemble_start_function):  Add code to make sure stuff is written to
              the correct section.
              (assemble_zeros):  Add in_unlikely_text_section as an 'or' condition
              to an if statement that was checking 'in_text_section'.
              (assemble_variable):  Add 'in_unlikely_text_section' as an 'or'
              condition to an if statement that was checking 'in_text_section'.
              (default_section_type_flags_1):  Add check: if in cold section
              flags = SECTION_CODE.
              * config/darwin.c (darwin_asm_named_section):  Modify to use
              SECTION_FORMAT_STRING if we are partitioning hot/cold blocks.
              * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro
              specifically for the i386.
              (HAS_LONG_UNCOND_BRANCH):  Defined this macro specifically for the i386.
              * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change
              text string to something more informative.
              (NORMAL_TEXT_SECTION_NAME): Add new definition.
              (SECTION_FORMAT_STRING):  Add new definition.
              * config/rs6000/rs6000.c (rs6000_assemble_integer):  Add
              '!in_unlikely_text_section' as an 'and' condition to an if statement
              that was already checking '!in_text_section'.
              * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME,
              UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make
              sure these are properly defined for linux on ppc.
              * doc/invoke.texi  (freorder-blocks-and-partition): Add documentation
              for this new flag.
              * doc/rtl.texi (REG_CROSSING_JUMP):  Add documentation for new
              reg_note.
              * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
              HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
              these new macros.
      
      From-SVN: r80564
      Caroline Tice 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 Jan, 2004 1 commit
    • alias.c, [...]: Update copyright. · d9221e01
      	* alias.c, basic-block.h, c-common.c, c-common.h,
      	c-cppbuiltin.c, c-opts.c, c-pragma.c, c-pretty-print.c,
      	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
      	combine.c, cppcharset.c, cpphash.h, cppinit.c, cpplib.c,
      	cpplib.h, cppmacro.c, crtstuff.c, cselib.c, cselib.h,
      	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
      	expr.h, fix-header.c, function.h, gcc.c, gcse.c, genattrtab.c,
      	genautomata.c, genconditions.c, genemit.c, genflags.c,
      	gengtype.c, gengtype.h, genopinit.c, genrecog.c, gensupport.c,
      	ggc-zone.c, graph.c, haifa-sched.c, input.h, integrate.c,
      	langhooks-def.h, langhooks.c, langhooks.h, line-map.c,
      	line-map.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
      	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
      	rtl.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
      	target.h, targhooks.c, toplev.h, tree-inline.c, unwind-pe.h,
      	unwind.h, varray.c, varray.h: Update copyright.
      
      From-SVN: r76302
      Kazu Hirata committed
  35. 13 Jan, 2004 1 commit
  36. 06 Jan, 2004 1 commit
    • alias.c: Fix comment typos. · 5d3cc252
      	* alias.c: Fix comment typos.
      	* builtins.c: Likewise.
      	* cfg.c: Likewise.
      	* df.c: Likewise.
      	* dominance.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* expr.c: Likewise.
      	* final.c: Likewise.
      	* fold-const.c: Likewise.
      	* gcse.c: Likewise.
      	* genattrtab.c: Likewise.
      	* genrecog.c: Likewise.
      	* gensupport.c: Likewise.
      	* ggc-zone.c: Likewise.
      	* integrate.c: Likewise.
      	* local-alloc.c: Likewise.
      	* loop.c: Likewise.
      	* recog.c: Likewise.
      	* regmove.c: Likewise.
      	* reg-stack.c: Likewise.
      	* reorg.c: Likewise.
      	* rtlanal.c: Likewise.
      	* rtl.h: Likewise.
      	* sched-ebb.c: Likewise.
      	* simplify-rtx.c: Likewise.
      	* toplev.c: Likewise.
      	* varasm.c: Likewise.
      
      From-SVN: r75475
      Kazu Hirata committed
  37. 30 Dec, 2003 1 commit
    • backport: et-forest.h (et_forest_create, [...]): Declarations removed. · d47cc544
      	Backport from tree-ssa (relevant changes only):
      	2003-12-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
      
      	* et-forest.h (et_forest_create, et_forest_delete,
      	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
      	et_forest_remove_edge, et_forest_parent,
      	et_forest_common_ancestor, et_forest_node_value,
      	et_forest_enumerate_sons): Declarations removed.
      	(struct et_node): New.
      	(et_new_tree, et_free_tree, et_set_father, et_split, et_nca,
      	et_below): Declare.
      	* et-forest.c (struct et_forest_occurrence, struct et_forest,
      	struct et_forest_node): Removed.
      	(et_forest_create, et_forest_delete,
      	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
      	et_forest_remove_edge, et_forest_parent,
      	et_forest_common_ancestor, et_forest_node_value,
      	et_forest_enumerate_sons, splay, remove_all_occurrences,
      	find_leftmost_node, find_rightmost_node, calculate_value): Removed.
      	(struct et_occ): New.
      	(et_nodes, et_occurences): New.
      	(set_depth, set_depth_add, set_prev, set_next, et_recomp_min,
      	et_check_occ_sanity, et_check_sanity, et_check_tree_sanity,
      	record_path_before_1, record_path_before, check_path_after_1,
      	check_path_after, et_splay, et_new_occ, et_new_tree,
      	et_free_tree, et_set_father, et_split, et_nca, et_below): New.
      	* basic-block.h (struct basic_block_def): New field dom.
      	(struct dominance_info): Type removed.
      	(calculate_dominance_info, free_dominance_info,
      	nearest_common_dominator, set_immediate_dominator,
      	get_immediate_dominator, dominated_by_p, get_dominated_by,
      	add_to_dominance_info, delete_from_dominance_info,
      	recount_dominator, redirect_immediate_dominators,
      	iterate_fix_dominators, verify_dominators): Declarations
      	changed.
      	(enum dom_state): New.
      	(dom_computed): New variable.
      	(first_dom_son, next_dom_son): Declare.
      	* dominance.c (struct dominance_info): Removed.
      	(BB_NODE, SET_BB_NODE): Removed.
      	(calculate_dominance_info, free_dominance_info,
      	nearest_common_dominator, set_immediate_dominator,
      	get_immediate_dominator, dominated_by_p, get_dominated_by,
      	add_to_dominance_info, delete_from_dominance_info,
      	recount_dominator, redirect_immediate_dominators,
      	iterate_fix_dominators, verify_dominators,
      	debug_dominance_info): Work over new datastructure.  Access
      	dominance datastructures through CFG.
      	(assign_dfs_numbers, compute_dom_fast_query, first_dom_son,
      	next_dom_son): New.
      	* bt-load.c (dom): Variable removed.
      	(augment_live_range, combine_btr_defs, migrate_btr_def,
      	migrate_btr_defs, branch_target_load_optimize): Updated for the
      	new interface for dominance information.
      	* cfg.c {exit_entry_blocks): Update initializer.
      	* cfglayout.c (copy_bbs): Removed loops argument. Updated for
      	the new interface for dominance information.
      	* cfglayout.h (copy_bbs): Declaration changed.
      	* cfgloop.c (flow_loop_pre_header_find, flow_loops_cfg_dump,
      	flow_loop_scan, canonicalize_loop_headers, flow_loops_find): Updated
      	for the new interface for dominance information.
      	(flow_loop_scan): Loops argument removed.
      	(flow_loops_free): Don't release dominators.
      	* cfgloop.h (struct cfg): Dom field removed.
      	(flow_loop_scan, loop_split_edge_with, simple_loop_p,
      	just_once_each_iteration_p, split_loop_bb): Declaration changed.
      	* cfgloopanal.c (simple_loop_exit_p, simple_increment,
      	just_once_each_iteration_p, simple_loop_p): Remove loops argument.
      	Updated for the new interface for dominance information.
      	* cfgloopmanip.c (remove_bbs, find_path, create_preheader,
      	split_loop_bb, loopify, duplicate_loop_to_header_edge,
      	force_single_succ_latches, loop_split_edge_with): Ditto.
      	* gcse.c (dominators): Variable removed.
      	(free_code_hoist_mem, compute_code_hoist_data, hoist_code):
      	Updated for the new interface for dominance information.
      	* ifcvt.c (post_dominators): Variable removed.
      	(mark_loop_exit_edges, merge_if_block, find_if_header,
      	find_cond_trap, find_if_case_1, find_if_case_2, if_convert):
      	Updated for the new interface for dominance information.
      	* loop-init.c (rtl_loop_optimizer_init,
      	rtl_loop_optimizer_finalize): Ditto.
      	* loop-unroll.c (decide_peel_simple, decide_peel_once_rolling,
      	decide_peel_completely, decide_unroll_stupid,
      	decide_unroll_constant_iterations,
      	decide_unroll_runtime_iterations): Loops argument removed.
      	Updated for the new interface for dominance information.
      	(unroll_and_peel_loops, peel_loops_completely,
      	unroll_loop_runtime_iterations): Updated for the new interface for
      	dominance information.
      	* loop-unswitch.c (may_unswitch_on_p, unswitch_loops,
      	unswitch_single_loop, unswitch_loop): Updated for the new
      	interface for dominance information.
      	* predict.c (process_note_predictions, process_note_prediction,
      	estimate_probability, note_prediction_to_br_prob): Ditto.
      	* sched-rgn.c (find_rgns, init_regions): Ditto.
      	* toplev.c (rest_of_handle_branch_prob): Free the dominators.
      
      From-SVN: r75226
      Steven Bosscher committed