summaryrefslogtreecommitdiff
path: root/gcc/see.c
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2007-10-22 19:28:23 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2007-10-22 19:28:23 +0000
commitebc94641ff3e0c2c1b02d02147eb2738c86577e3 (patch)
treece100096d41a38847cdcf3bd954b2e8fbcdd6bd2 /gcc/see.c
parenta8cb6ebcf2203cf9456618c144b2daf0572c46e9 (diff)
downloadgcc-ebc94641ff3e0c2c1b02d02147eb2738c86577e3.tar.gz
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
Diffstat (limited to 'gcc/see.c')
-rw-r--r--gcc/see.c11
1 files changed, 5 insertions, 6 deletions
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;