@@ -1023,10 +1023,6 @@ void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) {
10231023 // except for ld64 targets.
10241024 bool emitSummary = (opts.PrepareForThinLTO || opts.PrepareForFullLTO ) &&
10251025 (triple.getVendor () != llvm::Triple::Apple);
1026-
1027- if (emitSummary && !opts.PrepareForThinLTO )
1028- llvmModule->addModuleFlag (llvm::Module::Error, " ThinLTO" , uint32_t (0 ));
1029-
10301026 if (opts.PrepareForFatLTO )
10311027 mpm = pb.buildFatLTODefaultPipeline (level, opts.PrepareForThinLTO ,
10321028 emitSummary);
@@ -1037,12 +1033,27 @@ void CodeGenAction::runOptimizationPipeline(llvm::raw_pwrite_stream &os) {
10371033 else
10381034 mpm = pb.buildPerModuleDefaultPipeline (level);
10391035
1040- if (action == BackendActionTy::Backend_EmitBC)
1041- mpm.addPass (llvm::BitcodeWriterPass (
1042- os, /* ShouldPreserveUseListOrder=*/ false , emitSummary));
1043- else if (action == BackendActionTy::Backend_EmitLL)
1044- mpm.addPass (llvm::PrintModulePass (
1045- os, /* Banner=*/ " " , /* ShouldPreserveUseListOrder=*/ false , emitSummary));
1036+ if (action == BackendActionTy::Backend_EmitBC ||
1037+ action == BackendActionTy::Backend_EmitLL || opts.PrepareForFatLTO ) {
1038+ if (opts.PrepareForThinLTO ) {
1039+ // TODO: ThinLTO module summary support is yet to be enabled.
1040+ if (action == BackendActionTy::Backend_EmitBC)
1041+ mpm.addPass (llvm::BitcodeWriterPass (os));
1042+ else if (action == BackendActionTy::Backend_EmitLL)
1043+ mpm.addPass (llvm::PrintModulePass (os));
1044+ } else {
1045+ if (emitSummary && !llvmModule->getModuleFlag (" ThinLTO" ))
1046+ llvmModule->addModuleFlag (llvm::Module::Error, " ThinLTO" ,
1047+ uint32_t (0 ));
1048+ if (action == BackendActionTy::Backend_EmitBC)
1049+ mpm.addPass (llvm::BitcodeWriterPass (
1050+ os, /* ShouldPreserveUseListOrder=*/ false , emitSummary));
1051+ else if (action == BackendActionTy::Backend_EmitLL)
1052+ mpm.addPass (llvm::PrintModulePass (os, /* Banner=*/ " " ,
1053+ /* ShouldPreserveUseListOrder=*/ false ,
1054+ emitSummary));
1055+ }
1056+ }
10461057
10471058 // FIXME: This should eventually be replaced by a first-class driver option.
10481059 // This should be done for both flang and clang simultaneously.
0 commit comments