* regclass.c (record_reg_classes): Handle INOUT operands propertly.
From-SVN: r30912
This commit is contained in:
parent
5a5e9ce690
commit
d5e2075dbf
2 changed files with 28 additions and 12 deletions
|
@ -1,3 +1,7 @@
|
|||
Tue Dec 14 12:07:29 MET 1999 Jan Hubicka <hubicka@freesoft.cz>
|
||||
|
||||
* regclass.c (record_reg_classes): Handle INOUT operands propertly.
|
||||
|
||||
1999-12-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/sparc/linux64.h (TARGET_LIVE_G0,
|
||||
|
|
|
@ -1306,18 +1306,24 @@ record_reg_classes (n_alts, n_ops, ops, modes, subreg_changes_size,
|
|||
|
||||
for (class = 0; class < N_REG_CLASSES; class++)
|
||||
pp->cost[class]
|
||||
= (recog_data.operand_type[i] == OP_IN
|
||||
? may_move_in_cost[class][(int) classes[i]]
|
||||
: may_move_out_cost[(int) classes[i]][class]);
|
||||
= ((recog_data.operand_type[i] != OP_OUT
|
||||
? may_move_in_cost[class][(int) classes[i]]
|
||||
: 0)
|
||||
+ (recog_data.operand_type[i] != OP_IN
|
||||
? may_move_out_cost[(int) classes[i]][class]
|
||||
: 0));
|
||||
|
||||
/* If the alternative actually allows memory, make things
|
||||
a bit cheaper since we won't need an extra insn to
|
||||
load it. */
|
||||
|
||||
pp->mem_cost
|
||||
= (MEMORY_MOVE_COST (mode, classes[i],
|
||||
recog_data.operand_type[i] == OP_IN)
|
||||
- allows_mem[i]);
|
||||
= ((recog_data.operand_type[i] != OP_IN
|
||||
? MEMORY_MOVE_COST (mode, classes[i], 0)
|
||||
: 0)
|
||||
+ (recog_data.operand_type[i] != OP_OUT
|
||||
? MEMORY_MOVE_COST (mode, classes[i], 1)
|
||||
: 0) - allows_mem[i]);
|
||||
|
||||
/* If we have assigned a class to this register in our
|
||||
first pass, add a cost to this alternative corresponding
|
||||
|
@ -1527,18 +1533,24 @@ record_reg_classes (n_alts, n_ops, ops, modes, subreg_changes_size,
|
|||
|
||||
for (class = 0; class < N_REG_CLASSES; class++)
|
||||
pp->cost[class]
|
||||
= (recog_data.operand_type[i] == OP_IN
|
||||
? may_move_in_cost[class][(int) classes[i]]
|
||||
: may_move_out_cost[(int) classes[i]][class]);
|
||||
= ((recog_data.operand_type[i] != OP_OUT
|
||||
? may_move_in_cost[class][(int) classes[i]]
|
||||
: 0)
|
||||
+ (recog_data.operand_type[i] != OP_IN
|
||||
? may_move_out_cost[(int) classes[i]][class]
|
||||
: 0));
|
||||
|
||||
/* If the alternative actually allows memory, make things
|
||||
a bit cheaper since we won't need an extra insn to
|
||||
load it. */
|
||||
|
||||
pp->mem_cost
|
||||
= (MEMORY_MOVE_COST (mode, classes[i],
|
||||
recog_data.operand_type[i] == OP_IN)
|
||||
- allows_mem[i]);
|
||||
= ((recog_data.operand_type[i] != OP_IN
|
||||
? MEMORY_MOVE_COST (mode, classes[i], 0)
|
||||
: 0)
|
||||
+ (recog_data.operand_type[i] != OP_OUT
|
||||
? MEMORY_MOVE_COST (mode, classes[i], 1)
|
||||
: 0) - allows_mem[i]);
|
||||
|
||||
/* If we have assigned a class to this register in our
|
||||
first pass, add a cost to this alternative corresponding
|
||||
|
|
Loading…
Add table
Reference in a new issue