Commit Graph

47 Commits

Author SHA1 Message Date
Richard Henderson 0b17ab2f5b Revert "Basic block renumbering removal", and two followup patches.
From-SVN: r53537
2002-05-16 19:31:56 -07:00
Zdenek Dvorak 355e4ec445 Basic block renumbering removal.
From-SVN: r53522
2002-05-16 10:34:53 -07:00
Mark Mitchell 5a566bed2b * cfgrtl.c (purge_dead_edges): Correct handling of EDGE_EH.
From-SVN: r53521
2002-05-16 17:04:55 +00:00
Richard Henderson 546c093ec5 cfgrtl.c (purge_dead_edges): Handle abnormal call edges created by non-local gotos.
* cfgrtl.c (purge_dead_edges): Handle abnormal call edges created
        by non-local gotos.
        * recog.c (peephole2_optimize): Likewise.

From-SVN: r53438
2002-05-13 16:00:35 -07:00
Jan Hubicka 3e638a902a cfganal.c (can_fallthru): Fix fast path.
* cfganal.c (can_fallthru): Fix fast path.
	* cfgrtl.c (verify_flow_info): Avoid crash on conditionals
	with edges to the next block.

From-SVN: r53327
2002-05-09 12:56:47 +00:00
Jan Hubicka 969d70ca57 cfglayout.c (function_tail_eff_head): Rename to ...
* cfglayout.c (function_tail_eff_head): Rename to ...
	(function_footer): ... this one.
	(unlink_insn_chain): New functions.
	(label_for_bb): Only call block_label and emit debug message.
	(record_effective_endpoints): Actually unlink the headers and footers.
	(fixup_reorder_cahin): Re-insert the unlinked sequences.
	(cfg_layout_duplicate_bb): Use duplicate_insn_chain.
	* cfglayout.h (struct reorder_block_def): New fields footer/header;
	remove eff_head/eff_end.
	* rtl.h (set_first_insn): Declare.
	* emit-rtl.c (set_first_insn): New function.

	* cfglayout.c (fixup_reorder_chain): Dump duplicated
	(cfg_layout_can_duplicate_bb_p, cfg_layout_rerirect_edge,
	cfg_layout_duplicate_bb): New global function.
	(duplicate_insn_chain): New static function.
	* cfglayout.h (cfg_layout_can_duplicate_bb_p, cfg_layout_rerirect_edge,
	cfg_layout_duplicate_bb): Declare.
	(struct reorder_block_def): Add "original" field.
	* emit-rtl.c (emit_copy_of_insn_after): New function.
	* rtl.h (emit_copy_of_insn_after): Declare.

	* cfglayout.c (fixup_fallthru_exit_predecessor): Kill.
	(fixup_reorder_chain): properly handle edges to exit block.

Wed May  8 11:10:31 CEST 2002  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
			       Jan Hubicka  <jh@suse.cz>

	* basic-block.h (note_prediction_to_br_prob): declare.
	* c-semantics.c: Inlucde predit.h
	(expand_stmt): predict GOTO_STMT as not taken.
	* cfgcleanup.c: (delete_unreachable_blocks): Make global.
	(cleanup_cfg): Do not free tail_recursion_list.
	* cfgrtl.c (can_delete_note_p): Delete NOTE_INSN_PREDICTION.
	(flow_delete_block): Kill predictions past end of basic block.
	* output.h (delete_unreachable_blocks): Declare.
	* predict.c (predicted_by_p, process_note_predictions,
	process_note_prediction, last_block_p): New function.
	(estimate_probability): Bypass loop on PRED_CONTINUE;
	do not handle noreturn heuristics; kill PRED_RETURN; add
	PRED_EARLY_RETURN.
	* predict.def (PRED_CONTINUE, PRED_EARLY_RETURN, PRED_GOTO,
	PRED_CONST_RETURN, PRED_NEGATIVE_RETURN, PRED_NULL_RETURN): New.
	* predict.h (IS_TAKEN): New constant.
	* print-rtl.c (print_rtx): Pretty print NOTE_INSN_PREDICTION.
	* rtl.c (NOTE_INSN_PREDICTION): New.
	* rtl.h (NOTE_PREDICTION, NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS):
	New macro.
	(insn_note): add NOTE_INSN_PREDICTION.
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Do not build
	CFG; free tail_recursion_label_list.
	* stmt.c: Include predict.h;
	(return_prediction): New.
	(expand_value_return): Use it.
	* toplev.c: Lower NOTE_INSN_PREDICTION before sibcall.

From-SVN: r53285
2002-05-08 09:17:27 +00:00
Jan Hubicka 1b6763cfb5 cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed jumps post reload.
* cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed
	jumps post reload.
	* toplev.c (rest_of_compilation): Revert Richard's patch.

From-SVN: r53052
2002-05-02 17:51:48 +00:00
Richard Henderson 9c0a0632bc cfgrtl.c (tidy_fallthru_edge): Don't use next_real_insn for fallthru search.
* cfgrtl.c (tidy_fallthru_edge): Don't use next_real_insn
        for fallthru search.

From-SVN: r52826
2002-04-26 23:41:38 -07:00
Richard Henderson 6a58eee93d basic-block.h (flow_delete_block_noexpunge): Declare.
* basic-block.h (flow_delete_block_noexpunge): Declare.
	(expunge_block_nocompact): Declare.
	* cfg.c (expunge_block_nocompact): Split out from ...
	(expunge_block): ... here.
	* cfgrtl.c (can_delete_label_p): Don't use exception_handler_labels.
	(flow_delete_block_noexpunge): Split out from ...
	(flow_delete_block): ... here.
	* cfgcleanup.c (delete_unreachable_blocks): Compact while
	removing dead blocks.
	* except.c (exception_handler_labels): Remove.
	(exception_handler_label_map): New.
	(struct eh_region): Add aka member.
	(mark_ehl_map_entry, mark_ehl_map, free_region): New.
	(ehl_hash, ehl_eq, ehl_free, add_ehl_entry): New.
	(for_each_eh_label, for_each_eh_label_1): New.
	(init_eh): Register exception_handler_label_map.
	(free_eh_status): Use free_region.
	(find_exception_handler_labels): Use the map, not the list.
	(remove_exception_handler_label): Likewise.
	(maybe_remove_eh_handler): Likewise.
	(remove_eh_handler): Use the region aka bitmap.
	* except.h (exception_handler_labels): Remove.
	(for_each_eh_label): Declare.
	* jump.c (rebuild_jump_labels): Don't check exception_handler_labels.
	* loop.c (invalidate_loops_containing_label): New.
	(find_and_verify_loops): Use it.  Use for_each_eh_label.
	* sched-rgn.c (is_cfg_nonregular): Use
	current_function_has_exception_handlers.

From-SVN: r52100
2002-04-09 17:15:58 -07:00
Zdenek Dvorak e27a4eaf4f cfgrtl.c (merge_blocks_nomove): Use set_block_for_insn instead of assigning to BLOCK_FOR_INSN directly.
* cfgrtl.c (merge_blocks_nomove): Use set_block_for_insn instead of
	assigning to BLOCK_FOR_INSN directly.

From-SVN: r51475
2002-03-27 21:56:50 +00:00
Jan Hubicka 0a2ed1f101 cfgcleanup.c (outgoing_edges_math): Fix condition; relax frequencies match; avoid match on different loop depths.
* cfgcleanup.c (outgoing_edges_math): Fix condition; relax
	frequencies match; avoid match on different loop depths.
	(try_crossjump_to_bb): Kill tests that no longer brings time
	savings.
	* cfgrtl.c (force_nonfallthru_and_redirect): Fix loop_depth
	updating code.
	(split_edge): Likewise.

	* flow.c (update_life_info_in_dirty_blocks): Fix uninitialized
	variable.

	* Makefile.in (cfgrtl): Add insn-config.h depenendency.
	* cfgrtl.c: Include insn-config.h
	(split_block) Dirtify block in presence of conditional execution

From-SVN: r51168
2002-03-22 11:11:21 +00:00
Jan Hubicka 1e3881c2a0 toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup call after liveness analysis.
* toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup
	call after liveness analysis.

	* recog.c (split_insn): Use delete_insn_and_edges.

	* cfgrtl.c (verify_flow_info): Be permisive about non-any_condjump
	instructions to have branch prediction notes.
	* ia64reorg.c (ia64_reorg): Do not rebuild CFG.

From-SVN: r50765
2002-03-14 10:10:13 +00:00
Jan Hubicka c51d95ecef cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been removed; fix return value.
* cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been
	removed; fix return value.
	* combine.c (combine_instructions): Dirtify blocks where we failed to
	update liveness; purge dead edges; use update_life_info_in_dirty_blocks.
	* toplev.c (rest_of_compilation): Do not purge_dead_edges after combine.

From-SVN: r50454
2002-03-08 20:32:15 +00:00
Jan Hubicka a2877a0977 * cfgrtl.c (verify_flow_info): Accept RESX as EH edge source.
From-SVN: r50363
2002-03-06 18:09:51 +00:00
Jan Hubicka 3dec402428 cfgrtl.c (delete_insn_and_edges, [...]): New.
* cfgrtl.c (delete_insn_and_edges, delete_insn_chain_and_edges): New.
	* rtl.h (delete_insn_and_edges, delete_insn_chain_and_edges): Declare

	* basic-block.h (update_life_info, update_life_info_in_dirty_blocks,
	delete_noop_moves): Return indeger.
	* flow.c (ndead): New variable.
	(propagate_block_delete_insn): Use delete_insn_and_edges; remove
	BB argument; update callers.
	(propagate_block_delete_libcall): Use delete_insn_chain_and_edges.
	(life_analysis): Do not call purge_all_dead_edges.
	(update_life_info): Return number of deleted insns; print statistics.
	(update_life_info_in_dirty_blocks): likewise.
	(delete_noop_moves): Use delete_insn_and_edges; print statistics;
	return number of insns deleted.

	* cse.c: Include timevar.h
	(delete_trivially_dead_insns): Kill preserve_basic_blocks argument;
	iterate until stabilizes; print statistics; return number of killed
	insns.
	* Makefile.in: (cse.o): Add timevar.h dependency
	* rtl.h (delete_trivially_dead_insns): New.
	* timever.def: Add TV_DELETE_TRIVIALLY_DEAD timer.
	* toplev.c (rest_of_compilation): Update callers.

	* cfgcleanup.c (try_optimize_cfg): Kill blocks.
	(try_optimize_cfg): Do not update liveness.
	(cleanup-cfg): Loop until try_optimize_cfg and dead code
	removal stabilizes; use delete_trivially_dead_insns.

	* cfgrtl.c (verify_flow_info): Sanity check outgoing edges.

From-SVN: r50355
2002-03-06 10:17:23 +00:00
Jan Hubicka 5a1a3e5e4d cfg.c (dump_flow_info): Warn about profile mismatches.
* cfg.c (dump_flow_info): Warn about profile mismatches.
	* cfgrtl.c (verify_flow_info): Few aditional sanity checks.
	(purge_dead_edges): Remove REG_BR_PROB notes on simplejumps.

From-SVN: r50320
2002-03-05 17:34:16 +00:00
Jan Hubicka 70da1d030d cfgrtl.c (purge_dead_edges): Fix handling of EH edges.
* cfgrtl.c (purge_dead_edges): Fix handling of EH edges.

	* i386.h (CONDITIONAL_REGISTER_USAGE): Do not write to
	PIC_OFFSET_TABLE_REGNUM when it is INVALID_REGNUM

From-SVN: r50128
2002-02-28 11:03:16 +00:00
Jan Hubicka 38c1593d57 basic-block.h (BB_REACHABLE): Renumber.
* basic-block.h (BB_REACHABLE): Renumber.
	(BB_DIRTY, BB_NEW): New flags.
	(clear_bb_flags): Declare.
	(update_life_info_in_dirty_blocks): Declare.
	* cfg.c (clear_bb_flags): New function.
	* cfgrtl.c (create_basic_block_structure): Set flags to BB_NEW.
	* emit-rtl.c (add_insn_after, add_insn_before, remove_insn,
	reorder_insns, emit_insn_after): Mark block as dirty.
	* flow.c (update_life_info): Fix clearing of PROP_LOG_LINKS.
	(update_life_info_in_dirty_blocks): New function.
	* recog.c (apply_change_group): Dirtify block.

	* cse.c (cse_insn): Reorder emitting of jump insn to keep
	cfg consistent.
	* gcse.c (delete_null_pointer_checks): Likewise.

	* toplev.c (dump_file_index): Move cse2 after bp,
	add DFI_null
	(dump_file_info): Similary.
	(rest_of_compilation): Avoid most of CFG rebuilds;
	do first if converision after null pointer checks, do cse2
	after branch prediction; avoid full liveness rebuild after
	initializing subregs.
	* invoke.texi (-d options): Document -du, renumber.

	* cfgcleanup.c (bb_flags): Remove BB_UPDATE_LIFE.
	(notice_new_block): Do not set BB_UPDATE_LIFE.
	(try_forward_edges, merge_blocks_move_predecessor_nojumps,
	 merge_blocks_move_successor_nojumps, merge_blocks,
	 try_crossjump_to_edge): Likewise.
	(try_optimize_cfg): Likewise; use update_life_info_in_dirty_blocks.
	* cfgrtl.c (merge_blocks_nomove): Copy b's flags to a.
	* ifcvt.c (SET_UPDATE_LIFE, UPDATE_LIFE): Kill.
	(merge_of_block): Do not use life_data_ok.
	(find_if_case_1): Do not use SET_UPDATE_LIFE.
	(if_convert): Use BB_DIRTY mechanizm to update life.
	* lcm.c (optimize_mode_switching): Update
	update_life_info_in_dirty_blocks

From-SVN: r50127
2002-02-28 10:11:01 +00:00
Jakub Jelinek 56d4428505 jump.c (never_reached_warning): Add finish argument.
* jump.c (never_reached_warning): Add finish argument.
	If finish is NULL, stop on CODE_LABEL, otherwise stop before first
	real insn after end.
	* rtl.h (never_reached_warning): Adjust prototype.
	* cse.c (cse_insn): Pass NULL as finish to never_reached_warning.
	* cfgrtl.c (flow_delete_block): Pass b->end as finish to
	never_reached_warning.

	* gcc.dg/Wunreachable-1.c: New test.
	* gcc.dg/Wunreachable-2.c: New test.

From-SVN: r49713
2002-02-12 22:39:42 +01:00
Bernd Schmidt 24c545ff92 cfgrtl.c (force_nonfallthru_and_redirect): Don't try to redirect the entry block.
* cfgrtl.c (force_nonfallthru_and_redirect): Don't try to redirect
         the entry block.

From-SVN: r49488
2002-02-04 19:19:04 +00:00
Jeff Law 5b1cacd89e cfgrtl.c (try_redirect_by_replacing_jump): Remove associated CODE_LABEL and jump table when...
* cfgrtl.c (try_redirect_by_replacing_jump): Remove associated
        CODE_LABEL and jump table when replacing a table jump with a
        simple jump.

From-SVN: r49478
2002-02-04 09:03:14 -07:00
Richard Henderson cda94cbba1 cfgrtl.c (delete_insn): Assert insn hasn't been deleted yet.
* cfgrtl.c (delete_insn): Assert insn hasn't been deleted yet.
        * reload1.c (delete_output_reload): Zap spill_reg_store.  Take
        care not to delete instructions twice.

From-SVN: r48760
2002-01-10 18:44:48 -08:00
Jan Hubicka b446e5a266 basic-block.h (update_br_prob_note): Declare.
* basic-block.h (update_br_prob_note): Declare.
	* cfgcleanup.c (try_simplify_condjump): Call update_br_prob_note.
	(try_forward_edges): Care negative frequencies and update note.
	(outgoing_edges_match): Tweek conditional merging heuristics.
	(try_crossjump_to_edge): use update_br_prob_note.
	* cfglayout.c (fixup_reorder_chain): Likewise.
	* cfrtl.c (update_br_prob_note): New.
	* ifcvt.c (dead_or_predicable): Call update_br_prob_note.

	* i386.c (ix86_decompose_address): Return -1 if address contains
	shift.
	(legitimate_address_p): Require ix86_decompose_address to return 1.

	* gcse.c (hash_scan_set): Use CONSTANT_INSN_P.
	(cprop_insn): Likewise.

From-SVN: r48750
2002-01-10 20:37:43 +00:00
Richard Henderson a124fcda15 cfgrtl.c (delete_insn): Check for not NOTE_INSN_DELETED_LABEL before decrementing LABEL_NUSES from a...
* cfgrtl.c (delete_insn): Check for not NOTE_INSN_DELETED_LABEL
        before decrementing LABEL_NUSES from a jump table.

From-SVN: r48431
2001-12-31 13:33:19 -08:00
Jakub Jelinek 6ee3c8e412 cfgrtl.c (try_redirect_by_replacing_jump): Allow redirect_jump to fail if target is EXIT_BLOCK_PTR, die otherwise.
* cfgrtl.c (try_redirect_by_replacing_jump): Allow redirect_jump
	to fail if target is EXIT_BLOCK_PTR, die otherwise.
	(redirect_edge_and_branch): Likewise.
	* cfgcleanup.c (try_forward_edge): Don't force jump redirecting
	if target is EXIT_BLOCK_PTR.

	* gcc.c-torture/compile/20011229-2.c: New test.

From-SVN: r48399
2001-12-30 13:20:43 +01:00
Jan Hubicka 4e5ea414df Oops, wrong tree, sorry
From-SVN: r48374
2001-12-29 17:33:35 +00:00
Jan Hubicka 1d0b96d75a Temoporarily disable broken verify flow info.
From-SVN: r48372
2001-12-29 17:30:10 +00:00
Richard Kenner 5f0d23589f rtl.h (in_expr_list_p): New declaration.
* rtl.h (in_expr_list_p): New declaration.
	* rtlanal.c (in_expr_list_p): New function.
	* cfgcleanup.c: Reformatting and minor code rearrangement.
	* cfglayout.c, cfgloop.c, cfgrtl.c: Likewise.

From-SVN: r48304
2001-12-24 10:44:45 -05:00
Jan Hubicka 25b44be580 cfgrtl.c (redirect_edge_and_branch): Do simplify abnormal edges resulting from computed jump
* cfgrtl.c (redirect_edge_and_branch):  Do simplify abnormal
	edges resulting from computed jump

From-SVN: r48113
2001-12-17 17:56:04 +00:00
John David Anglin 32a6f30e69 cfgrtl.c (verify_flow_info): Allow jump table data in fallthru if CASE_DROPS_THROUGH.
* cfgrtl.c (verify_flow_info): Allow jump table data in fallthru if
	CASE_DROPS_THROUGH.

From-SVN: r47655
2001-12-05 03:54:51 +00:00
Neil Booth c725bd79e7 c-decl.c (grokdeclarator): Use ISO word.
* c-decl.c (grokdeclarator): Use ISO word.
	* cppinit.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* diagnostic.c: Similarly.
	* emit-rtl.c: Similarly.
	* final.c: Similarly.
	* gcc.c: Similarly.
	* tradcpp.c: Similarly.
	* config/arm/arm.c: Similarly.
	* config/arm/arm.h: Similarly.
	* config/avr/avr.c: Similarly.
	* config/avr/avr.h: Similarly.
	* config/c4x/c4x.c: Similarly.
	* config/cris/cris.c: Similarly.
	* config/cris/cris.h: Similarly.
	* config/d30v/d30v.c: Similarly.
	* config/dsp16xx/dsp16xx.c: Similarly.
	* config/dsp16xx/dsp16xx.h: Similarly.
	* config/h8300/h8300.c: Similarly.
	* config/i386/i386.c: Similarly.
	* config/i386/xm-djgpp.h: Similarly.
	* config/i960/i960.h: Similarly.
	* config/m32r/m32r.c: Similarly.
	* config/m68hc11/m68hc11.c: Similarly.
	* config/m88k/m88k.c: Similarly.
	* config/m88k/m88k.h: Similarly.
	* config/mcore/mcore.c: Similarly.
	* config/mcore/mcore.h: Similarly.
	* config/mips/mips.c: Similarly.
	* config/mmix/mmix.c: Similarly.
	* config/pa/pa.c: Similarly.
	* config/rs6000/rs6000.c: Similarly.
	* config/rs6000/sysv4.h: Similarly.
	* config/s390/s390.c: Similarly.
	* config/sparc/sparc.c: Similarly.
	* config/v850/v850-c.c: Similarly.
	* config/v850/v850.c: Similarly.
ch:
	* actions.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* decl.c: Similarly.
	* expr.c: Similarly.
	* inout.c: Similarly.
	* lang.c: Similarly.
	* loop.c: Similarly.
	* nloop.c: Similarly.
	* parse.c: Similarly.
	* satisfy.c: Similarly.
	* tasking.c: Similarly.
	* tree.c: Similarly.
	* typeck.c: Similarly.
cp:
	* typeck2.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
f:
	* com.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* g77spec.c: Similarly.
	* lex.c: Similarly.
java:
	* expr.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.
	* jcf-io.c: Similarly.
	* jcf-parse.c: Similarly.
	* jv-scan.c: Similarly.
	* jvspec.c: Similarly.
	* mangle.c: Similarly.

From-SVN: r47558
2001-12-03 19:15:19 +00:00
Kaveh R. Ghazi 710af8993d cfgrtl.c (purge_all_dead_edges): Initialize variable.
* cfgrtl.c (purge_all_dead_edges): Initialize variable.
	* dwarf2out.c (is_cxx): Prototype.
	* local-alloc.c (block_alloc): Avoid 'unsigned>=0 is always true'
	warning.
	* objc/objc-act.c (defer_fn): Avoid signed/unsigned warning.

From-SVN: r47528
2001-12-02 13:43:10 +00:00
Neil Booth 1f978f5f7e c-decl.c (duplicate_decls, [...]): Remove leading capital from diagnostics.
* c-decl.c (duplicate_decls, push_parm_decl): Remove leading
	capital from diagnostics.
	* c-lex.c (cb_file_change): Similarly.
	* c-parse.in : Similarly.
	* cfgrtl.c (verify_flow_info): Similarly.
	* collect2.c: Similarly.
	* cppfiles.c (find_include_file): Similarly.
	* cppinit.c (cpp_handle_option): Similarly.
	* cpplex.c (cpp_spell_token): Similarly.
	* cppmain.c (do_preprocessing): Similarly.
	* gcc.c (translate_options, process_command, do_spec1,
	main, pfatal_execute): Similarly.
	* genattr.c (main): Similarly.
	* genattrtab.c (check_attr_test, operate_exp, simplify_test_exp,
	write_test_expr, main): Similarly.
	* gencodes.c (main): Similarly.
	* genconfig.c (main): Similarly.
	* genconstants.c (main): Similarly.
	* genemit.c (main): Similarly.
	* genextract.c (main): Similarly.
	* genflags.c (main): Similarly.
	* genopinit.c (main): Similarly.
	* genoutput.c (process_template, main): Similarly.
	* genpeep.c (main): Similarly.
	* genrecog.c (main): Similarly.
	* gensupport.c (is_predicable, identify_predicable_attribute,
	alter_predicate_for_insn, init_md_reader_args, main): Similarly.
	* ggc-page.c (alloc_anon): Similarly.
	* mips-tfile.c (add_string, add_procedure, add_file, read_line,
	parse_begin, parse_bend, parse_def, parse_end, parse_file,
	parse_stabs_common, parse_stabs, write_varray, write_object,
	read_seek, copy_object, main, error): Similarly.
	* profile.c (compute_branch_probabilities): Similarly.
	* reg-stack.c (check_asm_stack_operands): Similarly.
	* reload.c (find_reloads): Similarly.
	* reload1.c (spill_failure, failed_reload): Similarly.
	* rtl-error.c (_fatal_insn_not_found): Similarly.
	* toplev.c (read_integral_parameter, crash_signal,
	decode_f_option, set_target_switch, parse_options_and_default_flags)
	: Similarly.
	* tradcif.y (parse_number, yylex): Similarly.
	* tradcpp.c (main, fancy_abort): Similarly.
	* tree.c (tree_check_failed): Similarly.
	* varray.c (varray_check_failed): Similarly.
	* xcoffout.c (xcoff_output_standard_types): Similarly.
cp:
	* call.c (build_java_interface_fn_ref): Similarly.
	* except.c (is_admissible_throw_operand): Similarly.
	* init.c (build_java_class_ref): Similarly.
	* xref.c (open_xref_file): Similarly.
objc:
	* objc-act.c (get_object_ref, lookup_and_install_protocols,
	build_objc_string_object, objc_declare_alias, build_ivar_chain,
	finish_message_expr, build_protocol_expr, is_public,
	start_class): Similarly.
testsuite:
	* objc.dg/alias.m: Update.
	* objc.dg/class-1.m: Update.
	* objc.dg/const-str-1.m: Update.
	* objc.dg/fwd-proto-1.m: Update.
	* objc.dg/id-1.m: Update.
	* objc.dg/super-class-1.m: Update.

From-SVN: r47518
2001-12-02 00:04:36 +00:00
Jan Hubicka 0e1638d4c3 sparc.c (sparc_absnegfloat_split_legitimate): Do not call alter_subreg.
* sparc.c (sparc_absnegfloat_split_legitimate): Do not call
	alter_subreg.
	* sparc.md (post-reload splitters): Do not call alter_subreg.
	* cfgrtl.c (purge_dead_edges): Fix typo in previous fix.

From-SVN: r47339
2001-11-26 10:38:27 +00:00
Graham Stott 09eb1aab55 cfgrtl.c (try_redirect_by_replacing_jump): Fix typo, emit replacement jump after original jump.
* cfgrtl.c (try_redirect_by_replacing_jump): Fix typo, emit
        replacement jump after original jump.

        (verify_flow_info): Remove redundent initialisation.
        Handle reaching end of insn list before finding a BARRIER.
        Only issue one missing barrier diagnostic.

From-SVN: r47269
2001-11-22 14:30:37 +00:00
Jan Hubicka 7fcd721879 gcse.c (try_replace_reg): Copy RTX before creating note.
* gcse.c (try_replace_reg): Copy RTX before creating note.

	* df.h (df_ref_flags): New uenum.
	(DF_REF_FLAGS): New macro.
	(struct ref): Add field "flags".
	* df.c (HANDLE_SUBREG): Remove.
	(df_ref_create): Likewise; set flags field of ref.
	(df_def_record_1): Strip down read_write subreg; remove
	commented out code; set READ_WRITE flag.
	(read_modify_subreg_p): New static function.
	(df_uses_record): Cleanup SET handling; set READ_WRITE flag;
	new argument "flags".
	(df_insn_refs_record): Update call of df_uses_record.
	(df_insn_modify): Avoid #if 0 around comment.
	(df_dump): Dump the read/write flag.

	* predict.c (propagate_freq): Make cyclic_probability and frequency
	volatile

	* i386.c (ix86_cc_mode): Accept USE.

	* cfgrtl.c (purge_dead_edges):  Cleanup EDGE_ABNORMAL flag if computed
	jump is turned into simplejump.

From-SVN: r47175
2001-11-19 17:08:48 +00:00
Andreas Jaeger 00baba68a0 cfgrtl.c (purge_all_dead_edges): Use int as argument for portability.
* cfgrtl.c (purge_all_dead_edges): Use int as argument for
	portability.
	* basic-block.h: Adjust prototype.

From-SVN: r47041
2001-11-15 08:55:45 +01:00
Joseph Myers eaec9b3d7e ChangeLog.2, [...]: Fix spelling errors.
* ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog.5, ChangeLog,
	cfg.c, cfganal.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgrtl.c,
	collect2.c, combine.c, config.in, configure, configure.in,
	conflict.c, dwarf2out.c, dwarfout.c, except.c, final.c, flow.c,
	genattrtab.c, ggc-page.c, jump.c, lcm.c, predict.c, reg-stack.c,
	reload1.c, rtlanal.c, sched-rgn.c, toplev.c, unwind-dw2-fde.h: Fix
	spelling errors.

From-SVN: r46928
2001-11-11 11:25:28 +00:00
Jakub Jelinek 89753b3a90 cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns which cannot throw.
* cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns
	which cannot throw.

From-SVN: r46863
2001-11-09 00:14:26 +01:00
Joseph Myers f5143c46a9 ChangeLog.2, [...]: Fix spelling errors.
* ChangeLog.2, ChangeLog.4, ChangeLog.5, ChangeLog,
	FSFChangeLog.10, FSFChangeLog.11, alias.c, attribs.c,
	caller-save.c, calls.c, cfg.c, cfganal.c, cfgcleanup.c, cfgrtl.c,
	cppmacro.c, fold-const.c, ifcvt.c, local-alloc.c, profile.c,
	sched-int.h, toplev.c, config/alpha/alpha.c,
	config/alpha/alpha.md, config/c4x/c4x.h, config/cris/cris.h,
	config/cris/cris.md, config/i370/i370.md, config/i386/i386.c,
	config/i386/i386.h, config/i386/i386.md, config/i386/xm-djgpp.h,
	config/ia64/ia64.c, config/m68hc11/m68hc11.c, config/m68k/m68k.md,
	config/mcore/mcore.h, config/mmix/mmix.c, config/ns32k/ns32k.h,
	config/ns32k/ns32k.md, config/rs6000/rs6000.c,
	config/rs6000/sysv4.h, config/sh/sh.md: Fix spelling errors.

From-SVN: r46760
2001-11-04 02:51:28 +00:00
Jan Hubicka 473fb060f3 basic-block.h (purge_all_dead_edges): Add update_life_p argument.
* basic-block.h (purge_all_dead_edges): Add update_life_p argument.
	* cfgcleanup.c (merge_blocks): Update the life flag after merging;
	fix warning.
	* cfgrtl.c (purge_all_dead_edges): Allow updating of liveness.
	(life_analysis): call purge_all_dead_edges after deleting noops.
	(delete_noop_move): Do not purge CFG.
	* toplev.c (rest_of_compilation): Update purge_all_dead_edges call.

From-SVN: r46605
2001-10-29 11:45:45 +00:00
Joseph Myers f63d1bf775 ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
	ChangeLog.5, ChangeLog, ChangeLog.lib, FSFChangeLog.10, ONEWS,
	c-common.c, caller-save.c, cfg.c, cfgcleanup.c, cfgrtl.c,
	collect2.c, df.h, diagnostic.h, final.c, gcse.c, gthr.h,
	haifa-sched.c, jump.c, local-alloc.c, profile.c, protoize.c,
	regmove.c, reload1.c, rtlanal.c, sched-vis.c, ssa.c, stmt.c,
	system.h, toplev.c: Fix spelling errors.

From-SVN: r46580
2001-10-28 12:42:06 +00:00
Jan Hubicka 7dddfb65cf cfgcleanup.c (merge_blocks_move_predecessor_nojumps, [...]): Set BB_UPDATE_LIFE.
* cfgcleanup.c (merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successors_nojumps): Set BB_UPDATE_LIFE.
	(merge_blocks): Properly udpate life after making edge nonfallthru.
	* cfgrtl.c (merge_blocks_nomove): Update global_live_at_end.

From-SVN: r46564
2001-10-27 10:17:44 +00:00
Stan Shebs b36948478c alias.c: Remove uses of "register" specifier in declarations of arguments and local...
2001-10-10  Stan Shebs  <shebs@apple.com>

        * alias.c: Remove uses of "register" specifier in declarations
        of arguments and local variables.
        * c-common.c: Ditto.
        * c-convert.c: Ditto.
        * c-decl.c: Ditto.
        * c-format.c: Ditto.
        * c-semantics.c: Ditto.
        * c-typeck.c: Ditto.
        * caller-save.c: Ditto.
        * calls.c: Ditto.
        * cfg.c: Ditto.
        * cfgbuild.c: Ditto.
        * cfgrtl.c: Ditto.
        * collect2.c: Ditto.
        * combine.c: Ditto.
        * convert.c: Ditto.
        * cppexp.c: Ditto.
        * cppfiles.c: Ditto.
        * cse.c: Ditto.
        * dbxout.c: Ditto.
        * defaults.h: Ditto.
        * df.c: Ditto.
        * dwarf2out.c: Ditto.
        * dwarfout.c: Ditto.
        * emit-rtl.c: Ditto.
        * explow.c: Ditto.
        * expmed.c: Ditto.
        * expr.c: Ditto.
        * final.c: Ditto.
        * fix-header.c: Ditto.
        * floatlib.c: Ditto.
        * flow.c: Ditto.
        * fold-const.c: Ditto.
        * function.c: Ditto.
        * gcc.c: Ditto.
        * gcse.c: Ditto.
        * gen-protos.c: Ditto.
        * genattrtab.c: Ditto.
        * gencheck.c: Ditto.
        * genconfig.c: Ditto.
        * genemit.c: Ditto.
        * genextract.c: Ditto.
        * genflags.c: Ditto.
        * gengenrtl.c: Ditto.
        * genoutput.c: Ditto.
        * genpeep.c: Ditto.
        * genrecog.c: Ditto.
        * gensupport.c: Ditto.
        * global.c: Ditto.
        * gmon.c: Ditto.
        * graph.c: Ditto.
        * haifa-sched.c: Ditto.
        * hard-reg-set.h: Ditto.
        * hash.c: Ditto.
        * integrate.c: Ditto.
        * jump.c: Ditto.
        * lists.c: Ditto.
        * local-alloc.c: Ditto.
        * loop.c: Ditto.
        * mips-tdump.c: Ditto.
        * mips-tfile.c: Ditto.
        * optabs.c: Ditto.
        * prefix.c: Ditto.
        * print-rtl.c: Ditto.
        * read-rtl.c: Ditto.
        * real.c: Ditto.
        * recog.c: Ditto.
        * reg-stack.c: Ditto.
        * regclass.c: Ditto.
        * regmove.c: Ditto.
        * reload.c: Ditto.
        * reload1.c: Ditto.
        * reorg.c: Ditto.
        * resource.c: Ditto.
        * rtl.c: Ditto.
        * rtlanal.c: Ditto.
        * scan.c: Ditto.
        * sched-deps.c: Ditto.
        * sched-rgn.c: Ditto.
        * sdbout.c: Ditto.
        * simplify-rtx.c: Ditto.
        * stmt.c: Ditto.
        * stor-layout.c: Ditto.
        * toplev.c: Ditto.
        * tradcif.y: Ditto.
        * tradcpp.c: Ditto.
        * tree.c: Ditto.
        * unroll.c: Ditto.
        * varasm.c: Ditto.
        * xcoffout.c: Ditto.

From-SVN: r46173
2001-10-11 03:16:15 +00:00
Kazu Hirata 4fe9b91c45 c-common.c: Fix comment typos.
* c-common.c: Fix comment typos.
	* cfgrtl.c: Likewise.
	* collect2.c: Likewise.
	* cpplex.c: Likewise.
	* doloop.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* global.c: Likewise.
	* ifcvt.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* protoize.c: Likewise.
	* regclass.c: Likewise.
	* reorg.c: Likewise.
	* rtl.h: Likewise.
	* stmt.c: Likewise.
	* tree.h: Likewise.
	* doc/cpp.texi: Likewise.
	* doc/c-tree.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/objc.texi: Likewise.
	* doc/tm.texi: Likewise.

From-SVN: r46114
2001-10-09 06:03:16 +00:00
Richard Henderson a3623c481c * cfgrtl.c (redirect_edge_and_branch): Abort if redirect_jump fails.
From-SVN: r45870
2001-09-28 17:25:08 -07:00
Jan Hubicka ca6c03cabd Makefile.in (cfgrtl.o): Add.
* Makefile.in (cfgrtl.o): Add.
	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
	free_aux_for_edge): Declare.
	* cfg.c
	(HAVE_return): Undefine.
	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
	free_aux_for_edge): New global functions.
	(first_delete_block): New static variable.
	(init_flow): Clear first_delete_block.
	(basic_block_for_insn, label_value_list, tail_recursion_label_list,
	 can_delete_note_p, can_delete_label_p, commit_one_edge_insertion,
	 try_redirect_by_replacing_jump, last_loop_beg_note,
	 back_edge_of_syntactic_loop_p, force_nonfallthru_and_redirect,
	 delete_insn, delete_insn_chain, create_basic_block_structure,
	 create_basic_block, flow_delete_block, compute_bb_for_insn,
	 free_bb_for_insn, update_bb_for_insn, set_block_for_insn,
	 set_block_for_new_insns, split_block, merge_blocks_nomove,
	 block_label, try_redirect_by_replacing_jump, last_loop_beg_note,
	 redirect_edge_and_branch, force_nonfallthru_and_redirect,
	 force_nonfallthru, redirect_edge_and_branch_force, tidy_fallthru_edge,
	 tidy_fallthru_edges, split_edge, insert_insn_on_edge,
	 commit_one_edge_insertion, commit_edge_insertions, dump_bb, debug_bb,
	 debug_bb_n, print_rtl_with_bb, verify_flow_info, purge_dead_edges,
	 purge_all_dead_edges): Move to ....
	* cfgrtl.c: New file; .... Here.

	* bb-reorder.c (fixup_reorder_chain): Use alloc_aux_for_block.
	(reroder_basic_block): Use alloc_aux_for_blocks.
	* predict.c (estimate_bb_frequencies): Likewise; use
	alloc_aux_for_edges.
	* profile.c (compute_branch_probabilities): Likewise.
	(branch_prob): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.

	* emit-rtl.c (emit_insns_after): Never return NULL.

	* basic-block.h (set_block_for_new_insns): Delete.
	* cfgrtl.c (set_block_for_new_insns): Delete.

	* cfgcleanup.c (try_optimize_cfg): Add fake exit edges for noreturn
	calls when crossjumping.

	* cfgcleanup.c (try_simplify_condjump): Cleanup invert_jump call.
	* unroll.c (copy_loop_body): Use delete_insn.

	* final.c (final, final_scan_insn): Use delete_insn/delete_note.
	* function.c (fixup_var_refs_insn, fixup_var_refs_1,
	keep_stack_depressed): Likewise.
	* gcse.c (cprop_cc0_jump): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.
	* loop.c (scan_loop, loop_delete_insns): Likewise.
	* regmove.c (try_auto_increment, fixup_match_1): Likewise.
	* reload1.c (reload, calculate_needs_all_insns, reload_as_needed,
	delete_output_reload, delete_address_reloads_1,
	reload_cse_delete_noop_set, reload_combine, reload_cse_move2add):
	Likewise.
	* sibcall.c (replace_call_placeholder): Likewise.
	* cse.c (cse_insn): Likewise.

From-SVN: r45807
2001-09-25 15:26:55 +00:00