This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch, Fortran, OOP] PR 49638: [OOP] length parameter is ignored when overriding type bound character functions with constant length.
On Friday 19 August 2011 23:54:45 Janus Weil wrote:
> > I have one comment though about this:
> > +/* Compare two expressions. Return values:
> > + * +1 if e1 > e2
> > + * 0 if e1 == e2
> > + * -1 if e1 < e2
> > + * -2 if the relationship could not be determined
> > + * -3 if e1 /= e2, but we cannot tell which one is larger. */
> >
> > I think this is misleading, as the function does not always return -3
> > when e1/=e2.
>
> That's right. However, the same argument applies to the other values
> as well: The function does not always return 0 if e1==e2. There could
> be cases where the arguments are algebraically equal, but we fail to
> detect this (example: A+B+C vs C+B+A). This sort of "uncertainty" was
> not introduced by me, but was present before, and is not special to
> the value "-3".
>
> Describing the value -2 as "relationship could not be determined" sort
> of implies that this can happen. So I would tend to leave the
> description as it is.
OK, this comment really bugged me, but it's not that bad on second thought.
>
> > There is for example (currently) no special handling for operators.
>
> Well, unfortunately one cannot just return "-3" for non-matching
> operators. Just think of cases like A*(B+C) vs A*B+A*C.
Ah yes. I was thinking expressions themselves were compared; but only their
values are.
> One could try to handle such cases in a follow-up patch.
If you want. I wasn't asking you (or anyone else) to do it.
>
> I'll commit the patch (as posted) tomorrow, if Mikael agrees that the
> description is ok.
It's fine. Thanks.
Mikael.