ThinLTO: move ObjCARCContractPass in the CodeGen pipeline
authorMehdi Amini <mehdi.amini@apple.com>
Fri, 1 Apr 2016 08:22:59 +0000 (08:22 +0000)
committerMehdi Amini <mehdi.amini@apple.com>
Fri, 1 Apr 2016 08:22:59 +0000 (08:22 +0000)
This is to be coherent with Full LTO.

From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 265118

llvm/lib/LTO/ThinLTOCodeGenerator.cpp

index 412475d..b867976 100644 (file)
@@ -160,7 +160,6 @@ static void optimizeModule(Module &TheModule, TargetMachine &TM) {
 
   // Add optimizations
   PMB.populateThinLTOPassManager(PM);
-  PM.add(createObjCARCContractPass());
 
   PM.run(TheModule);
 }
@@ -173,6 +172,12 @@ std::unique_ptr<MemoryBuffer> codegenModule(Module &TheModule,
   {
     raw_svector_ostream OS(OutputBuffer);
     legacy::PassManager PM;
+
+    // If the bitcode files contain ARC code and were compiled with optimization,
+    // the ObjCARCContractPass must be run, so do it unconditionally here.
+    PM.add(createObjCARCContractPass());
+
+    // Setup the codegen now.
     if (TM.addPassesToEmitFile(PM, OS, TargetMachine::CGFT_ObjectFile,
                                /* DisableVerify */ true))
       report_fatal_error("Failed to setup codegen");