diff --git a/llvm/include/llvm/Support/JSON.h b/llvm/include/llvm/Support/JSON.h index 74858ec559932..d8c6de49b4bc6 100644 --- a/llvm/include/llvm/Support/JSON.h +++ b/llvm/include/llvm/Support/JSON.h @@ -153,6 +153,8 @@ class Object { LLVM_ABI json::Object *getObject(StringRef K); LLVM_ABI const json::Array *getArray(StringRef K) const; LLVM_ABI json::Array *getArray(StringRef K); + + friend bool operator==(const Object &LHS, const Object &RHS); }; LLVM_ABI bool operator==(const Object &LHS, const Object &RHS); inline bool operator!=(const Object &LHS, const Object &RHS) { diff --git a/llvm/lib/Support/JSON.cpp b/llvm/lib/Support/JSON.cpp index d8662340cb3ed..4652c0740dc4d 100644 --- a/llvm/lib/Support/JSON.cpp +++ b/llvm/lib/Support/JSON.cpp @@ -84,16 +84,7 @@ json::Array *Object::getArray(StringRef K) { return V->getAsArray(); return nullptr; } -bool operator==(const Object &LHS, const Object &RHS) { - if (LHS.size() != RHS.size()) - return false; - for (const auto &L : LHS) { - auto R = RHS.find(L.first); - if (R == RHS.end() || L.second != R->second) - return false; - } - return true; -} +bool operator==(const Object &LHS, const Object &RHS) { return LHS.M == RHS.M; } Array::Array(std::initializer_list Elements) { V.reserve(Elements.size());