From 4678c3c08ea83e4ffe45f450a2dfac55ea4407d0 Mon Sep 17 00:00:00 2001 From: leitner Date: Mon, 13 Oct 2008 16:08:52 +0000 Subject: [PATCH] gcc 4.3.2 miscompiles byte_diff :-( --- byte/byte_diff.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/byte/byte_diff.c b/byte/byte_diff.c index 70df17a..c96e971 100644 --- a/byte/byte_diff.c +++ b/byte/byte_diff.c @@ -6,6 +6,8 @@ * one[len-1]. When the strings are different, byte_diff does not read * bytes past the first difference. */ int byte_diff(const void* a, size_t len, const void* b) { +#if 0 + /* this gets miscompiled by gcc 4.3.2 on x86_64 */ register const unsigned char* s=a; register const unsigned char* t=b; register const unsigned char* u=t+len; @@ -18,4 +20,12 @@ int byte_diff(const void* a, size_t len, const void* b) { if (t==u) break; if ((j=((unsigned int)*s-*t))) break; ++s; ++t; } return j; +#else + size_t i; + for (i=0; i