|
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