summaryrefslogtreecommitdiff
path: root/gcc/genattrtab.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1994-01-31 20:43:02 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1994-01-31 20:43:02 +0000
commite4304442b53e86930c292ee1705d020fa75e8c87 (patch)
treec060327dd8273d80e7f1a8eb9750da5fdbec9fe2 /gcc/genattrtab.c
parenta1125164a19399284d247a1bb2d46b7a4b5da187 (diff)
downloadgcc-e4304442b53e86930c292ee1705d020fa75e8c87.tar.gz
(expand_units): When calculate BLOCKAGE, reverse
terms to POS_MINUS_OP. Clarify comment before BLOCKAGE computation. (write_complex_function): Use EXECUTING_INSN for first switch, and CANDIDATE_INSN for second switch. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@6442 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/genattrtab.c')
-rw-r--r--gcc/genattrtab.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index 7e93348c928..865c0e74703 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -1954,6 +1954,10 @@ expand_units ()
candidate insn, so in the expressions below, C is a known
term and E is an unknown term.
+ We compute the blockage cost for each E for every possible C.
+ Thus OP represents E, and READYCOST is a list of values for
+ every possible C.
+
The issue delay function for C is op->issue_exp and is used to
write the `<name>_unit_conflict_cost' function. Symbolicly
this is "ISSUE-DELAY (E,C)".
@@ -1995,8 +1999,8 @@ expand_units ()
* unit->issue_delay.min));
if (delay > 0)
- blockage = operate_exp (POS_MINUS_OP, blockage,
- make_numeric_value (delay));
+ blockage = operate_exp (POS_MINUS_OP,
+ make_numeric_value (delay), blockage);
blockage = operate_exp (MAX_OP, blockage, op->issue_exp);
blockage = simplify_knowing (blockage, unit->condexp);
@@ -5114,7 +5118,7 @@ write_complex_function (unit, name, connection)
printf ("{\n");
printf (" rtx insn;\n");
printf (" int casenum;\n\n");
- printf (" insn = candidate_insn;\n");
+ printf (" insn = executing_insn;\n");
printf (" switch (recog_memoized (insn))\n");
printf (" {\n");
@@ -5136,7 +5140,7 @@ write_complex_function (unit, name, connection)
/* Now write an outer switch statement on each case. Then write
the tests on the executing function within each. */
- printf (" insn = executing_insn;\n");
+ printf (" insn = candidate_insn;\n");
printf (" switch (casenum)\n");
printf (" {\n");