diff --git a/llvm/lib/Linker/IRMover.cpp b/llvm/lib/Linker/IRMover.cpp
index 03539f3..42081442 100644
--- a/llvm/lib/Linker/IRMover.cpp
+++ b/llvm/lib/Linker/IRMover.cpp
@@ -318,8 +318,8 @@
       return *Entry = Ty;
     }
 
-    if (StructType *OldT = DstStructTypesSet.findNonOpaque(
-            ElementTypes, IsPacked, STy->getName())) {
+    if (StructType *OldT =
+            DstStructTypesSet.findNonOpaque(ElementTypes, IsPacked)) {
       STy->setName("");
       return *Entry = OldT;
     }
@@ -906,6 +906,7 @@
 Expected<Constant *> IRLinker::linkGlobalValueProto(GlobalValue *SGV,
                                                     bool ForAlias) {
   GlobalValue *DGV = getLinkedToGlobal(SGV);
+
   bool ShouldLink = shouldLink(DGV, *SGV);
 
   // just missing from map
@@ -1409,14 +1410,12 @@
 
 void IRMover::IdentifiedStructTypeSet::addNonOpaque(StructType *Ty) {
   assert(!Ty->isOpaque());
-  if (Ty->hasName())
-    NonOpaqueStructNameMap.insert({getTypeNamePrefix(Ty->getName()), Ty});
-
   NonOpaqueStructTypes.insert(Ty);
 }
 
 void IRMover::IdentifiedStructTypeSet::switchToNonOpaque(StructType *Ty) {
-  addNonOpaque(Ty);
+  assert(!Ty->isOpaque());
+  NonOpaqueStructTypes.insert(Ty);
   bool Removed = OpaqueStructTypes.erase(Ty);
   (void)Removed;
   assert(Removed);
@@ -1429,16 +1428,10 @@
 
 StructType *
 IRMover::IdentifiedStructTypeSet::findNonOpaque(ArrayRef<Type *> ETypes,
-                                                bool IsPacked, StringRef Name) {
+                                                bool IsPacked) {
   IRMover::StructTypeKeyInfo::KeyTy Key(ETypes, IsPacked);
   auto I = NonOpaqueStructTypes.find_as(Key);
-  if (I == NonOpaqueStructTypes.end())
-    return nullptr;
-  auto NI = NonOpaqueStructNameMap.find(getTypeNamePrefix(Name));
-  if (NI != NonOpaqueStructNameMap.end() &&
-      IRMover::StructTypeKeyInfo::KeyTy((*NI).second) == Key)
-    return (*NI).second;
-  return *I;
+  return I == NonOpaqueStructTypes.end() ? nullptr : *I;
 }
 
 bool IRMover::IdentifiedStructTypeSet::hasType(StructType *Ty) {
