On Sat, Nov 23, 2013 at 8:21 PM, Mike Stump <mikest...@comcast.net> wrote:
> Richi has asked the we break the wide-int patch so that the individual port 
> and front end maintainers can review their parts without have to go through 
> the entire patch.    This patch covers the cfg code.
>
> Ok?

Hmm, this is an example of a wide_int (a widest_int) being used inside
a structure with long lifetime.  With the patch there are two of those
per loop plus up to one per statement in a loop body (quadratic in
the loop depth).

Currently sizeof (loop) is 160 and sizeof (nb_iter_bound) is 40 on x86_64,
on the branch they are 288 and 104 - that's quite a big overhead.  It looks
like x86_64 defines up to XImode (eh, for whatever reason), but certainly
integer math beyond __int128_t (thus TImode) is not supported.

What's the reason to bound MAX_BITSIZE_MODE_ANY_INT to the
excessively large value?  I suppose we should have a target hook
(or macro, for the ease of gen*) that defines this instead of auto-figuring it
to something that's a factor of four lager than required ...

Now, for the number-of-iterations stuff I really would like to keep things
cheaper in some way or another.  Shrinking MAX_BITSIZE_MODE_ANY_INT
would be the easiest improvement for x86_64.  Allocating the
values separately would be another option (and then only allocate
as many words as you need, of course) - there are already
flags in the structure making the values valid/invalid that can then be
subsumed by NULL pointers.

That said, I'd like this to be addressed.

Thanks,
Richard.

Reply via email to