[PATCH 3/5] checksum: use pre increment.

Joakim Tjernlund Joakim.Tjernlund at transmode.se
Sun Apr 25 11:41:20 CEST 2010


Some archs(RISC like archs) can do pre increment and load
in one insn but gcc optimization often fails to take advantage
of that. Help gcc to do the right thing by using pre increment
instead of post increment.

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
---
 lib/checksum.c |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/lib/checksum.c b/lib/checksum.c
index cd0fefd..2e427a2 100644
--- a/lib/checksum.c
+++ b/lib/checksum.c
@@ -72,11 +72,9 @@ ipsum_calc_block(u16 *x, unsigned len, u16 sum)
   len >>= 1;
   tmp = 0;
   xx = (u32 *) x;
-  while (len)
-    {
-      tmp = add32(tmp, *xx++);
-      len--;
-    }
+  for (xx--; len; --len);
+      tmp = add32(tmp, *++xx);
+  xx++;
   sum = add16(sum, add16(tmp & 0xffff, tmp >> 16U));
   if (rest)
     sum = add16(sum, *(u16 *) xx);
-- 
1.6.4.4




More information about the Bird-users mailing list