On Mon, Nov 20, 2017 at 8:29 PM, Thomas Koenig <tkoe...@netcologne.de> wrote:
> Am 20.11.2017 um 09:30 schrieb Janne Blomqvist:
>>
>> On Sun, Nov 19, 2017 at 11:11 PM, Thomas Koenig <tkoe...@netcologne.de>
>> wrote:
>>>
>>> There is one question regarding the ABI. Apparently, the string length
>>> is passed as an int even on a 64-bit system. I verified that this
>>> is indeed the case by doing the actual work on a
>>> powerpc64-unknown-linux-gnu box (gcc110 on the gcc compile farm),
>>> which is big-endian. If we were actually passing an eight-byte
>>> quantity, and only getting the upper bytes, we would crash & burn.
>>>
>>> Now, I _thought_ we were passing string lengths as size_t now (Janne?),
>>> but maybe something was missing in that change.
>>
>>
>> Unfortunately I had to revert the charlen->size_t patch since it
>> caused regressions on aix/power (presumably due to endianness issues).
>
>
> Ah, that explains it. I had forgotten the reversion part.
>
>> There's apparently some other process for getting compile farm
>> accounts nowadays, and we have broken the ABI again for gcc 8, so
>> maybe I should dust off the patch and try again. Or what do you think?
>
>
> You can apply at https://cfarm.tetaneutral.net/ . These machines are
> indeed quite nice to work on, especially because of the different
> architectures (and because there are some very powerful machines
> there).
>
> So, any other comments about my patch? OK for trunk?

- In many cases the copyright notice has "This file is part of the GNU
Fortran 95 runtime library (libgfortran)." It's a while since we've
called ourselves "GNU Fortran 95", so just remove the "95".

- It seems in the library you're using int for string lengths? Please
use gfc_charlen_type instead (in the frontend, gfc_charlen_type_node).
(Most of the charlen->size_t patch is fixing up places where we're
accidentally using int instead of gfc_charlen_type..).

- Why are you using GFC_INTEGER_1 / GFC_INTEGER_4 to loop over the
arrays rather than char/gfc_char4_t? Not sure if it makes any
difference in practice, but it sure seems confusing..

- Not really related to your patch, but memcmp_char4 sure looks
redundant. Isn't it the same as memcmp(a, b, size*4), in which case we
could use optimized memcmp implementations?



-- 
Janne Blomqvist

Reply via email to