From 4841121580df86b327013d1fab2a9339be487bce Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Wed, 6 Apr 2011 06:49:59 +0000 Subject: [PATCH] Add an empty key for DebugLoc so that you can store an empty DebugLoc in a DenseMap. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128994 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/DebugLoc.h | 14 +++++++++++--- lib/VMCore/DebugLoc.cpp | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/llvm/Support/DebugLoc.h b/include/llvm/Support/DebugLoc.h index 764591cfede..8d19e300ec2 100644 --- a/include/llvm/Support/DebugLoc.h +++ b/include/llvm/Support/DebugLoc.h @@ -27,14 +27,22 @@ namespace llvm { class DebugLoc { friend struct DenseMapInfo; - /// getTombstoneKey() - A private constructor that returns an unknown that - /// is distinguishable from the usual one. - static DebugLoc getTombstoneKey() { + /// getEmptyKey() - A private constructor that returns an unknown that is + /// not equal to the tombstone key or DebugLoc(). + static DebugLoc getEmptyKey() { DebugLoc DL; DL.LineCol = -1; return DL; } + /// getTombstoneKey() - A private constructor that returns an unknown that + /// is not equal to the empty key or DebugLoc(). + static DebugLoc getTombstoneKey() { + DebugLoc DL; + DL.LineCol = -2; + 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. diff --git a/lib/VMCore/DebugLoc.cpp b/lib/VMCore/DebugLoc.cpp index cb077cb4374..35691627f49 100644 --- a/lib/VMCore/DebugLoc.cpp +++ b/lib/VMCore/DebugLoc.cpp @@ -133,7 +133,7 @@ DebugLoc DebugLoc::getFromDILocation(MDNode *N) { //===----------------------------------------------------------------------===// DebugLoc DenseMapInfo::getEmptyKey() { - return DebugLoc(); + return DebugLoc::getEmptyKey(); } DebugLoc DenseMapInfo::getTombstoneKey() {