Marked memcmp/strcmp as "pure" functions, to allow gcc to optimise
authorMichael Brown <mcb30@etherboot.org>
Mon, 27 Nov 2006 23:50:24 +0000 (23:50 +0000)
committerMichael Brown <mcb30@etherboot.org>
Mon, 27 Nov 2006 23:50:24 +0000 (23:50 +0000)
away code such as

  if ( strcmp ( some_string, "some_value" ) != 0 ) {
     DBG ( "Bad value received!" );
  }

src/include/string.h

index eea817d..8ada05a 100644 (file)
@@ -47,8 +47,9 @@ char * strcpy(char * dest,const char *src);
 char * strncpy(char * dest,const char *src,size_t count);
 char * strcat(char * dest, const char * src);
 char * strncat(char *dest, const char *src, size_t count);
-int strcmp(const char * cs,const char * ct);
-int strncmp(const char * cs,const char * ct,size_t count);
+int __attribute__ (( pure )) strcmp(const char * cs,const char * ct);
+int __attribute__ (( pure )) strncmp(const char * cs,const char * ct,
+                                    size_t count);
 char * strchr(const char * s, int c);
 char * strrchr(const char * s, int c);
 size_t strlen(const char * s);
@@ -60,7 +61,8 @@ char * strsep(char **s, const char *ct);
 void * memset(void * s,int c,size_t count);
 char * bcopy(const char * src, char * dest, int count);
 void * memmove(void * dest,const void *src,size_t count);
-int memcmp(const void * cs,const void * ct,size_t count);
+int __attribute__ (( pure )) memcmp(const void * cs,const void * ct,
+                                   size_t count);
 void * memscan(void * addr, int c, size_t size);
 char * strstr(const char * s1,const char * s2);
 void * memchr(const void *s, int c, size_t n);