Commit d601d5da by Jim Wilson

(reload): When decrement max_groups of superclass, can

only do so if the group_size is smaller than the current group.

From-SVN: r8539
parent e0bf6b33
...@@ -1653,7 +1653,11 @@ reload (first, global, dumpfile) ...@@ -1653,7 +1653,11 @@ reload (first, global, dumpfile)
max_groups[class]--; max_groups[class]--;
p = reg_class_superclasses[class]; p = reg_class_superclasses[class];
while (*p != LIM_REG_CLASSES) while (*p != LIM_REG_CLASSES)
max_groups[(int) *p++]--; {
if (group_size [(int) *p] <= group_size [class])
max_groups[(int) *p]--;
p++;
}
/* Indicate both these regs are part of a group. */ /* Indicate both these regs are part of a group. */
SET_HARD_REG_BIT (counted_for_groups, j); SET_HARD_REG_BIT (counted_for_groups, j);
...@@ -1768,8 +1772,12 @@ reload (first, global, dumpfile) ...@@ -1768,8 +1772,12 @@ reload (first, global, dumpfile)
max_groups[class]--; max_groups[class]--;
p = reg_class_superclasses[class]; p = reg_class_superclasses[class];
while (*p != LIM_REG_CLASSES) while (*p != LIM_REG_CLASSES)
max_groups[(int) *p++]--; {
if (group_size [(int) *p]
<= group_size [class])
max_groups[(int) *p]--;
p++;
}
break; break;
} }
} }
...@@ -2117,7 +2125,11 @@ count_possible_groups (group_size, group_mode, max_groups, class) ...@@ -2117,7 +2125,11 @@ count_possible_groups (group_size, group_mode, max_groups, class)
max_groups[class]--; max_groups[class]--;
p = reg_class_superclasses[class]; p = reg_class_superclasses[class];
while (*p != LIM_REG_CLASSES) while (*p != LIM_REG_CLASSES)
max_groups[(int) *p++]--; {
if (group_size [(int) *p] <= group_size [class])
max_groups[(int) *p]--;
p++;
}
/* Don't count these registers again. */ /* Don't count these registers again. */
for (j = 0; j < group_size[class]; j++) for (j = 0; j < group_size[class]; j++)
......
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