Enhance zero_extend_signed_to_ull and sign_extend_unsigned_to_ll macros
authorDmitry V. Levin <ldv@altlinux.org>
Mon, 26 Sep 2016 20:27:53 +0000 (20:27 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Tue, 27 Sep 2016 00:57:28 +0000 (00:57 +0000)
* defs.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll):
Add support of char types.
* tests/tests.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll):
Likewise.

defs.h
tests/tests.h

diff --git a/defs.h b/defs.h
index 07de67affc89d0ddcb32afa3b36a07b0c486406f..4c7a0637b628e5f18b97e4d6bdf73d0b826784e6 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -751,7 +751,8 @@ extern unsigned current_wordsize;
  * Zero-extend a signed integer type to unsigned long long.
  */
 #define zero_extend_signed_to_ull(v) \
-       (sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
+       (sizeof(v) == sizeof(char) ? (unsigned long long) (unsigned char) (v) : \
+        sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
         sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
         sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
         (unsigned long long) (v))
@@ -760,7 +761,8 @@ extern unsigned current_wordsize;
  * Sign-extend an unsigned integer type to long long.
  */
 #define sign_extend_unsigned_to_ll(v) \
-       (sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
+       (sizeof(v) == sizeof(char) ? (long long) (char) (v) : \
+        sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
         sizeof(v) == sizeof(int) ? (long long) (int) (v) : \
         sizeof(v) == sizeof(long) ? (long long) (long) (v) : \
         (long long) (v))
index 340813b8e9fefa354f8090995aabc9dbc52026ee..f3ddc85edbcd527c97764329e7d845fb28c4cf01 100644 (file)
@@ -132,14 +132,16 @@ int send_mmsg(int, struct mmsghdr *, unsigned int, unsigned int);
 
 /* Zero-extend a signed integer type to unsigned long long. */
 #define zero_extend_signed_to_ull(v) \
-       (sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
+       (sizeof(v) == sizeof(char) ? (unsigned long long) (unsigned char) (v) : \
+        sizeof(v) == sizeof(short) ? (unsigned long long) (unsigned short) (v) : \
         sizeof(v) == sizeof(int) ? (unsigned long long) (unsigned int) (v) : \
         sizeof(v) == sizeof(long) ? (unsigned long long) (unsigned long) (v) : \
         (unsigned long long) (v))
 
 /* Sign-extend an unsigned integer type to long long. */
 #define sign_extend_unsigned_to_ll(v) \
-       (sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
+       (sizeof(v) == sizeof(char) ? (long long) (char) (v) : \
+        sizeof(v) == sizeof(short) ? (long long) (short) (v) : \
         sizeof(v) == sizeof(int) ? (long long) (int) (v) : \
         sizeof(v) == sizeof(long) ? (long long) (long) (v) : \
         (long long) (v))