On 11/29/2013 05:24 AM, Richard Biener wrote: > On Thu, Nov 28, 2013 at 6:11 PM, Kenneth Zadeck > wrote: >> This patch does three things in wide-int: >> >> 1) it cleans up some comments. >> 2) removes a small amount of trash. >> 3) it changes the max size of the wide int from being 4x of >> MAX_BITSIZE_MODE_ANY_INT to 2x +1. This should improve large muls and divs >> as well as perhaps help with some cache behavior. > @@ -235,8 +233,8 @@ along with GCC; see the file COPYING3. > range of a multiply. This code needs 2n + 2 bits. */ > > #define WIDE_INT_MAX_ELTS \ > - ((4 * MAX_BITSIZE_MODE_ANY_INT + HOST_BITS_PER_WIDE_INT - 1) \ > - / HOST_BITS_PER_WIDE_INT) > + (((2 * MAX_BITSIZE_MODE_ANY_INT + HOST_BITS_PER_WIDE_INT - 1) \ > + / HOST_BITS_PER_WIDE_INT) + 1) > > I always wondered why VRP (if that is the only reason we do 2*n+1) > cannot simply use FIXED_WIDE_INT(MAX_BITSIZE_MODE_ANY_INT*2 + 1)? > Other widest_int users should not suffer IMHO. widest_int should > strictly cover all modes that the target can do any arithmetic on > (thus not XImode or OImode on x86_64). > > Richard. > >> ok to commit enclosed is the code to change the large multiplies in tree-vrp as well as sets the size of the WIDE_INT_MAX_ELTS as we have discussed. Bootstrapped and tested on x86-64. ok to commit? kenny