diff options
author | Nick Kralevich <nnk@google.com> | 2012-03-21 08:48:18 -0700 |
---|---|---|
committer | Nick Kralevich <nnk@google.com> | 2012-03-21 08:54:54 -0700 |
commit | a677907ee8ecca034318fdb97902fa73e7392c4f (patch) | |
tree | e937fcefb5cc8719a7a388cfdb45c9425443ae20 /libc/include/string.h | |
parent | aac0dc97a9ad91231fa89878e745548d693366c1 (diff) | |
download | android_bionic-a677907ee8ecca034318fdb97902fa73e7392c4f.tar.gz android_bionic-a677907ee8ecca034318fdb97902fa73e7392c4f.tar.bz2 android_bionic-a677907ee8ecca034318fdb97902fa73e7392c4f.zip |
string.h: add __attribute__ ((pure)) to string functions
cdefs.h: Introduce the __purefunc attribute, which allows us to mark
certain functions as being "pure".
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
Many functions have no effects except the return value and their
return value depends only on the parameters and/or global variables.
Such a function can be subject to common subexpression elimination
and loop optimization just as an arithmetic operator would be.
string.h: Mark many commently used string functions as "pure", to
allow for additional compiler optimizations.
Change-Id: I42961f90f822b6dbcbc3fd72cdbe774a7adc8785
Diffstat (limited to 'libc/include/string.h')
-rw-r--r-- | libc/include/string.h | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/libc/include/string.h b/libc/include/string.h index 613dcd78a..6e6c8e693 100644 --- a/libc/include/string.h +++ b/libc/include/string.h @@ -35,54 +35,54 @@ __BEGIN_DECLS extern void* memccpy(void *, const void *, int, size_t); -extern void* memchr(const void *, int, size_t); -extern void* memrchr(const void *, int, size_t); -extern int memcmp(const void *, const void *, size_t); +extern void* memchr(const void *, int, size_t) __purefunc; +extern void* memrchr(const void *, int, size_t) __purefunc; +extern int memcmp(const void *, const void *, size_t) __purefunc; extern void* memcpy(void *, const void *, size_t); extern void* memmove(void *, const void *, size_t); extern void* memset(void *, int, size_t); -extern void* memmem(const void *, size_t, const void *, size_t); +extern void* memmem(const void *, size_t, const void *, size_t) __purefunc; extern void memswap(void *, void *, size_t); -extern char* index(const char *, int); -extern char* rindex(const char *, int); -extern char* strchr(const char *, int); -extern char* strrchr(const char *, int); +extern char* index(const char *, int) __purefunc; +extern char* rindex(const char *, int) __purefunc; +extern char* strchr(const char *, int) __purefunc; +extern char* strrchr(const char *, int) __purefunc; -extern size_t strlen(const char *); -extern int strcmp(const char *, const char *); +extern size_t strlen(const char *) __purefunc; +extern int strcmp(const char *, const char *) __purefunc; extern char* strcpy(char *, const char *); extern char* strcat(char *, const char *); -extern int strcasecmp(const char *, const char *); -extern int strncasecmp(const char *, const char *, size_t); +extern int strcasecmp(const char *, const char *) __purefunc; +extern int strncasecmp(const char *, const char *, size_t) __purefunc; extern char* strdup(const char *); -extern char* strstr(const char *, const char *); -extern char* strcasestr(const char *haystack, const char *needle); +extern char* strstr(const char *, const char *) __purefunc; +extern char* strcasestr(const char *haystack, const char *needle) __purefunc; extern char* strtok(char *, const char *); extern char* strtok_r(char *, const char *, char**); extern char* strerror(int); extern int strerror_r(int errnum, char *buf, size_t n); -extern size_t strnlen(const char *, size_t); +extern size_t strnlen(const char *, size_t) __purefunc; extern char* strncat(char *, const char *, size_t); extern char* strndup(const char *, size_t); -extern int strncmp(const char *, const char *, size_t); +extern int strncmp(const char *, const char *, size_t) __purefunc; extern char* strncpy(char *, const char *, size_t); extern size_t strlcat(char *, const char *, size_t); extern size_t strlcpy(char *, const char *, size_t); -extern size_t strcspn(const char *, const char *); -extern char* strpbrk(const char *, const char *); +extern size_t strcspn(const char *, const char *) __purefunc; +extern char* strpbrk(const char *, const char *) __purefunc; extern char* strsep(char **, const char *); extern size_t strspn(const char *, const char *); extern char* strsignal(int sig); -extern int strcoll(const char *, const char *); +extern int strcoll(const char *, const char *) __purefunc; extern size_t strxfrm(char *, const char *, size_t); __END_DECLS |