aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
AgeCommit message (Collapse)AuthorFilesLines
1999-09-06Merge in gcc2-ss-010999Jeff Law1-0/+9
From-SVN: r29150
1999-09-03flow.c (propagate_block): Use XEXP not SET_DEST for a USE.Richard Henderson1-2/+2
* flow.c (propagate_block): Use XEXP not SET_DEST for a USE. (recompute_reg_usage): Likewise. * rtlanal.c (find_regno_fusage): Likewise. * rtl.c (rtl_check_failed_code1): New function. (rtl_check_failed_code2): New. * rtl.h (RTL_CHECK1, RTL_CHECK2, RTVEC_ELT): Parenthesize args. (RTL_CHECKC1, RTL_CHECKC2): New. (XC*): New accessor macros. (NOTE_*, LABEL_NAME, LABEL_NUSES, ADDRESSOF_REGNO): Use them. (ADDRESSOF_DECL, JUMP_LABEL, LABEL_REFS, LABEL_NEXTREF): Likewise. (CONTAINING_INSN, REGNO, INTVAL, SUBREG_REG, SUBREG_WORD): Likewise. (ASM_OPERANDS_*, MEM_ALIAS_SET, SET_SRC, SET_DEST): Likewise. (TRAP_*, RANGE_INFO_*): Likewise. From-SVN: r29089
1999-09-02dwarf2out.c (dwarf2out_line): Constify `lastfile'.Richard Henderson1-6/+2
* dwarf2out.c (dwarf2out_line): Constify `lastfile'. * except.c (expand_rethrow): Remove unused variable. * expr.c (do_jump_by_parts_greater_rtx): Likewise. * flow.c (replace_insns): Likewise. (create_edge_list, verify_edge_list): Likewise. * gcse.c (cprop_cc0_jump): Protect declaration with HAVE_cc0. * genemit.c (gen_expand): Only emit `operands[N]' decl if there is special code to run. (main): Don't define operands to emit_operand. * genrecog.c (main): Don't emit an empty peephole2_insn function. * rtl.h (NOTE_BASIC_BLOCK): Use X0BBDEF. * alpha/alpha.h (normal_memory_operand): Declare. (reg_no_subreg_operand): Declare. * alpha/elf.h (ASM_DECLARE_OBJECT_NAME): Use HOST_WIDE_INT_PRINT_DEC. From-SVN: r29061
1999-08-31rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and bounds- check RTL ↵Zack Weinberg1-3/+3
accesses if --enable-checking. 1999-08-31 12:20 -0700 Zack Weinberg <zack@bitmover.com> * rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and bounds- check RTL accesses if --enable-checking. (RTVEC_ELT): Bounds check if --enable-checking. (XWINT, XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE, XBBDEF): Use RTL_CHECK1/RTL_CHECK2 as appropriate. (XVECEXP, XVECLEN): Define in terms of XVEC, RTVEC_ELT, and GET_NUM_ELEM. (X0WINT, X0INT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE, X0BBDEF, X0ADVFLAGS): New macros for accessing '0' slots of RTXes. (ADDR_DIFF_VEC_FLAGS): Use X0ADVFLAGS. (NOTE_SOURCE_FILE): Use X0STR. (NOTE_BLOCK_NUMBER, NOTE_EH_HANDLER, LABEL_NUSES, MEM_ALIAS_SET): Use X0INT. (NOTE_RANGE_INFO, NOTE_LIVE_INFO, NOTE_BASIC_BLOCK, JUMP_LABEL, LABEL_REFS, LABEL_NEXTREF, CONTAINING_INSN): Use X0EXP. * real.h (CONST_DOUBLE_CHAIN): Use X0EXP. * rtl.c (copy_rtx, copy_most_rtx): Copy '0' slots with X0WINT. (rtl_check_failed_bounds, rtl_check_failed_type1, rtl_check_failed_type2, rtvec_check_failed_bounds): New functions. (fancy_abort): Fix comment. * cse.c (canon_hash): Read CONST_DOUBLE data slots with XWINT. (cse_insn): Decrement LABEL_NUSES for jump target before deleting jump insn. * emit-rtl.c (gen_rtx_CONST_DOUBLE): Use X0EXP for slot 1. * final.c (alter_subreg): Compute regno before changing x to REG; set REGNO(x) after changing it. * flow.c (count_basic_blocks): Use XWINT to inspect EH_REGION notes containing CONST_INTs. (delete_eh_regions): Use NOTE_EH_HANDLER. * function.c (put_reg_into_stack): Make reg a MEM before initializing it. (fixup_var_refs_insns): Save REG_NOTES (insn) in case we delete insn. (gen_mem_addressof): Make reg a MEM before initializing it. * integrate.c (copy_rtx_and_substitute): Copy '0' slots with X0WINT. * local-alloc.c (update_equiv_regs): Zap REG_NOTES before deleting an insn, not after. (block_alloc): Only look at PATTERN(insn) if we have to, and only if it's format class 'i'. * loop.c (check_dbra_loop): Check bl->biv->add_val is a CONST_INT before using its INTVAL. * print-rtl.c (print_rtx): Use X0STR. * regmove.c (fixup_match_1): Don't look at PATTERN of non-class-'i' insn chain elements. * reload.c (loc_mentioned_in_p): Take address of in->fld[1].rtx directly. * reload1.c (reload): Change reg to a MEM before initializing it. * varasm.c (mark_constant_pool): Skip CONST_DOUBLES, which have no names. * config/i386/i386.md (decrement_and_branch_if_zero): Fix typo. From-SVN: r29008
1999-08-30flow.c (new_insn_dead_notes): Use sets_reg_or_subreg not mark_set_resources.Richard Henderson1-10/+8
* flow.c (new_insn_dead_notes): Use sets_reg_or_subreg not mark_set_resources. From-SVN: r28990
1999-08-28flow.c (flow_delete_insn_chain): Rename from delete_insn_chain.Richard Henderson1-28/+18
* flow.c (flow_delete_insn_chain): Rename from delete_insn_chain. (update_life_info) [REG_WAS_0]: Search the original insns rather than the new insns for the note. Fix typos finding note_dest. If no dest found, discard the note rather than abort. [REG_NOALIAS]: Handle as REG_NO_CONFLICT. (replace_insns): Remove the old insn list after update_life_info not before. From-SVN: r28946
1999-08-26system.h: Don't redefine abort or trim_filename.Zack Weinberg1-18/+24
1999-08-25 22:10 -0700 Zack Weinberg <zack@bitmover.com> * system.h: Don't redefine abort or trim_filename. * rtl.h: Define abort to fancy_abort (__FILE__, __LINE__, 0) or fancy_abort (__FILE__, __LINE__, __FUNCTION__) depending on whether or not __FUNCTION__ is available. * tree.h: Duplicate rtl.h's definition of abort, for files that don't include rtl.h. Delete all code to perform type checking with a compiler other than GCC. * varray.h: Delete all code to perform type checking with a compiler other than GCC. Make VARRAY_CHECK() always evaluate its arguments exactly once, using a statement expression. Adjust the VARRAY_<type> accessor macros to match. * toplev.h (fatal_insn, fatal_insn_not_found): Kill. (_fatal_insn, _fatal_insn_not_found): New fns, take info on caller's location. Define fatal_insn and fatal_insn_not_found as macros that use _fatal_insn and _fatal_insn_not_found. (fancy_abort, trim_filename): Kill prototypes. * rtl.c (trim_filename): Move here from toplev.c. (fancy_abort): New function. (DIR_SEPARATOR): Provide default definition. * tree.c (tree_check_failed, tree_class_check_failed): Go through fancy_abort. (tree_check, tree_class_check, cst_or_constructor_check, expr_check): Delete. * varray.c (varray_check_failed): New function. * toplev.c (fatal_insn, fatal_insn_not_found): Replace with _fatal_insn and _fatal_insn_not_found. Go through fancy_abort. (trim_filename, fancy_abort): Delete. * builtins.c (expand_builtin_args_info): Report ICE with abort. * except.c (start_catch_handler): Report ICE with error/abort combo. * final.c (output_operand_lossage): Likewise. * flow.c (verify_flow_info): Likewise. * gcc.c: Prototype fatal. * gengenrtl.c: Undef abort after including rtl.h not system.h. * genattr.c, genattrtab.c, genemit.c, genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c, genrecog.c: Don't define fancy_abort. From-SVN: r28889
1999-08-25sbitmap.h (sbitmap_intersection_of_succs): Add prototype.Andrew MacLeod1-0/+44
Wed Aug 25 13:55:47 EDT 1999 Andrew MacLeod <amacleod@cygnus.com> * sbitmap.h (sbitmap_intersection_of_succs): Add prototype. (sbitmap_intersection_of_preds, sbitmap_union_of_succs, sbitmap_union_of_preds): Add prototypes. * sbitmap.c (sbitmap_intersection_of_succs): New function to compute the intersection of successors with the new flow graph structures. (sbitmap_intersection_of_preds): New function to compute the intersection of predecessors with the new flow graph structures. (sbitmap_union_of_succs): New function to compute the union of successors with the new flow graph structures. (sbitmap_union_of_preds): New function to compute the union of predecessors with the new flow graph structures. * gcse.c (compute_rdm, compute_available): Use new sbitmap routines. (expr_reaches_here_p): Use edge and basic_block structures instead of s_preds and s_succs. (compute_cprop_avinout): Use new sbitmap routines. (pre_expr_reaches_here_p): Use edge and basic_block structures instead of s_preds and s_succs. * flow.c (compute_flow_dominators): Compute dominators using edges and basic blocks instead of s_preds and s_succs. From-SVN: r28866
1999-08-25flow.c (delete_block): Spell NOTE_INSN_EH_REGION_BEG and ↵Mark Mitchell1-2/+2
NOTE_INSN_EH_REGION_END correctly. * flow.c (delete_block): Spell NOTE_INSN_EH_REGION_BEG and NOTE_INSN_EH_REGION_END correctly. From-SVN: r28840
1999-08-24haifa-sched.c (split_hard_reg_notes): Move to flow.cBob Manson1-0/+1049
* haifa-sched.c (split_hard_reg_notes): Move to flow.c (new_insn_dead_notes): Likewise. (update_n_sets): Likewise. (update_flow_info): Move to flow.c, renamed to update_life_info; extend to handle multiple source insns. * flow.c: Include resource.h (unlink_insn_chain): New. (split_hard_reg_notes): New. (maybe_add_dead_note): New. (maybe_add_dead_note_use): New. (find_insn_with_note): New. (new_insn_dead_notes): New. (update_n_sets): New. (sets_reg_or_subreg_1, sets_reg_or_subreg): New. (maybe_remove_dead_notes): New. (update_life_info): New. (prepend_reg_notes): New. (replace_insns): New. * output.h (update_life_info): Declare. * recog.c (split_block_insns): Use update_life_info. * resource.c (find_free_register): Use reg_alloc_order, don't use fixed regs, make sure the mode is supported, don't use new regs. (reg_dead_p): New. * rtl.h (replace_insns): Declare. Co-Authored-By: Richard Henderson <rth@cygnus.com> From-SVN: r28828
1999-08-20rtl.h (rtx_format): Constify a char*.Kaveh R. Ghazi1-5/+5
* rtl.h (rtx_format): Constify a char*. * rtl.c (rtx_format): Likewise. (copy_rtx, copy_most_rtx, read_rtx): Likewise. (init_rtl): Use accessor macro, not `rtx_format'. * alias.c (rtx_equal_for_memref_p, find_symbolic_term): Constify a char*. * caller-save.c (mark_referenced_regs): Likewise. * combine.c (subst, make_compound_operation, known_cond, gen_rtx_combine, update_table_tick, get_last_value_validate, use_crosses_set_p, mark_used_regs_combine, move_deaths): Likewise. * cse.c (rtx_cost, mention_regs, canon_hash, exp_equiv_p, refers_to_p, canon_reg, fold_rtx, cse_process_notes, count_reg_usage): Likewise. * emit-rtl.c (gen_rtx, copy_rtx_if_shared, reset_used_flags): Likewise. * final.c (leaf_renumber_regs_insn): Likewise. * flow.c (mark_used_regs, find_use_as_address, dump_flow_info, dump_edge_info, count_reg_references): Likewise. * function.c (fixup_var_refs_1, walk_fixup_memory_subreg, fixup_stack_1, purge_addressof_1, instantiate_virtual_regs_1): Likewise. * gcse.c (oprs_unchanged_p, hash_expr_1, expr_equiv_p, oprs_not_set_p, expr_killed_p, compute_transp, find_used_regs, add_label_notes): Likewise. * genattrtab.c (attr_rtx, attr_copy_rtx, encode_units_mask, clear_struct_flag, count_sub_rtxs, count_alternatives, compares_alternatives_p, contained_in_p, walk_attr_value, write_expr_attr_cache): Likewise. * genconfig.c (walk_insn_part): Likewise. * genemit.c (max_operand_1, gen_exp): Likewise. * genextract.c (walk_rtx): Likewise. * genflags.c (num_operands): Likewise. * genoutput.c (scan_operands): Likewise. * genpeep.c (match_rtx): Likewise. * genrecog.c (add_to_sequence): Likewise. * haifa-sched.c (may_trap_exp, sched_analyze_2, attach_deaths): Likewise. * integrate.c (save_constants, copy_for_inline, copy_rtx_and_substitute, subst_constants, restore_constants): Likewise. * jump.c (mark_jump_label, invert_exp, redirect_exp, rtx_renumbered_equal_p, rtx_equal_for_thread_p): Likewise. * local-alloc.c (contains_replace_regs, memref_referenced_p): Likewise. * loop.c (record_excess_regs, rtx_equal_for_loop_p, add_label_notes, replace_call_address, count_nonfixed_reads, invariant_p, find_single_use_in_loop, find_mem_givs, find_life_end, maybe_eliminate_biv_1, update_reg_last_use): Likewise. * print-rtl.c (reg_names, print_rtx): Likewise. * recog.c (validate_replace_rtx_1, find_single_use_1): Likewise. * reg-stack.c (stack_regs_mentioned_p, record_label_references, record_reg_life_pat, swap_rtx_condition, goto_block_pat, print_blocks): Likewise. * regclass.c (fix_register, record_address_regs, reg_scan_mark_refs): Likewise. * regmove.c (stable_but_for_p): Likewise. * reload.c (loc_mentioned_in_p, operands_match_p, find_reloads_toplevsubst_reg_equivs, find_reloads_address_1, copy_replacements, refers_to_regno_for_reload_p, refers_to_mem_for_reload_p, find_inc_amount, regno_clobbered_p, reload_when_needed_name, reg_class_names, debug_reload_to_stream): Likewise. * reload1.c (eliminate_regs, scan_paradoxical_subregs, delete_address_reloads_1, count_occurrences, reload_cse_mem_conflict_p, reload_combine_note_use, add_auto_inc_notes): Likewise. * resource.c (mark_referenced_resources, mark_set_resources): Likewise. * rtlanal.c (rtx_unstable_p, rtx_varies_p, rtx_addr_varies_p, reg_mentioned_p, regs_set_between_p, modified_between_p, modified_in_p, refers_to_regno_p, reg_overlap_mentioned_p, rtx_equal_p, volatile_insn_p, volatile_refs_p, side_effects_p, may_trap_p, inequality_comparisons_p, replace_rtx, replace_regs, jmp_uses_reg_or_mem, for_each_rtx, regno_use_in): Likewise. * sched.c (sched_analyze_2, attach_deaths): Likewise. * stupid.c (stupid_mark_refs): Likewise. * unroll.c (remap_split_bivs): Likewise. * varasm.c (mark_constants): Likewise. * a29k/a29k.c (uses_local_reg_p): Likewise. * alpha/alpha.c (summarize_insn): Likewise. * arm/arm.c (symbol_mentioned_p, label_mentioned_p, eliminate_lr2ip): Likewise. * arm/thumb.c (symbol_mentioned_p, label_mentioned_p): Likewise. * i386/i386.c (symbolic_reference_mentioned_p, copy_all_rtx, reg_mentioned_in_mem): Likewise. * ns32k/ns32k.c (global_symbolic_reference_mentioned_p, symbolic_reference_mentioned_p): Likewise. * romp/romp.c (unsigned_comparisons_p, hash_rtx): Likewise. * sh/sh.c (regs_used, mark_use): Likewise. * vax/vax.c (vax_rtx_cost): Likewise. From-SVN: r28784
1999-08-19alias.c: Include tree.h.John Wehle1-0/+5
* alias.c: Include tree.h. (nonlocal_reference_p, mark_constant_function): New functions. * flow.c (life_analysis): Call mark_constant_function. * rtl.h (mark_constant_function): Declare it. From-SVN: r28762
1999-08-18Combined compare & jump infrastructureBernd Schmidt1-1/+1
From-SVN: r28752
1999-08-18cse.c (cse_insn): Call never_reached_warning when a jump is changed to be ↵Geoff Keating1-0/+2
unconditional. * cse.c (cse_insn): Call never_reached_warning when a jump is changed to be unconditional. * flags.h: Declare warn_notreached. * flow.c (delete_block): Call never_reached_warning when a block is deleted. * jump.c (delete_barrier_successors): Call never_reached_warning when we delete everything after a BARRIER. (never_reached_warning): New function. * rtl.h: Declare never_reached_warning. * toplev.c (warn_notreached): New variable. (lang_independent_options): Set warn_notreached when -Wunreachable-code. (compile_file): We need line numbers for -Wunreachable-code. Also modify documentation to suit. From-SVN: r28747
1999-08-17flow.c (create_edge_list): Use xmalloc, not malloc.Andrew MacLeod1-2/+2
Tue Aug 17 17:39:43 EDT 1999 Andrew MacLeod <amacleod@cygnus.com> * flow.c (create_edge_list): Use xmalloc, not malloc. From-SVN: r28736
1999-08-16basic-block.h (struct edge_list): Stucture to maintain a vector of edges.Andrew MacLeod1-0/+265
* basic-block.h (struct edge_list): Stucture to maintain a vector of edges. (EDGE_INDEX_NO_EDGE, EDGE_INDEX, INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, INDEX_EDGE, NUM_EDGES): New Macros for accessing edge list. (create_edge_list, free_edge-List, print_edge_list, verify_edge_list): New function prototypes. * flow.c (create_edge_list): Function to create an edge list. (free_edge_list): Discards memory used by an edge list. (print_edge_list): Debug output showing an edge list. (verify_edge_list): Internal consistency check for an edge list. From-SVN: r28732
1999-08-10except.h (eh_nesting_info): Add new structure defintion.Andrew MacLeod1-38/+24
Tue Aug 10 10:47:42 EDT 1999 Andrew MacLeod <amacleod@cygnus.com> * except.h (eh_nesting_info): Add new structure defintion. (init_eh_nesting_info, free_eh_nesting_info): Add function prototypes. (reachable_handlers, update_rethrow_references): Add function prototypes. * rtl.h (struct rtvec_def): Update comments. REG_EH_RETHROW takes a rethrow symbol instead of an integer exception region number. * flow.c (Make_edges): Use new exception nesting routines to determine which handlers are reachable from a CALL or asynchronous insn. Dont add an edge for calls with a REG_EH_REGION of -1 to non-local goto receivers. (delete_eh_regions): Update rethrow labels, and don't delete regions which are the target of a rethrow. * except.c (struct func_eh_entry): Add rethrow_ref field, now we can avoid overloading the SYMBOL_REF_USED flag. (rethrow_symbol_map): Use new rethrow_ref field. (rethrow_used): Use new rethrow_ref field. (expand_rethrow): REG_EH_RETHROW now has a SYMBOL_REF instead of an integer. Fix formatting. (output_exception_table_entry): Use new rethrow_ref field. (can_throw): Check for EH_REGION_NOTE before deciding whether a CALL can throw or not. (scan_region): Call rethrow_used() instead of accessing data structure. (update_rethrow_references): New function to make sure only regions which are still targets of a rethrow are flagged as such. (process_nestinfo): New static function to initialize a handler list for a specific region. (init_eh_nesting_info): New function to allocate and initialize the list of all EH handlers reachable from all regions. (reachable_handlers): New function to retrieve the list of handlers reachable from a specific region and insn. (free_eh_nesting_info): New function to dispose of a list of reachable handlers. From-SVN: r28647
1999-08-10flow.c (split_edge): Set JUMP_LABEL field.Andrew MacLeod1-1/+11
* flow.c (split_edge): Set JUMP_LABEL field. (commit_one_edge_insertion): Set head correctly for insert_before. When inserting insns, update insn block numbers if allocated. From-SVN: r28646
1999-08-09Include function.h in most files.Bernd Schmidt1-3/+0
Include function.h in most files. Remove most of the global variables duplicated in function.h. Add accessor macros for them which access current_function. Delete INLINE_HEADER rtx and related code, replace with code using struct function to store inlining related data. From-SVN: r28626
1999-08-07jump.c (onlyjump_p): New function.Richard Henderson1-10/+6
* jump.c (onlyjump_p): New function. * rtl.h: Declare it. * flow.c (delete_unreachable_blocks): Use onlyjump_p instead of condjump_p in calling tidy_fallthru_edge and merge_blocks. From-SVN: r28584
1999-08-04flow.c (delete_unreachable_blocks): Do not call merge_blocks or ↵Jeffrey A Law1-1/+11
tidy_fallthru_edge if... * flow.c (delete_unreachable_blocks): Do not call merge_blocks or tidy_fallthru_edge if the last insn in the block is not an unconditional jump or a simple conditional jump. From-SVN: r28483
1999-07-31Backport of GC branch patches part 1: kill eh status saving.Bernd Schmidt1-0/+1
From-SVN: r28357
1999-07-01except.c: Include intl.h.Richard Henderson1-0/+1
X * except.c: Include intl.h. (expand_eh_return): Set current_function_cannot_inline. (save_eh_status, restore_eh_status): Twiddle eh_return_stub_label. * function.h (struct function): Add eh_return_stub_label. * flow.c (delete_unreachable_blocks): Don't merge across EH edges. * Makefile.in (except.o): Depend on intl.h. From-SVN: r27909
1999-05-31flow.c (mark_regs_live_at_end, [...]): Only give FRAME_POINTER_REGNUM and ↵John Wehle1-11/+22
HARD_FRAME_POINTER_REGNUM special treatment... * flow.c (mark_regs_live_at_end, insn_dead_p, mark_set_1, mark_used_regs): Only give FRAME_POINTER_REGNUM and HARD_FRAME_POINTER_REGNUM special treatment if reload hasn't run or the frame pointer is needed. * haifa-sched.c (attach_deaths): Likewise. * sched.c (attach_deaths): Likewise. From-SVN: r27276
1999-05-26Revert previous deltaNick Clifton1-6/+4
From-SVN: r27166
1999-05-26Check against frame_pointer_rtx not FRAME_POINTER_REGNUMNick Clifton1-4/+6
From-SVN: r27165
1999-05-25flow.c (mark_set_1): Do not record BLKmode stores as dead store elimination ↵Jeffrey A Law1-0/+3
candidates. � * flow.c (mark_set_1): Do not record BLKmode stores as dead store elimination candidates. From-SVN: r27140
1999-04-27rtl.h (REG_EH_REGION): Update comment to indicate a value of -1 indicates no ↵Andrew MacLeod1-29/+23
throw and no nonlocal gotos. Tue Apr 27 19:50:25 EDT 1999 Andrew MacLeod <amacleod@cygnus.com> * rtl.h (REG_EH_REGION): Update comment to indicate a value of -1 indicates no throw and no nonlocal gotos. * optabs.c (emit_libcall_block): Emit REG_EH_REGION with a value of -1 instead of 0 to indicate a nonlocal goto won't happen either. * flow.c (count_basic_blocks, find_basic_blocks_1): Ignore libcall blocks, look for REG_EH_REGION note exclusively. (make_edges): Check for REG_EH_REGION > 0 for specified handlers. From-SVN: r26680
1999-04-14flow.c: (make_edges): Always make edges from a basic block to its exception ↵Andrew Haley1-1/+1
handlers... * flow.c: (make_edges): Always make edges from a basic block to its exception handlers, even if the block ends with a jump. From-SVN: r26464
1999-04-11flow.c (flow_delete_insn): If we delete a CODE_LABEL...Jeffrey A Law1-0/+3
* flow.c (flow_delete_insn): If we delete a CODE_LABEL, also remove it from the nonlocal_goto_handler_labels list. * jump.c (delete_insn): Likewise. (jump_optimize_1): Also recompute LABEL_NUSES when we are just marking labels. * rtl.h (remove_node_from_expr_list): Declare. * rtlanal.c (remove_node_from_expr_list): New function. From-SVN: r26361
1999-04-10flow.c (life_analysis): New parameter remove_dead_code.Jan Hubicka1-15/+22
* flow.c (life_analysis): New parameter remove_dead_code. (life_analysis_1): Likewise. (propagate_block): Likewise; use it. * output.h: Update prototype. * toplev.c: Update calls to life_analysis. From-SVN: r26343
1999-04-10flow.c (merge_blocks_nomove): Rewrite to properly handle two blocks that ↵Richard Henderson1-50/+50
vanish entirely during merging. * flow.c (merge_blocks_nomove): Rewrite to properly handle two blocks that vanish entirely during merging. From-SVN: r26339
1999-04-09Fix comments/ChangeLog entry for last night's change.Jeffrey A Law1-4/+3
From-SVN: r26320
1999-04-08flow.c (delete_unreachable_blocks): Do not require an edge to be marked with ↵Jeffrey A Law1-12/+15
EDGE_FALLTHRU when... * flow.c (delete_unreachable_blocks): Do not require an edge to be marked with EDGE_FALLTHRU when tidying an edge which connects consecutive basic blocks. * flow.c (can_delete_label_p): Do not convert a label into a deleted label here. From-SVN: r26306
1999-04-06flow.c (verify_flow_info): New function.Richard Henderson1-9/+230
* flow.c (verify_flow_info): New function. (find_basic_blocks): Call it if ENABLE_CHECKING. (merge_blocks): Don't merge if there are non-deletable labels. * toplev.c (fatal_insn): Allow a printf-style arg list. * toplev.h (fatal_insn): Update prototype. From-SVN: r26226
1999-04-06Jan Hubicka <hubicka@paru.cas.cz>Jan Hubicka1-8/+17
Jan Hubicka <hubicka@paru.cas.cz> * flow.c (split_edge) update correctly flow graph, disable EDGE_CRITICAL flag on the split edge, update NUSES for new label. From-SVN: r26222
1999-04-06flow.c (create_basic_block): Make sure the bb note is in the block.Richard Henderson1-15/+17
* flow.c (create_basic_block): Make sure the bb note is in the block. (can_delete_note_p): Rename from delete_note_p. (delete_insn_chain): Preserve undeleteable labels too. (tidy_fallthru_edge): Use next_real_insn instead of confusing inline code. From-SVN: r26220
1999-03-31flow.c (find_basic_blocks): New argument `do_cleanup'.Richard Henderson1-17/+29
* flow.c (find_basic_blocks): New argument `do_cleanup'. Conditionally call delete_unreachable_blocks. (free_basic_block_vars): Zero ENTRY/EXIT data. (allocate_for_life_analysis): Kill. Split into... (allocate_bb_life_data, allocate_reg_life_data): ... new functions. (life_analysis_1): Update. * gcse.c (gcse_main): Update find_basic_blocks call. * toplev.c (rest_of_compilation): Likewise. * stupid.c (stupid_life_analysis): Update life data calls. * rtl.h, output.h: Update prototypes. From-SVN: r26090
1999-03-27* flow.c (mark_used_regs): Improve handling of ASMs.Jeffrey A Law1-2/+44
From-SVN: r26014
1999-03-21Preserve programmer specified labels, and emit debug info for them even ifNick Clifton1-2/+13
they are deleted. From-SVN: r25883
1999-03-20Warning fixes:Kaveh R. Ghazi1-2/+4
* c-lex.c (yylex): Remove unused variable `bytes'. * flow.c (print_rtl_with_bb): Cast the return value of alloca. * function.c (assign_parms): Wrap variable `varargs_setup' in macro SETUP_INCOMING_VARARGS. (thread_prologue_and_epilogue_insns): Mark parameter `f' with ATTRIBUTE_UNUSED. * local-alloc.c (no_equiv): Likewise for parameter `store'. * sched.c (schedule_insns): Remove unused variables `insn' and `next'. * tlink.c (symbol_hash_newfunc, symbol_hash_lookup, file_hash_newfunc, file_hash_lookup, demangled_hash_newfunc, demangled_hash_lookup, symbol_push, symbol_pop, file_push, file_pop, tlink_init, tlink_execute, frob_extension, obstack_fgets, tfgets, pfgets, freadsym, read_repo_file, maybe_tweak, recompile_files, read_repo_files, demangle_new_symbols, scan_linker_output): Add static prototype. (symbol_hash_newfunc, file_hash_newfunc, demangled_hash_newfunc): Make the third argument a `hash_table_key'. * toplev.c (debug_start_source_file): Mark parameter `filename' with ATTRIBUTE_UNUSED. From-SVN: r25871
1999-03-17flow.c (compute_immediate_dominators): New function.Richard Henderson1-0/+40
* flow.c (compute_immediate_dominators): New function. * basic-block.h (compute_immediate_dominators): Declare it. From-SVN: r25831
1999-03-09flow.c (tidy_fallthru_edge): Be more careful finding the last BARRIER of a list.Richard Henderson1-8/+14
* flow.c (tidy_fallthru_edge): Be more careful finding the last BARRIER of a list. Delete the cc0 setter as well as a cond jump. From-SVN: r25656
1999-03-08flow.c (merge_blocks_nomove): For HAVE_cc0 targets...Jeffrey A Law1-0/+13
� * flow.c (merge_blocks_nomove): For HAVE_cc0 targets, make sure to also delete the cc0 setter when deleting a conditional branch to the next block. From-SVN: r25642
1999-03-06flow.c (make_edges): Handle casesi that jump to default branch.Richard Earnshaw1-2/+18
* flow.c (make_edges): Handle casesi that jump to default branch. If CASE_DROPS_THROUGH, force fallthru to block after casesi. Co-Authored-By: Richard Henderson <rth@cygnus.com> From-SVN: r25617
1999-03-04flow.c (delete_unreachable_blocks): Mark blocks as they are put on to the ↵Richard Henderson1-5/+10
worklist, not as they are taken off. * flow.c (delete_unreachable_blocks): Mark blocks as they are put on to the worklist, not as they are taken off. From-SVN: r25584
1999-02-28* flow.c (create_basic_block): Disregard integrated bb notes.Richard Henderson1-0/+1
From-SVN: r25510
1999-02-25Flow rewrite to use basic block structures and edge lists.Richard Henderson1-955/+1850
From-SVN: r25450
1999-01-26Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog forJeffrey A Law1-2/+3
details. From-SVN: r24879
1999-01-19flow.c (invalidate_from_autoinc): New function.Jeffrey A Law1-1/+47
* flow.c (invalidate_from_autoinc): New function. (mark_set_1, mark_used_regs): Use it. From-SVN: r24781