[PATCH 1/1] global: provide memrchr implementation for macOS
Markus Mayer
code at mmayer.net
Sat Jan 28 00:35:07 UTC 2023
Hi Alex,
> This code seems overly complex to me. A do-while seems unintuitive when
> you're not performing at least 1 iteration, and having an if that is
> basically the same operation as the while condition seems weird. Maybe
> I'm missing something, but it looks like it can be written more readable as:
I have no objections to changing the code. For my initial submission,
I figured I'd use an implementation that comes directly from Apple's
own open source server. But if the consensus is to tweak the code to
make it smaller / faster / more readable, that's alright by me. I only
want CGIT to build on macOS. :-)
> void *
> memrchr(const void *s, int c, size_t n)
> {
> unsigned char ch;
> const unsigned char *cp;
>
> ch = c;
>
> cp = s;
> for (cp += n; n != 0; n--) {
> cp--;
> if (*cp == ch)
> return (void *) cp;
> }
>
> return NULL;
> }
Let me play around with this.
> Clang produces similar assembly code for both. GCC however produces
> smaller code for the for loop.
Thanks for the feedback.
Regards,
-Markus
More information about the CGit
mailing list