dd: code shrink

function                                             old     new   delta
dd_main                                             1475    1469      -6

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 9299f58..2838f63 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -395,7 +395,8 @@
 			n = 0;
 		}
 		if (flags & FLAG_SWAB) {
-			uint16_t *p16, *end;
+			uint16_t *p16;
+			ssize_t n2;
 
 			/* Our code allows only last read to be odd-sized */
 			if (prev_read_size & 1)
@@ -408,8 +409,8 @@
 			 * prints "wqe".
 			 */
 			p16 = (void*) ibuf;
-			end = (void*) (ibuf + (n & ~(ssize_t)1));
-			while (p16 < end) {
+			n2 = (n >> 1);
+			while (--n2 >= 0) {
 				*p16 = bswap_16(*p16);
 				p16++;
 			}