http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58240
--- Comment #13 from shiyan <shiyan2016 at 126 dot com> --- Hi all, Thank you for all your explanation. This seems more like a philosophical discussion.... :) I do can understand what GCC is doing (as I mentioned, it may be optimized to *s1-*s2). And I know that this is something not standard and it should work with '-fno-builtin' (I am familiar with this option). Whatever, maybe I should really do something standard as all you mentioned, to use '-fno-builtin' to force it to use my own strncmp implementation. Thank you again for all your explanation and confirmed my understanding that GCC did such optimization (*s1-*s2) at front-end stage. Thanks, Shiyan