The source and dest of an alias are *not* required to have the same type,
authorChris Lattner <sabre@nondot.org>
Thu, 10 Jul 2008 01:09:33 +0000 (01:09 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 10 Jul 2008 01:09:33 +0000 (01:09 +0000)
though that would be nice and make sense :).  Patch by Nathan Keynes!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53387 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Linker/LinkModules.cpp

index cd18bf4aa1698b12911b7616bb9b29e0c2be0ee7..ea7769a1159b15999b39face927cf75952989435 100644 (file)
@@ -714,9 +714,7 @@ static bool LinkAlias(Module *Dest, const Module *Src,
 
       // If types don't agree due to opaque types, try to resolve them.
       if (DGV && DGV->getType() != SGA->getType())
-        if (RecursiveResolveTypes(SGA->getType(), DGV->getType()))
-          return Error(Err, "Alias Collision on '" + SGA->getName()+
-                       "': aliases have different types");
+        RecursiveResolveTypes(SGA->getType(), DGV->getType());
     }
 
     if (!DGV && !SGA->hasInternalLinkage()) {
@@ -724,9 +722,7 @@ static bool LinkAlias(Module *Dest, const Module *Src,
 
       // If types don't agree due to opaque types, try to resolve them.
       if (DGV && DGV->getType() != SGA->getType())
-        if (RecursiveResolveTypes(SGA->getType(), DGV->getType()))
-          return Error(Err, "Alias Collision on '" + SGA->getName()+
-                       "': aliases have different types");
+        RecursiveResolveTypes(SGA->getType(), DGV->getType());
     }
 
     if (!DGV && !SGA->hasInternalLinkage()) {
@@ -734,9 +730,7 @@ static bool LinkAlias(Module *Dest, const Module *Src,
 
       // If types don't agree due to opaque types, try to resolve them.
       if (DGV && DGV->getType() != SGA->getType())
-        if (RecursiveResolveTypes(SGA->getType(), DGV->getType()))
-          return Error(Err, "Alias Collision on '" + SGA->getName()+
-                       "': aliases have different types");
+        RecursiveResolveTypes(SGA->getType(), DGV->getType());
     }
 
     // No linking to be performed on internal stuff.