On Nov 23, 2013, at 12:16 PM, Steve Kargl <s...@troutmask.apl.washington.edu> 
wrote:
> On Sat, Nov 23, 2013 at 11:21:21AM -0800, Mike Stump 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 fortran front end.
>> 
>> Ok?
>> 
>> +  *logical = wi::eq_p (t, 0) ? 0 : 1;
> 
> I can't find the meaning of :: in n1256.pdf.  What does this do?
> 
> Also, given the complete lack of a description of what this
> patch does and no pointer to a discussion of what this
> patch does, and no description of its benefit to gfortran,
> I vote "no".

I don't like the notion that one person says yes, and one says no, and then we 
ignore the no, and use the yes to approve a patch.  Can the fortran come up 
with a final unified answer…  Thanks.

The quoted code above merely tests to see if t is equal to 0, and set *logical 
to 0 is it is 0 and 1 if it's not.

wi::eq_p is read in English as, does equality hold in the wide-int sense of 
equality?

mpz::eq_p would mean then, does equality hold in the mpz sense of equality?

tree::eq_p would mean then, does equality hold in the tree sense of equality?

If you interested in the lower layer answer, wi::eq_p()  calls a function, 
whose name is wi::eq_p, with the given arguments, just like foo() calls foo, 
with the given arguments.

operator +(1, 2), for example, calls a function whose name is operator +, with 
the two arguments 1 and 2.  In C++ names, if you will, can be arbitrarily 
composed and grouped using types (classes) and namespaces.  classes are 
composition of 0 or more other types (think struct in C), and namespaces are 
not.  wi, is such a namespace and relates to a concept called wide int, inside 
that concept, there is a concept of equality; however, there is no data with 
wi, it isn't a class (a struct).  In normal C, it would be spelled wi_eq_p () 
as C doesn't (yet) have a grouping feature.

As for the patch, it is a simple bug fix to fix a few ICEs and wrong code 
generation bugs present in gcc.  Without it, gcc ICEs and produces wrong code, 
with it, it doesn't.  The bugs are usually in the 2*HWI and larger sizes (64 
bits for 32 hosts and 128 bit for 64 bit hosts). The benefit to fortran would 
be support for more correct code gen and a lessoning of ICEs on valid code.

Ok?

Reply via email to