mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-02 09:49:09 +00:00
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
This commit is contained in:
parent
e8907d6649
commit
e8ef6518ce
@ -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; }
|
||||
|
Loading…
Reference in New Issue
Block a user