OSDN Git Service

* c-common.c (combine_strings): Widen strings in a
authordj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 May 2001 17:39:19 +0000 (17:39 +0000)
committerdj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 10 May 2001 17:39:19 +0000 (17:39 +0000)
host-endian-independent way.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41941 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-common.c

index db35f56..11bf8a5 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-10  DJ Delorie  <dj@redhat.com>
+
+       * c-common.c (combine_strings): Widen strings in a
+       host-endian-independent way.
+
 2001-05-10  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * c-parse.in: Remove many shift/reduce conflicts.  Update
index 751d67d..a1dc31c 100644 (file)
@@ -583,15 +583,22 @@ combine_strings (strings)
            }
          else
            {
-             int i;
+             int i, j;
              for (i = 0; i < len; i++)
                {
-                 if (WCHAR_TYPE_SIZE == HOST_BITS_PER_SHORT)
-                   ((short *) q)[i] = TREE_STRING_POINTER (t)[i];
+                 if (BYTES_BIG_ENDIAN)
+                   {
+                     for (j=0; j<(WCHAR_TYPE_SIZE / BITS_PER_UNIT)-1; j++)
+                       *q++ = 0;
+                     *q++ = TREE_STRING_POINTER (t)[i];
+                   }
                  else
-                   ((int *) q)[i] = TREE_STRING_POINTER (t)[i];
+                   {
+                     *q++ = TREE_STRING_POINTER (t)[i];
+                     for (j=0; j<(WCHAR_TYPE_SIZE / BITS_PER_UNIT)-1; j++)
+                       *q++ = 0;
+                   }
                }
-             q += len * wchar_bytes;
            }
        }
       if (wide_flag)