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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77160 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/StringRef.h

index 5f3e5fba372606e2bc27107a000f0299de9738c1..0b1bfb28c239562fde52e814d2f9029efb383a13 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