Link NamedMDNodes after linking GlobalValues, so that MDNodes
authorDan Gohman <gohman@apple.com>
Tue, 24 Aug 2010 19:37:11 +0000 (19:37 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 24 Aug 2010 19:37:11 +0000 (19:37 +0000)
which reference GlobalValues are properly remapped.

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

lib/Linker/LinkModules.cpp

index 016c82cc992bb744910df68b1b6de3908f5533e4..1ab35e06305e1e2e21db2a93c6819b00c7641cc8 100644 (file)
@@ -1244,9 +1244,6 @@ Linker::LinkModules(Module *Dest, Module *Src, std::string *ErrorMsg) {
       AppendingVars.insert(std::make_pair(I->getName(), I));
   }
 
-  // Insert all of the named mdnoes in Src into the Dest module.
-  LinkNamedMDNodes(Dest, Src, ValueMap);
-
   // Insert all of the globals in src into the Dest module... without linking
   // initializers (which could refer to functions not yet mapped over).
   if (LinkGlobals(Dest, Src, ValueMap, AppendingVars, ErrorMsg))
@@ -1280,6 +1277,11 @@ Linker::LinkModules(Module *Dest, Module *Src, std::string *ErrorMsg) {
   // Resolve all uses of aliases with aliasees
   if (ResolveAliases(Dest)) return true;
 
+  // Remap all of the named mdnoes in Src into the Dest module. We do this
+  // after linking GlobalValues so that MDNodes that reference GlobalValues
+  // are properly remapped.
+  LinkNamedMDNodes(Dest, Src, ValueMap);
+
   // If the source library's module id is in the dependent library list of the
   // destination library, remove it since that module is now linked in.
   sys::Path modId;