summary refs log tree commit diff
path: root/sysdeps/i386/bits
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/bits')
-rw-r--r--sysdeps/i386/bits/select.h3
-rw-r--r--sysdeps/i386/bits/string.h14
2 files changed, 12 insertions, 5 deletions
diff --git a/sysdeps/i386/bits/select.h b/sysdeps/i386/bits/select.h
index edcb562945..34d2b0b27a 100644
--- a/sysdeps/i386/bits/select.h
+++ b/sysdeps/i386/bits/select.h
@@ -58,8 +58,9 @@
 # define __FD_ZERO(set)  \
   do {									      \
     unsigned int __i;							      \
+    __fd_mask *__arr = (set);						      \
     for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i)	      \
-      ((__fd_mask *) set)[__i] = 0;					      \
+      __arr->fds_bits[__i] = 0;						      \
   } while (0)
 # define __FD_SET(d, set)	((set)->fds_bits[__FDELT (d)] |= __FDMASK (d))
 # define __FD_CLR(d, set)	((set)->fds_bits[__FDELT (d)] &= ~__FDMASK (d))
diff --git a/sysdeps/i386/bits/string.h b/sysdeps/i386/bits/string.h
index 2931684781..c6deb2b6a4 100644
--- a/sysdeps/i386/bits/string.h
+++ b/sysdeps/i386/bits/string.h
@@ -18,11 +18,17 @@
    Boston, MA 02111-1307, USA.  */
 
 #ifndef _STRING_H
-#error "Never use <bits/string.h> directly; include <string.h> instead."
+# error "Never use <bits/string.h> directly; include <string.h> instead."
 #endif
 
-/* We only provide optimizations for the GNU CC.  */
-#if defined __GNUC__ && __GNUC__ >= 2
+/* The ix86 processors can access unaligned multi-byte variables.  */
+#define _STRING_ARCH_unaligned	1
+
+
+/* We only provide optimizations if the user selects them and if
+   GNU CC is used.  */
+#if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \
+    && defined __GNUC__ && __GNUC__ >= 2
 
 #ifdef __cplusplus
 # define __STRING_INLINE inline
@@ -741,4 +747,4 @@ strstr (__const char *__haystack, __const char *__needle)
 
 #undef __STRING_INLINE
 
-#endif	/* GNU CC */
+#endif	/* use string inlines && GNU CC */