Index: lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
===================================================================
--- lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
+++ lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
@@ -39,6 +39,9 @@
   /// The start of the unit within its section.
   MCSymbol *LabelBegin;
 
+  // ImportedEntities - A list of imported entities. Does not own.
+  SmallVector<const DIImportedEntity*, 10> ImportedEntities;
+
   /// GlobalNames - A map of globally visible named entities for this unit.
   StringMap<const DIE *> GlobalNames;
 
@@ -98,6 +101,10 @@
 
   unsigned getOrCreateSourceID(StringRef FileName, StringRef DirName) override;
 
+  void addImportedEntity(const DIImportedEntity* IE) {
+    ImportedEntities.push_back(IE);
+  }
+
   /// addRange - Add an address range to the list of ranges for this unit.
   void addRange(RangeSpan Range);
 
Index: lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
===================================================================
--- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
+++ lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
@@ -341,10 +341,23 @@
 
     // Skip imported directives in gmlt-like data.
     if (!includeMinimalInlineScopes()) {
+      SmallVector<const DIImportedEntity*, 10> Entities;
       // There is no need to emit empty lexical block DIE.
-      for (const auto &E : DD->findImportedEntitiesForScope(DS))
+      for (const auto &E : DD->findImportedEntitiesForScope(DS)) {
         Children.push_back(
             constructImportedEntityDIE(cast<DIImportedEntity>(E.second)));
+        Entities.push_back(cast<DIImportedEntity>(E.second));
+      }
+
+      uint i = 0;
+      for (const auto *IE : ImportedEntities) {
+        if (IE->getScope() == DS) {
+          assert(i < Entities.size());
+          assert(Entities[i] == IE);
+          i++;
+        }
+      }
+      assert(i == Entities.size());
     }
 
     // If there are only other scopes as children, put them directly in the
Index: lib/CodeGen/AsmPrinter/DwarfDebug.cpp
===================================================================
--- lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -488,8 +488,10 @@
   for (MDNode *N : CU_Nodes->operands()) {
     auto *CUNode = cast<DICompileUnit>(N);
     DwarfCompileUnit &CU = constructDwarfCompileUnit(CUNode);
-    for (auto *IE : CUNode->getImportedEntities())
+    for (auto *IE : CUNode->getImportedEntities()) {
       ScopesWithImportedEntities.push_back(std::make_pair(IE->getScope(), IE));
+      CU.addImportedEntity(IE);
+    }
     // Stable sort to preserve the order of appearance of imported entities.
     // This is to avoid out-of-order processing of interdependent declarations
     // within the same scope, e.g. { namespace A = base; namespace B = A; }