From ebc94641ff3e0c2c1b02d02147eb2738c86577e3 Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Mon, 22 Oct 2007 19:28:23 +0000 Subject: PR rtl-optimization/33644 * cfgcleanup.c: Do not include dce.h. * cfgrtl.c (delete_insn_chain_and_edges): Resurrect. * combine.c (distribute_notes): Delete REG_LIBCALL_ID case. * dce.c (something_changed): Delete. (libcall_dead_p): New predicate. (delete_unmarked_insns): Use it to delete dead libcalls. Deal with REG_LIBCALL and REG_RETVAL notes. (prescan_libcall_for_dce): New function. (prescan_insns_for_dce): Use it to deal with libcalls. (mark_reg_dependencies): Do nothing special for libcalls. (dce_process_block): Likewise. (fast_dce): Delete unused local variable. (run_fast_dce): Do not return a value. * dce.h (struct df): Delete. (run_fast_dce): Adjust prototype. * optabs.c (libcall_id): Delete. (maybe_encapsulate_block): Do not emit REG_LIBCALL_ID notes. (emit_no_conflict_block): Do not look for REG_LIBCALL_ID notes. * reload1.c (reload): Delete REG_LIBCALL_ID case. * rtl.h (delete_insn_chain_and_edges): Resurrect prototype. * see.c (see_update_relevancy): Look for REG_LIBCALL and REG_RETVAL notes instead of REG_LIBCALL_ID notes. * reg-notes.def (LIBCALL_ID): Delete. * Makefile.in (see.o): Add dce.h dependency. (cfgcleanup.o): Remove dce.h dependency. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129556 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/see.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'gcc/see.c') diff --git a/gcc/see.c b/gcc/see.c index 0302af2d94f..8191b2d8103 100644 --- a/gcc/see.c +++ b/gcc/see.c @@ -3649,9 +3649,9 @@ see_update_defs_relevancy (rtx insn, struct df_ref *ref, The information of the u'th use is stored in use_entry[u] and the information of the d'th definition is stored in def_entry[d]. - + Currently all the uses are relevant for the optimization except for - uses that are in LIBCALL instructions. */ + uses that are in LIBCALL or RETVAL instructions. */ static void see_update_relevancy (void) @@ -3676,13 +3676,12 @@ see_update_relevancy (void) unsigned int uid = INSN_UID (insn); if (INSN_P (insn)) { - - /* If this is an insn in a libcall, do not touch the uses. */ - if (find_reg_note (insn, REG_LIBCALL_ID, NULL_RTX)) + if (find_reg_note (insn, REG_LIBCALL, NULL_RTX) + || find_reg_note (insn, REG_RETVAL, NULL_RTX)) et = NOT_RELEVANT; else et = RELEVANT_USE; - + for (use_rec = DF_INSN_UID_USES (uid); *use_rec; use_rec++) { struct df_ref *use = *use_rec; -- cgit v1.2.1