|
31 | 31 | #include "llvm/Transforms/IPO/PassManagerBuilder.h" |
32 | 32 | #include "llvm/Transforms/IPO/AlwaysInliner.h" |
33 | 33 | #include "llvm/Transforms/IPO/FunctionImport.h" |
| 34 | +#if LLVM_VERSION_GE(15, 0) |
| 35 | +#include "llvm/Transforms/IPO/ThinLTOBitcodeWriter.h" |
| 36 | +#endif |
34 | 37 | #include "llvm/Transforms/Utils/AddDiscriminators.h" |
35 | 38 | #include "llvm/Transforms/Utils/FunctionImportUtils.h" |
36 | 39 | #include "llvm/LTO/LTO.h" |
@@ -1587,13 +1590,31 @@ LLVMRustThinLTOBufferCreate(LLVMModuleRef M, bool is_thin) { |
1587 | 1590 | { |
1588 | 1591 | raw_string_ostream OS(Ret->data); |
1589 | 1592 | { |
1590 | | - legacy::PassManager PM; |
1591 | 1593 | if (is_thin) { |
| 1594 | +#if LLVM_VERSION_LT(15, 0) |
| 1595 | + legacy::PassManager PM; |
1592 | 1596 | PM.add(createWriteThinLTOBitcodePass(OS)); |
| 1597 | + PM.run(*unwrap(M)); |
| 1598 | +#else |
| 1599 | + PassBuilder PB; |
| 1600 | + LoopAnalysisManager LAM; |
| 1601 | + FunctionAnalysisManager FAM; |
| 1602 | + CGSCCAnalysisManager CGAM; |
| 1603 | + ModuleAnalysisManager MAM; |
| 1604 | + PB.registerModuleAnalyses(MAM); |
| 1605 | + PB.registerCGSCCAnalyses(CGAM); |
| 1606 | + PB.registerFunctionAnalyses(FAM); |
| 1607 | + PB.registerLoopAnalyses(LAM); |
| 1608 | + PB.crossRegisterProxies(LAM, FAM, CGAM, MAM); |
| 1609 | + ModulePassManager MPM; |
| 1610 | + MPM.addPass(ThinLTOBitcodeWriterPass(OS, nullptr)); |
| 1611 | + MPM.run(*unwrap(M), MAM); |
| 1612 | +#endif |
1593 | 1613 | } else { |
| 1614 | + legacy::PassManager PM; |
1594 | 1615 | PM.add(createBitcodeWriterPass(OS)); |
| 1616 | + PM.run(*unwrap(M)); |
1595 | 1617 | } |
1596 | | - PM.run(*unwrap(M)); |
1597 | 1618 | } |
1598 | 1619 | } |
1599 | 1620 | return Ret.release(); |
|
0 commit comments