Don't run internalize if we're outputing bit-code and not an object file.
authorBill Wendling <isanbard@gmail.com>
Mon, 8 Jul 2013 23:23:03 +0000 (23:23 +0000)
committerBill Wendling <isanbard@gmail.com>
Mon, 8 Jul 2013 23:23:03 +0000 (23:23 +0000)
The problem with running internalize before we're ready to output an object file
is that it may change a 'weak' symbol into an internal one, but that symbol
could be needed by an external object file --- e.g. with arclite.

<rdar://problem/14334895>

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

tools/lto/LTOCodeGenerator.cpp

index 022a04c178e2677df11ee032e5ddb02a52ca67a3..7616aa3d25ae020a901099530784f64dfd08a7a3 100644 (file)
@@ -130,8 +130,10 @@ bool LTOCodeGenerator::writeMergedModules(const char *path,
   if (determineTarget(errMsg))
     return true;
 
-  // mark which symbols can not be internalized
-  applyScopeRestrictions();
+  // Run the verifier on the merged modules.
+  PassManager passes;
+  passes.add(createVerifierPass());
+  passes.run(*_linker.getModule());
 
   // create output file
   std::string ErrInfo;