This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch, fortran] PR38538 - ICE with elemental character function


Hi Paul,

Paul Richard Thomas wrote:
Not sure if I got this one correctly, but it seems to me this handles the
concatenation operator; if not, I do not see why we simply add the lengths
and are done.  If I'm right, maybe we should at least assert it here?

Well, I am adding the lengths but am converting the expressions recursively. I haven't thought this through entirely but I suspect that this function might be the best general purpose character length calculator that we have. I might just try rolling it out into other places that have cause trouble in the past.

Assert what, exactly?

As I understood the code in question, it calculates the character length of an EXPR_OP by adding both operands lengths'; this makes only sense for me if it is a concatenation operator. I'm not 100% sure on this, but thinking briefly about it, it also seems that concatentation is the only binary operator that exists for strings, isn't it?


So everything is fine, but if it is really like that, I would prefer to have at least a comment saying that we're left with concatenation and thusly explain why we add both lengths. Even better would be something like

gcc_assert (e->u.op.op == OP_CONCAT);
(with the names fixed accordingly)

If my assumption is not true, I would be happy to learn why we want to add both character lengths then, too :)

Cheers,
Daniel

--
Done:  Arc-Bar-Cav-Ran-Rog-Sam-Tou-Val-Wiz
To go: Hea-Kni-Mon-Pri


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]