aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-02-16 12:39:39 -0800
committerJim Wilson <wilson@gcc.gnu.org>1994-02-16 12:39:39 -0800
commit81fe0dbc99a48b3e8efa5c3ed972514961e32705 (patch)
tree88883ffdf8d9e57437220bdf8e76ba3a3013185e /gcc
parentafbc98a500847c32c305d9736730ce2c38b181a7 (diff)
downloadgcc-81fe0dbc99a48b3e8efa5c3ed972514961e32705.zip
gcc-81fe0dbc99a48b3e8efa5c3ed972514961e32705.tar.gz
gcc-81fe0dbc99a48b3e8efa5c3ed972514961e32705.tar.bz2
(expand_units): Fix blockage calculation.
From-SVN: r6575
Diffstat (limited to 'gcc')
-rw-r--r--gcc/genattrtab.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index 55ec225..851d23b 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -2003,16 +2003,19 @@ expand_units ()
for (op = unit->ops; op; op = op->next)
{
- rtx blockage = readycost;
- int delay = op->ready - 1;
+ rtx blockage = operate_exp (POS_MINUS_OP, readycost,
+ make_numeric_value (1));
if (unit->simultaneity != 0)
- delay = MIN (delay, ((unit->simultaneity - 1)
- * unit->issue_delay.min));
+ {
+ rtx filltime = make_numeric_value ((unit->simultaneity - 1)
+ * unit->issue_delay.min);
+ blockage = operate_exp (MIN_OP, blockage, filltime);
+ }
- if (delay > 0)
- blockage = operate_exp (POS_MINUS_OP,
- make_numeric_value (delay), blockage);
+ blockage = operate_exp (POS_MINUS_OP,
+ make_numeric_value (op->ready),
+ blockage);
blockage = operate_exp (MAX_OP, blockage, op->issue_exp);
blockage = simplify_knowing (blockage, unit->condexp);