Commit 078a70a1 by Adam Nemet Committed by Adam Nemet

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
parent 38c4df0b
2008-09-17 Adam Nemet <anemet@caviumnetworks.com>
* 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 <joseph@codesourcery.com> 2008-09-17 Joseph Myers <joseph@codesourcery.com>
* expr.c (emit_group_store): Do not shift before moving via a * expr.c (emit_group_store): Do not shift before moving via a
......
...@@ -646,10 +646,12 @@ insn_cost (rtx insn) ...@@ -646,10 +646,12 @@ insn_cost (rtx insn)
/* Compute cost of dependence LINK. /* Compute cost of dependence LINK.
This is the number of cycles between instruction issue and 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 int
dep_cost_1 (dep_t link, dw_t dw) dep_cost_1 (dep_t link, dw_t dw)
{ {
rtx insn = DEP_PRO (link);
rtx used = DEP_CON (link); rtx used = DEP_CON (link);
int cost; int cost;
...@@ -657,10 +659,12 @@ dep_cost_1 (dep_t link, dw_t dw) ...@@ -657,10 +659,12 @@ dep_cost_1 (dep_t link, dw_t dw)
This allows the computation of a function's result and parameter This allows the computation of a function's result and parameter
values to overlap the return and call. */ values to overlap the return and call. */
if (recog_memoized (used) < 0) if (recog_memoized (used) < 0)
cost = 0; {
cost = 0;
recog_memoized (insn);
}
else else
{ {
rtx insn = DEP_PRO (link);
enum reg_note dep_type = DEP_TYPE (link); enum reg_note dep_type = DEP_TYPE (link);
cost = insn_cost (insn); cost = insn_cost (insn);
...@@ -2312,8 +2316,14 @@ choose_ready (struct ready_list *ready, rtx *insn_ptr) ...@@ -2312,8 +2316,14 @@ choose_ready (struct ready_list *ready, rtx *insn_ptr)
{ {
insn = ready_element (ready, i); 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 gcc_assert (INSN_CODE (insn) >= 0
|| recog_memoized (insn) < 0); || recog_memoized (insn) < 0);
#endif
ready_try [i] ready_try [i]
= (/* INSN_CODE check can be omitted here as it is also done later = (/* INSN_CODE check can be omitted here as it is also done later
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment