diff options
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-xtensa.c | 14 | ||||
-rw-r--r-- | gas/config/tc-xtensa.h | 2 |
3 files changed, 16 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 88f641ee7c6..0593f7c1d92 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2005-06-07 Bob Wilson <bob.wilson@acm.org> + + * config/tc-xtensa.h (resource_table): Change units to unsigned chars. + * config/tc-xtensa.c (new_resource_table): Likewise. + (resize_resource_table): Likewise. + (release_resources): Fix assertion for unsigned values. + 2005-06-07 Zack Weinberg <zack@codesourcery.com> * cgen.c, cgen.h, tc.h, write.c, config/obj-coff.c diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c index 535a19d7fa8..a93f57eaf8e 100644 --- a/gas/config/tc-xtensa.c +++ b/gas/config/tc-xtensa.c @@ -5788,9 +5788,9 @@ new_resource_table (void *data, rt->opcode_unit_use = ouuf; rt->opcode_unit_stage = ousf; - rt->units = (char **) xcalloc (cycles, sizeof (char *)); + rt->units = (unsigned char **) xcalloc (cycles, sizeof (unsigned char *)); for (i = 0; i < cycles; i++) - rt->units[i] = (char *) xcalloc (nu, sizeof (char)); + rt->units[i] = (unsigned char *) xcalloc (nu, sizeof (unsigned char)); return rt; } @@ -5820,11 +5820,13 @@ resize_resource_table (resource_table *rt, int cycles) old_cycles = rt->allocated_cycles; rt->allocated_cycles = cycles; - rt->units = xrealloc (rt->units, sizeof (char *) * rt->allocated_cycles); + rt->units = xrealloc (rt->units, + rt->allocated_cycles * sizeof (unsigned char *)); for (i = 0; i < old_cycles; i++) - rt->units[i] = xrealloc (rt->units[i], sizeof (char) * rt->num_units); + rt->units[i] = xrealloc (rt->units[i], + rt->num_units * sizeof (unsigned char)); for (i = old_cycles; i < cycles; i++) - rt->units[i] = xcalloc (rt->num_units, sizeof (char)); + rt->units[i] = xcalloc (rt->num_units, sizeof (unsigned char)); } @@ -5876,8 +5878,8 @@ release_resources (resource_table *rt, xtensa_opcode opcode, int cycle) { xtensa_funcUnit unit = (rt->opcode_unit_use) (rt->data, opcode, i); int stage = (rt->opcode_unit_stage) (rt->data, opcode, i); + assert (rt->units[stage + cycle][unit] > 0); rt->units[stage + cycle][unit]--; - assert (rt->units[stage + cycle][unit] >= 0); } } diff --git a/gas/config/tc-xtensa.h b/gas/config/tc-xtensa.h index 99ff19a50c2..56c38f9984e 100644 --- a/gas/config/tc-xtensa.h +++ b/gas/config/tc-xtensa.h @@ -418,7 +418,7 @@ typedef struct opcode_num_units_func opcode_num_units; opcode_funcUnit_use_unit_func opcode_unit_use; opcode_funcUnit_use_stage_func opcode_unit_stage; - char **units; + unsigned char **units; } resource_table; resource_table *new_resource_table |