From: Adrian Prantl Date: Mon, 11 Aug 2014 22:52:56 +0000 (+0000) Subject: Make these DebugLocEntry::Value comparison operators friend functions X-Git-Tag: v01.01.07.01~5159 X-Git-Url: https://git.ti.com/gitweb?p=opencl%2Fllvm.git;a=commitdiff_plain;h=74f89fe1f00ee601ba3ce23caf49365a20a3936c;hp=ce9ccc00d3b1dfd0665c4fa2476a8391293273f9 Make these DebugLocEntry::Value comparison operators friend functions as suggested by dblaikie in a comment on r215384. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215403 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/lib/CodeGen/AsmPrinter/DebugLocEntry.h index e90c43e9dd..c60a958c07 100644 --- a/lib/CodeGen/AsmPrinter/DebugLocEntry.h +++ b/lib/CodeGen/AsmPrinter/DebugLocEntry.h @@ -59,30 +59,6 @@ public: // Or a location in the machine frame. MachineLocation Loc; - bool operator==(const Value &other) const { - if (EntryKind != other.EntryKind) - return false; - - switch (EntryKind) { - case E_Location: - return Loc == other.Loc; - case E_Integer: - return Constant.Int == other.Constant.Int; - case E_ConstantFP: - return Constant.CFP == other.Constant.CFP; - case E_ConstantInt: - return Constant.CIP == other.Constant.CIP; - } - llvm_unreachable("unhandled EntryKind"); - } - - // Compare two pieces based on their offset. - bool operator<(const Value &other) const { - DIVariable Var(Variable); - DIVariable OtherVar(other.Variable); - return Var.getPieceOffset() < OtherVar.getPieceOffset(); - } - bool isLocation() const { return EntryKind == E_Location; } bool isInt() const { return EntryKind == E_Integer; } bool isConstantFP() const { return EntryKind == E_ConstantFP; } @@ -92,7 +68,10 @@ public: const ConstantInt *getConstantInt() const { return Constant.CIP; } MachineLocation getLoc() const { return Loc; } const MDNode *getVariable() const { return Variable; } + friend bool operator==(const Value &, const Value &); + friend bool operator<(const Value &, const Value &); }; + private: /// A nonempty list of locations/constants belonging to this entry, /// sorted by offset. @@ -154,5 +133,36 @@ public: } }; +/// Compare two Values for equality. +inline bool operator==(const DebugLocEntry::Value &A, + const DebugLocEntry::Value &B) { + if (A.EntryKind != B.EntryKind) + return false; + + if (A.getVariable() != B.getVariable()) + return false; + + switch (A.EntryKind) { + case DebugLocEntry::Value::E_Location: + return A.Loc == B.Loc; + case DebugLocEntry::Value::E_Integer: + return A.Constant.Int == B.Constant.Int; + case DebugLocEntry::Value::E_ConstantFP: + return A.Constant.CFP == B.Constant.CFP; + case DebugLocEntry::Value::E_ConstantInt: + return A.Constant.CIP == B.Constant.CIP; + } + llvm_unreachable("unhandled EntryKind"); +} + +/// Compare two pieces based on their offset. +inline bool operator<(const DebugLocEntry::Value &A, + const DebugLocEntry::Value &B) { + DIVariable Var(A.getVariable()); + DIVariable OtherVar(B.getVariable()); + return Var.getPieceOffset() < OtherVar.getPieceOffset(); +} + } + #endif