diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-04-01 22:04:07 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-04-01 22:04:07 +0000 |
commit | e8ef6518ce3edcc39f01ae1583294ae4b6c62dd7 (patch) | |
tree | c019827cdffac8f7c18a40d5cd4fad6d618a7869 | |
parent | e8907d6649cbaf7b8dece0ef05bf2429f062913c (diff) | |
download | llvm-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.h | 37 |
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; } |