This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
Re: [patch cygwin]: Replace inline-assembler in string.h by C implementation
On Oct 24 11:42, Christopher Faylor wrote:
> On Wed, Oct 24, 2012 at 11:07:47AM -0400, Ryan Johnson wrote:
> >On 24/10/2012 5:16 AM, Kai Tietz wrote:
> >> Hello,
> >>
> >> this patch replaces the inline-assember used in string.h by C implementation.
> >> There are three reasons why I want to suggest this. First, the C-code might
> >> be optimized further by fixed (constant) arguments. Secondly, it is
> >> architecture
> >> independent and so we just need to maintain on code-path. And as
> >> third point, by
> >> inspecting generated assembly code produced by compiler out of C code
> >> vs. inline-assembler
> >> it shows that compiler produces better code. It handles
> >> jump-threading better, and also
> >> improves average executed instructions.
> >Devil's advocate: better-looking code isn't always faster code.
> >
> >However, I'm surprised that code was inline asm in the first place -- no
> >special instructions or unusual control flow -- and would not be at all
> >surprised if the compiler does a better job.
> >
> >Also, the portability issue is relevant now that cygwin is starting the
> >move toward 64-bit support.
>
> Yes, that's exactly why Kai is proposing this.
>
> I haven't looked at the code but I almost always have one response to
> a "I want to rewrite a standard function" patches:
>
> Have you looked at other implementations? The current one was based
> on a linux implementation. A C version of these functions has likely
> been written before, possibly even in newlib. Were those considered?
Now that you mention it.
There's strchrnul in newlib, which could simply replace strechr.
There's no equivalent for ascii_strcasecmp or ascii_strncasecmp in
newlib since the newlib function are multibyte capable and thus
slower.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat