diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 983e3d9dcbf467c2f6e431cd449b017089dee4e1..68fe46565601780a5050d7279f4fa3f9d643b5bf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-01-18 Jan Hubicka <jh@suse.cz> + + * tree-ssa-operands.c (vop_free_bucket_size): Never return value + greater than NUM_VOP_FREE_BUCKETS. + 2007-01-18 Daniel Berlin <dberlin@dberlin.org> * tree-ssa-structalias.c: Update comments. diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 23e493a2b04fac3334d29ce5926acc7eb58108a9..0006de924493dd92bf3aa2413cf755f3e0af2489 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -305,15 +305,17 @@ vop_free_bucket_size (int bucket) static inline int vop_free_bucket_index (int num) { - gcc_assert (num > 0); + gcc_assert (num > 0 && NUM_VOP_FREE_BUCKETS > 16); /* Sizes 1 through 16 use buckets 0-15. */ if (num <= 16) return num - 1; - /* Buckets 16 - 45 represent 17 through 256 in 8 unit chunks. */ - if (num < 256) - return 14 + (num - 1) / 8; - return -1; + /* Buckets 16 - NUM_VOP_FREE_BUCKETS represent 8 unit chunks. */ + num = 14 + (num - 1) / 8; + if (num >= NUM_VOP_FREE_BUCKETS) + return -1; + else + return num; }