Kenneth Zadeck <zad...@naturalbridge.com> writes:
> There is no place for exactly two HWIs in the machine independent parts 
> of the compiler,

I totally agree.  In fact I was taking that so much for granted that
I didn't even think to add a rider about it, sorry.  I didn't mean
to imply that we should keep double_int around.

I think the reason for doing this is to prove that it can be done
(so that the wide_int code isn't too big a change for the tree level)
and to make it easier to merge the wide-int patches into trunk piecemeal
if we need to.

> ==== small bugs below this line.
> bottom of frag 3 of gcc/cp/init.c is wrong:   you replaced 
> rshift...lshift with lshift...lshift.

Do you mean this bit:

        unsigned shift = (max_outer_nelts.get_precision ()) - 7
-         - max_outer_nelts.clz ().to_shwi ();
-       max_outer_nelts = max_outer_nelts.rshiftu (shift).lshift (shift);
+         - wi::clz (max_outer_nelts);
+       max_outer_nelts = wi::lshift (wi::lrshift (max_outer_nelts, shift),
+                                     shift);

?  That's lrshift (logical right shift).  I ended up using the double-int
names for right shifts.

That does remind me of another thing though.  I notice some of the wide-int
code assumes that shifting a signed HWI right gives an arithmetic shift,
but the language doesn't guarantee that.  We probably need to go through
and fix those.

> i will finish reading this tomorrow, but i wanted to get some comments 
> in for the early shift.    i stopped reading at line 1275.

Thanks.  TBH I've not really been through the third part myself to
double-check.  Will try to do that while waiting for comments on the
first part.

Richard

Reply via email to