[llvm] r205364 - Refactor out the comparison of the location/value in a DebugLocEntry

David Blaikie dblaikie at gmail.com
Tue Apr 1 15:04:07 PDT 2014


Author: dblaikie
Date: Tue Apr  1 17:04:07 2014
New Revision: 205364

URL: http://llvm.org/viewvc/llvm-project?rev=205364&view=rev
Log:
Refactor out the comparison of the location/value in a DebugLocEntry

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h?rev=205364&r1=205363&r2=205364&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DebugLocEntry.h Tue Apr  1 17:04:07 2014
@@ -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; }





More information about the llvm-commits mailing list