summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-04-01 22:04:07 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-04-01 22:04:07 +0000
commite8ef6518ce3edcc39f01ae1583294ae4b6c62dd7 (patch)
treec019827cdffac8f7c18a40d5cd4fad6d618a7869
parente8907d6649cbaf7b8dece0ef05bf2429f062913c (diff)
downloadllvm-e8ef6518ce3edcc39f01ae1583294ae4b6c62dd7.tar.gz
llvm-e8ef6518ce3edcc39f01ae1583294ae4b6c62dd7.tar.bz2
llvm-e8ef6518ce3edcc39f01ae1583294ae4b6c62dd7.tar.xz
Refactor out the comparison of the location/value in a DebugLocEntry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205364 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/AsmPrinter/DebugLocEntry.h37
1 files changed, 19 insertions, 18 deletions
diff --git a/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/lib/CodeGen/AsmPrinter/DebugLocEntry.h
index e62897e86a..5bc9ebc893 100644
--- a/lib/CodeGen/AsmPrinter/DebugLocEntry.h
+++ b/lib/CodeGen/AsmPrinter/DebugLocEntry.h
@@ -42,6 +42,24 @@ class DebugLocEntry {
// The compile unit to which this location entry is referenced by.
const DwarfCompileUnit *Unit;
+ bool hasSameValueOrLocation(const DebugLocEntry &Next) {
+ if (EntryKind != Next.EntryKind)
+ return false;
+
+ switch (EntryKind) {
+ case E_Location:
+ if (Loc != Next.Loc) return false;
+ case E_Integer:
+ if (Constants.Int != Next.Constants.Int) return false;
+ case E_ConstantFP:
+ if (Constants.CFP != Next.Constants.CFP) return false;
+ case E_ConstantInt:
+ if (Constants.CIP != Next.Constants.CIP) return false;
+ }
+
+ return true;
+ }
+
public:
DebugLocEntry() : Begin(0), End(0), Variable(0), Unit(0) {
Constants.Int = 0;
@@ -75,24 +93,7 @@ public:
/// labels are referenced is used to find debug_loc offset for a given DIE.
bool isEmpty() const { return Begin == 0 && End == 0; }
bool Merge(const DebugLocEntry &Next) {
- if (End != Next.Begin)
- return false;
-
- if (EntryKind != Next.EntryKind)
- return false;
-
- switch (EntryKind) {
- case E_Location:
- if (Loc != Next.Loc) return false;
- case E_Integer:
- if (Constants.Int != Next.Constants.Int) return false;
- case E_ConstantFP:
- if (Constants.CFP != Next.Constants.CFP) return false;
- case E_ConstantInt:
- if (Constants.CIP != Next.Constants.CIP) return false;
- }
-
- return true;
+ return End == Next.Begin && hasSameValueOrLocation(Next);
}
bool isLocation() const { return EntryKind == E_Location; }
bool isInt() const { return EntryKind == E_Integer; }