From: Jim Meyering Date: Tue, 6 Jan 2015 00:53:50 +0000 (-0800) Subject: folly/Range.cpp: avoid -Werror=sign-compare error with gcc-4.9 X-Git-Tag: v0.22.0~46 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=commitdiff_plain;h=c9a5ee23ec30da98cbe42da6d2eb47c65727cac7 folly/Range.cpp: avoid -Werror=sign-compare error with gcc-4.9 Summary: * folly/Range.cpp (scanHaystackBlock): This method mistakenly declared its "idx" (aka blockStartIdx) parameter to have signed type. It is logically an unsigned type and is compared only with other variables of unsigned type, so make it unsigned. Here's the diagnostic: folly/Range.cpp:202:44: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] folly/Range.cpp: In instantiation of 'size_t folly::detail::scanHaystackBlock(folly::StringPiece, folly::StringPiece, int64_t) [with bool HAYSTACK_ALIGNED = true; size_t = long unsigned int; folly::StringPiece = folly::Range; int64_t = long int]': Test Plan: Run this and note there are fewer errors than before: fbconfig --platform-all=gcc-4.9-glibc-2.20 tao/server && fbmake dbgo Reviewed By: robbert@fb.com, philipp@fb.com Subscribers: folly-diffs@ FB internal diff: D1765590 Signature: t1:1765590:1420506036:7cbe2c454ad1f018a1c0aa5112a38bed1b2ac673 --- diff --git a/folly/Range.cpp b/folly/Range.cpp index 42ee048d..343ba728 100644 --- a/folly/Range.cpp +++ b/folly/Range.cpp @@ -179,7 +179,7 @@ size_t qfind_first_byte_of_byteset(const StringPiece haystack, template size_t scanHaystackBlock(const StringPiece haystack, const StringPiece needles, - int64_t idx) + uint64_t idx) // inline is okay because it's only called from other sse4.2 functions __attribute__ ((__target__("sse4.2"))) // Turn off ASAN because the "arr2 = ..." assignment in the loop below reads @@ -195,7 +195,7 @@ size_t scanHaystackBlock(const StringPiece haystack, template size_t scanHaystackBlock(const StringPiece haystack, const StringPiece needles, - int64_t blockStartIdx) { + uint64_t blockStartIdx) { DCHECK_GT(needles.size(), 16); // should handled by *needles16() method DCHECK(blockStartIdx + 16 <= haystack.size() || (PAGE_FOR(haystack.data() + blockStartIdx) ==