DebugLocEntry: Restore the comparison predicate from before the
[oota-llvm.git] / lib / CodeGen / AsmPrinter / DebugLocEntry.h
index c60a958c07374fe75c7d0233ae21c19322918e2a..c1c3a62cf89c20e2b08055b8ead6169db46ca417 100644 (file)
@@ -67,7 +67,9 @@ public:
     const ConstantFP *getConstantFP() const { return Constant.CFP; }
     const ConstantInt *getConstantInt() const { return Constant.CIP; }
     MachineLocation getLoc() const { return Loc; }
-    const MDNode *getVariable() const { return Variable; }
+    const MDNode *getVariableNode() const { return Variable; }
+    DIVariable getVariable() const { return DIVariable(Variable); }
+    bool isVariablePiece() const { return getVariable().isVariablePiece(); }
     friend bool operator==(const Value &, const Value &);
     friend bool operator<(const Value &, const Value &);
   };
@@ -121,7 +123,7 @@ public:
     Values.append(Vals.begin(), Vals.end());
     sortUniqueValues();
     assert(std::all_of(Values.begin(), Values.end(), [](DebugLocEntry::Value V){
-          return DIVariable(V.Variable).isVariablePiece();
+          return V.isVariablePiece();
         }) && "value must be a piece");
   }
 
@@ -129,7 +131,10 @@ public:
   // Remove any duplicate entries by dropping all but the first.
   void sortUniqueValues() {
     std::sort(Values.begin(), Values.end());
-    Values.erase(std::unique(Values.begin(), Values.end()), Values.end());
+    Values.erase(std::unique(Values.begin(), Values.end(),
+                             [](const Value &A, const Value &B) {
+                               return A.getVariable() == B.getVariable();
+                               }), Values.end());
   }
 };
 
@@ -158,9 +163,7 @@ inline bool operator==(const DebugLocEntry::Value &A,
 /// 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();
+  return A.getVariable().getPieceOffset() < B.getVariable().getPieceOffset();
 }
 
 }