Use the RHS length instead of the LHS length. They are both the same,
authorChris Lattner <sabre@nondot.org>
Sun, 26 Jul 2009 17:46:03 +0000 (17:46 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 26 Jul 2009 17:46:03 +0000 (17:46 +0000)
but this ends up compiling code like this:

int foo(const StringRef &R) {
  return R == "food";
}

to use a constant sized memcmp instead of a variable memcmp.

llvm-svn: 77160

llvm/include/llvm/ADT/StringRef.h

index 5f3e5fb..0b1bfb2 100644 (file)
@@ -81,7 +81,7 @@ namespace llvm {
     /// compare() in when the relative ordering of inequal strings isn't needed.
     bool equals(const StringRef &RHS) const {
       return (Length == RHS.Length && 
-              memcmp(Data, RHS.Data, Length) == 0);
+              memcmp(Data, RHS.Data, RHS.Length) == 0);
     }
 
     /// compare - Compare two strings; the result is -1, 0, or 1 if this string