From 078a70a15ed75e2e9ed4c4d09450b2522e82e6ae Mon Sep 17 00:00:00 2001 From: Adam Nemet Date: Thu, 18 Sep 2008 05:24:57 +0000 Subject: [PATCH] haifa-sched.c (dep_cost_1): Recognize the producer even if the consumer is an asm. * haifa-sched.c (dep_cost_1): Recognize the producer even if the consumer is an asm. Add comment why this is important. (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 || recog_memoized (insn) < 0" assert. Put ENABLE_CHECKING around it. From-SVN: r140444 --- gcc/ChangeLog | 8 ++++++++ gcc/haifa-sched.c | 16 +++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 81cddbc05fa..6c2e2b36225 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2008-09-17 Adam Nemet + + * haifa-sched.c (dep_cost_1): Recognize the producer even if the + consumer is an asm. Add comment why this is important. + (choose_ready): Add comment to the "INSN_CODE (insn) >= 0 || + recog_memoized (insn) < 0" assert. Put ENABLE_CHECKING around + it. + 2008-09-17 Joseph Myers * expr.c (emit_group_store): Do not shift before moving via a diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index ba604371745..46640c4a645 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -646,10 +646,12 @@ insn_cost (rtx insn) /* Compute cost of dependence LINK. This is the number of cycles between instruction issue and - instruction results. */ + instruction results. + ??? We also use this function to call recog_memoized on all insns. */ int dep_cost_1 (dep_t link, dw_t dw) { + rtx insn = DEP_PRO (link); rtx used = DEP_CON (link); int cost; @@ -657,10 +659,12 @@ dep_cost_1 (dep_t link, dw_t dw) This allows the computation of a function's result and parameter values to overlap the return and call. */ if (recog_memoized (used) < 0) - cost = 0; + { + cost = 0; + recog_memoized (insn); + } else { - rtx insn = DEP_PRO (link); enum reg_note dep_type = DEP_TYPE (link); cost = insn_cost (insn); @@ -2312,8 +2316,14 @@ choose_ready (struct ready_list *ready, rtx *insn_ptr) { insn = ready_element (ready, i); +#ifdef ENABLE_CHECKING + /* If this insn is recognizable we should have already + recognized it earlier. + ??? Not very clear where this is supposed to be done. + See dep_cost_1. */ gcc_assert (INSN_CODE (insn) >= 0 || recog_memoized (insn) < 0); +#endif ready_try [i] = (/* INSN_CODE check can be omitted here as it is also done later