* regclass.c (record_reg_classes): Handle INOUT operands propertly.
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Dec 1999 11:08:22 +0000 (11:08 +0000)
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Dec 1999 11:08:22 +0000 (11:08 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30912 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/regclass.c

index a70142a..de821d4 100644 (file)
@@ -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,
index 630e3e8..f48a7c2 100644 (file)
@@ -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