DebugInfo: Simplify debug loc list handling by keeping separate lists

Rather than using a flat list with "empty" entries (ala the actual
on-disk format), keep separate lists for each variable.

llvm-svn: 204680
diff --git a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
index 0f5e8fb..9756054 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DIEHash.cpp
@@ -283,22 +283,10 @@
 
 // Hash the contents of a loclistptr class.
 void DIEHash::hashLocList(const DIELocList &LocList) {
-  SmallVectorImpl<DebugLocEntry>::const_iterator Start =
-      AP->getDwarfDebug()->getDebugLocEntries().begin();
-  Start += LocList.getValue();
   HashingByteStreamer Streamer(*this);
-  for (SmallVectorImpl<DebugLocEntry>::const_iterator
-           I = Start,
-           E = AP->getDwarfDebug()->getDebugLocEntries().end();
-       I != E; ++I) {
-    const DebugLocEntry &Entry = *I;
-    // Go through the entries until we hit the end of the list,
-    // which is the next empty entry.
-    if (Entry.isEmpty())
-      return;
-    else
-      AP->getDwarfDebug()->emitDebugLocEntry(Streamer, Entry);
-  }
+  for (const auto &Entry :
+       AP->getDwarfDebug()->getDebugLocEntries()[LocList.getValue()])
+    AP->getDwarfDebug()->emitDebugLocEntry(Streamer, Entry);
 }
 
 // Hash an individual attribute \param Attr based on the type of attribute and