[patch cygwin]: Replace inline-assembler in string.h by C implementation

Corinna Vinschen corinna-cygwin@cygwin.com
Wed Oct 24 16:01:00 GMT 2012

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 


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

More information about the Cygwin-patches mailing list