#include "llvm/Transforms/IPO/PassManagerBuilder.h"
#include "llvm/Transforms/IPO/AlwaysInliner.h"
#include "llvm/Transforms/IPO/FunctionImport.h"
+#if LLVM_VERSION_GE(15, 0)
+#include "llvm/Transforms/IPO/ThinLTOBitcodeWriter.h"
+#endif
#include "llvm/Transforms/Utils/AddDiscriminators.h"
#include "llvm/Transforms/Utils/FunctionImportUtils.h"
#include "llvm/LTO/LTO.h"
{
raw_string_ostream OS(Ret->data);
{
- legacy::PassManager PM;
if (is_thin) {
+#if LLVM_VERSION_LT(15, 0)
+ legacy::PassManager PM;
PM.add(createWriteThinLTOBitcodePass(OS));
+ PM.run(*unwrap(M));
+#else
+ PassBuilder PB;
+ LoopAnalysisManager LAM;
+ FunctionAnalysisManager FAM;
+ CGSCCAnalysisManager CGAM;
+ ModuleAnalysisManager MAM;
+ PB.registerModuleAnalyses(MAM);
+ PB.registerCGSCCAnalyses(CGAM);
+ PB.registerFunctionAnalyses(FAM);
+ PB.registerLoopAnalyses(LAM);
+ PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
+ ModulePassManager MPM;
+ MPM.addPass(ThinLTOBitcodeWriterPass(OS, nullptr));
+ MPM.run(*unwrap(M), MAM);
+#endif
} else {
+ legacy::PassManager PM;
PM.add(createBitcodeWriterPass(OS));
+ PM.run(*unwrap(M));
}
- PM.run(*unwrap(M));
}
}
return Ret.release();