Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 31 Mar 2000 04:10:36 +0000 (04:10 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 31 Mar 2000 04:10:36 +0000 (04:10 +0000)
2000-03-30  Ulrich Drepper  <drepper@redhat.com>

* iconv/skeleton.c: Avoid compiling unaligned versions in some
with size of dynamic sectionmore cases.
* iconv/loop.c: Likewise.

ChangeLog
iconv/loop.c
iconv/skeleton.c

index 09c3b4f..1dbb153 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2000-03-30  Ulrich Drepper  <drepper@redhat.com>
+
+       * iconv/skeleton.c: Avoid compiling unaligned versions in some
+       with size of dynamic sectionmore cases.
+       * iconv/loop.c: Likewise.
+
 2000-03-29  Bruno Haible  <haible@clisp.cons.org>
 
        * iconv/loop.c (put16): Remove __const. Fix access index.
index 7ddeb3d..bf0ab48 100644 (file)
@@ -268,7 +268,9 @@ FCTNAME (LOOPFCT) (const unsigned char **inptrp, const unsigned char *inend,
 
 /* Include the file a second time to define the function to define the
    function to handle unaligned access.  */
-#if !defined _STRING_ARCH_unaligned && !defined DEFINE_UNALIGNED
+#if !defined DEFINE_UNALIGNED && !defined _STRING_ARCH_unaligned \
+    && MIN_NEEDED_FROM != 1 && MAX_NEEDED_FROM % MIN_NEEDED_FROM == 0 \
+    && MIN_NEEDED_TO != 1 && MAX_NEEDED_TO % MIN_NEEDED_TO == 0
 # define DEFINE_UNALIGNED
 # include "loop.c"
 # undef DEFINE_UNALIGNED
index dfd067e..52c67a2 100644 (file)
@@ -297,7 +297,9 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
       unsigned char *outbuf = data->__outbuf;
       unsigned char *outend = data->__outbufend;
       unsigned char *outstart;
-#ifdef _STRING_ARCH_unaligned
+#if defined _STRING_ARCH_unaligned \
+    || MIN_NEEDED_FROM == 1 || MAX_NEEDED_FROM % MIN_NEEDED_FROM != 0 \
+    || MIN_NEEDED_TO == 1 || MAX_NEEDED_TO % MIN_NEEDED_TO != 0
 # define unaligned 0
 #else
       /* The following assumes that encodings, which have a variable length
@@ -308,19 +310,13 @@ FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data,
       int unaligned;
 
       unaligned = ((FROM_DIRECTION
-                   && ((MIN_NEEDED_FROM > 1
-                        && MAX_NEEDED_FROM % MIN_NEEDED_FROM == 0
-                        && (uintptr_t) inptr % MIN_NEEDED_FROM != 0)
-                       || (MIN_NEEDED_TO > 1
-                           && MAX_NEEDED_TO % MIN_NEEDED_TO == 0
+                   && ((uintptr_t) inptr % MIN_NEEDED_FROM != 0
+                       || (data->__is_last
                            && (uintptr_t) outbuf % MIN_NEEDED_TO != 0)))
                   || (!FROM_DIRECTION
-                      && ((MIN_NEEDED_FROM > 1
-                           && MAX_NEEDED_FROM % MIN_NEEDED_FROM == 0
+                      && ((data->__is_last
                            && (uintptr_t) outbuf % MIN_NEEDED_FROM != 0)
-                          || (MIN_NEEDED_TO > 1
-                              && MAX_NEEDED_TO % MIN_NEEDED_TO == 0
-                              && (uintptr_t) inptr % MIN_NEEDED_TO != 0))));
+                          || (uintptr_t) inptr % MIN_NEEDED_TO != 0)));
 # define GEN_unaligned(name) GEN_unaligned2 (name)
 # define GEN_unaligned2(name) name##_unaligned
 #endif