aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Support/DebugLoc.h
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2011-04-06 05:36:52 +0000
committerNick Lewycky <nicholas@mxc.ca>2011-04-06 05:36:52 +0000
commitaf4db5fc95f5d846c48e80f4266687a34a2975f4 (patch)
tree5ca31d55bdf710a7e03aaf4847c76e3be19e7d5b /include/llvm/Support/DebugLoc.h
parent49460bc49990ddfcf81e6f0670924f896645d9c7 (diff)
Support using DebugLoc's in a DenseMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128988 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/DebugLoc.h')
-rw-r--r--include/llvm/Support/DebugLoc.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/llvm/Support/DebugLoc.h b/include/llvm/Support/DebugLoc.h
index ccc3446129..764591cfed 100644
--- a/include/llvm/Support/DebugLoc.h
+++ b/include/llvm/Support/DebugLoc.h
@@ -15,6 +15,8 @@
#ifndef LLVM_SUPPORT_DEBUGLOC_H
#define LLVM_SUPPORT_DEBUGLOC_H
+#include "llvm/ADT/DenseMapInfo.h"
+
namespace llvm {
class MDNode;
class LLVMContext;
@@ -23,6 +25,16 @@ namespace llvm {
/// and MachineInstr to compactly encode file/line/scope information for an
/// operation.
class DebugLoc {
+ friend struct DenseMapInfo<DebugLoc>;
+
+ /// getTombstoneKey() - A private constructor that returns an unknown that
+ /// is distinguishable from the usual one.
+ static DebugLoc getTombstoneKey() {
+ DebugLoc DL;
+ DL.LineCol = -1;
+ return DL;
+ }
+
/// LineCol - This 32-bit value encodes the line and column number for the
/// location, encoded as 24-bits for line and 8 bits for col. A value of 0
/// for either means unknown.
@@ -75,6 +87,14 @@ namespace llvm {
}
bool operator!=(const DebugLoc &DL) const { return !(*this == DL); }
};
+
+ template <>
+ struct DenseMapInfo<DebugLoc> {
+ static DebugLoc getEmptyKey();
+ static DebugLoc getTombstoneKey();
+ static unsigned getHashValue(const DebugLoc &Key);
+ static bool isEqual(const DebugLoc &LHS, const DebugLoc &RHS);
+ };
} // end namespace llvm
#endif /* LLVM_DEBUGLOC_H */