aboutsummaryrefslogtreecommitdiff
path: root/gcc/dce.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2007-10-02 01:42:46 +0000
committerAlexandre Oliva <aoliva@redhat.com>2007-10-02 01:42:46 +0000
commitae5f545b87fcdd5a7a169ac726a80da6bb279833 (patch)
treee879a82155cf348d4ba3ca69ef67df80aeb1fab7 /gcc/dce.c
parent18709e5e8a145296bac1ce2c07aa088e0b164018 (diff)
* expr.c (expand_expr_real_1): Reject debug exprs.var-tracking-assignments-mergepoint-before-129153
* cfgexpand.c (floor_sdiv_adjust): New fn. (ceil_sdiv_adjust): New fn. (ceil_udiv_adjust): New fn. (round_sdiv_adjust): New fn. (round_udiv_adjust): New fn. (expand_debug_expr): New fn. (expand_gimple_basic_block): Handle debug stmts. * cfgrtl.c (rtl_block_ends_with_call_p): Ignore debug insns. * rtl.h (DEBUG_INSN_P): New macro. (MAY_HAVE_DEBUG_INSNS): New macro. (INSN_P): Accept debug insns. (RTX_FRAME_RELATED_P): Likewise. (INSN_DELETED_P): Likewise. (PAT_VAR_LOCATION_DECL): New macro. (PAT_VAR_LOCATION_LOC): New macro. (NOTE_VAR_LOCATION_DECL): Reimplement. (NOTE_VAR_LOCATION_LOC): Likewise. (NOTE_VAR_LOCATION_STATUS): Likewise. (INSN_VAR_LOCATION): New macro. (INSN_VAR_LOCATION_DECL): Likewise. (INSN_VAR_LOCATION_LOC): Likewise. (INSN_VAR_LOCATION_STATUS): Likewise. (gen_rtx_UNKNOWN_VAR_LOC): New macro. (VAR_LOC_UNKNOWN_P): New macro. (SCHED_GROUP_P): Accept debug insns. (emit_debug_insn_before): Declare. (emit_debug_insn_before_noloc): Likewise. (emit_debug_insn_before_setloc): Likewise. (emit_debug_insn_after): Likewise. (emit_debug_insn_after_noloc): Likewise. (emit_debug_insn_after_setloc): Likewise. (emit_debug_insn): Likewise. (make_debug_insn_raw): Likewise. * recog.c (verify_changes): Accept debug insns. (extract_insn): Handle them. (peephole2_optimize): Skip them. * dce.c (deletable_insn_p): Handle debug insns. * reload1.c (reload): Don't scan subregs in debug insns. (eliminate_regs_in_insn): Handle debug insns. * cse.c (cse_insn): Handle debug insns. (cse_extended_basic_block): Likewise. (insn_live_p): Likewise. * emit-rtl.c (copy_rtx_if_shared_1): Handle debug insns. (reset_used_flags): Likewise. (set_used_flags): Likewise. (active_insn_p): Exclude debug insns. (make_debug_insn_raw): New fn. (emit_insn_before_noloc): Handle debug insns. (emit_jump_insn_before_noloc): Likewise. (emit_call_insn_before_noloc): Likewise. (emit_debug_insn_before_noloc): New fn. (emit_insn_after_noloc): Handle debug insns. (emit_jump_insn_after_noloc): Likewise. (emit_call_insn_after_noloc): Likewise. (emit_debug_insn_after_noloc): New fn. (emit_debug_insn_after_setloc): New fn. (emit_debug_insn_after): New fn. (emit_debug_insn_before_setloc): New fn. (emit_debug_insn_before): New fn. (emit_insn): Handle debug insn. (emit_debug_insn): New fn. (emit_jump_insn): Handle debug insn. (emit_call_insn): Likewise. (emit): Likewise. (emit_copy_of_insn_after): Likewise. * reg-stack.c (subst_stack_regs_pat): Handle var location rtx. * var-tracking.c (MO_LOC_MAIN, MO_LOC_USE): New micro ops. (var_reg_decl_set): New fn. (var_reg_set): Adjust. (var_mem_decl_set): New fn. (var_mem_set): Adjust. (use_type): New fn. (count_uses, add_uses, add_stores): Adjust. (compute_bb_dataflow): Handle new micro ops. (emit_notes_in_bb): Likewise. (vt_initialize): Likewise. (delete_debug_insns): New fn. (vt_debug_insns_local): New fn. (variable_tracking_main): Call it. * final.c (get_attr_length_1): Handle debug insns. * lower-subreg.c (adjust_decomposed_uses): New fn. (resolve_debug): New fn. (decompose_multiword_subregs): Handle debug insns. * print-rtl.c (print_rtx): Likewise. * ifcvt.c (first_active_insn): Skip debug insns. (last_active_insn): Likewise. (cond_exec_process_insns): Handle debug insns. (check_cond_move_block): Likewise. (cond_move_convert_if_block): Likewise. (block_jumps_and_fallthru_p): Likewise. (dead_or_predicable): Likewise. * cfgcleanup.c (flow_find_cross_jump): Skip debug insns. * combine.c (create_log_links): Skip debug insns. (combine_instructions): Likewise. (rtx_subst_pair): New struct. (propagate_for_debug_subst): New fn. (propagate_for_debug): New fn. (try_combine): Call it. (distribute_links): Handle debug insns. * df-problems.c (df_lr_bb_local_compute): Likewise. (df_set_note): Reject debug insns. (df_set_dead_notes_for_mw): Add added_notes_p argument. (df_note_bb_compute): Handle debug insns. (df_simulate_uses): Likewise. (df_simulate_one_insn_forwards): Likewise. (df_simulate_one_insn_backwards): Likewise. * df-scan.c (df_insn_rescan_1): Renamed with new argument, from... (df_insn_rescan): ... this. Implement in terms of new name. (df_insn_rescan_debug_internal): New fn. (df_uses_record): Handle debug insns. * haifa-sched.c (contributes_to_priority_p): Likewise. (nondebug_dep_list_size): New fn. (priority, add_jump_dependencies): Use it. (rank_for_schedule): Handle debug insns. (schedule_block): Always accept more debug insns. * local-alloc.c (block_alloc): Handle debug insns. * regrename.c (replace_oldest_value_reg): ??? Test without this (replace_oldest_value_addr): Handle debug insns. (replace_oldest_value_mem): Likewise. (copyprop_hardreg_forward_1): Likewise. * regstat.c (regstat_init_n_sets_and_refs): Skip debug uses. (regstat_bb_compute_ri): Skip debug insns. * sched-rgn.c (add_branch_dependences): Likewise. * sched-vis.c (print_pattern): Handle debug insns. * regmove.c (optimize_reg_copy_1): Don't count debug insns. (fixup_match_2): Likewise. (regmove_optimize): Handle debug insns. (fixup_match_1): Don't count debug insns. Adjust them. * gcse.c (allolc_gcse_mem): Don't allocate uid for debug isnsn. (bypass_conditional_jumps): Skip debug insns. (compute_ld_motion_mems): Likewise. * sched-deps.c (sched_analyze_2): Handle debug insns. (sched_analyze_insn): Likewise. (sched_analyze): Likewise. * init-regs.c (initialize_uninitialized_regs): Skip debug insns. * dse.c (scan_insn): Keep debug insns. * resource.c (mark_target_live_regs): Skip debug insns. * rtlanal.c (canonicalize_condition): Likewise. * df.h (df_insn_rescan_debug_internal): Declare. * dwarf2out.c (mem_loc_descriptor): Ignore sign and zero extend. (loc_descriptor): Likewise. * function.c (instantiate_virtual_regs): Handle debug insns. * rtl.def (DEBUG_INSN): New rtl code. * cfgbuild.c (inside_basic_block_p): Handle debug insns. (control_flow_insn_p): Likewise. * cfglayout.c (duplicate_insn_chain): Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/var-tracking-assignments-branch@128946 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dce.c')
-rw-r--r--gcc/dce.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/dce.c b/gcc/dce.c
index dec86692bf6..7e02e215263 100644
--- a/gcc/dce.c
+++ b/gcc/dce.c
@@ -104,6 +104,7 @@ deletable_insn_p (rtx insn, bool fast)
switch (GET_CODE (body))
{
case USE:
+ case VAR_LOCATION:
return false;
case CLOBBER: